1*635a8641SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #include "base/android/content_uri_utils.h" 6*635a8641SAndroid Build Coastguard Worker 7*635a8641SAndroid Build Coastguard Worker #include "base/android/jni_android.h" 8*635a8641SAndroid Build Coastguard Worker #include "base/android/jni_string.h" 9*635a8641SAndroid Build Coastguard Worker #include "jni/ContentUriUtils_jni.h" 10*635a8641SAndroid Build Coastguard Worker 11*635a8641SAndroid Build Coastguard Worker using base::android::ConvertUTF8ToJavaString; 12*635a8641SAndroid Build Coastguard Worker using base::android::ScopedJavaLocalRef; 13*635a8641SAndroid Build Coastguard Worker 14*635a8641SAndroid Build Coastguard Worker namespace base { 15*635a8641SAndroid Build Coastguard Worker ContentUriExists(const FilePath & content_uri)16*635a8641SAndroid Build Coastguard Workerbool ContentUriExists(const FilePath& content_uri) { 17*635a8641SAndroid Build Coastguard Worker JNIEnv* env = base::android::AttachCurrentThread(); 18*635a8641SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> j_uri = 19*635a8641SAndroid Build Coastguard Worker ConvertUTF8ToJavaString(env, content_uri.value()); 20*635a8641SAndroid Build Coastguard Worker return Java_ContentUriUtils_contentUriExists(env, j_uri); 21*635a8641SAndroid Build Coastguard Worker } 22*635a8641SAndroid Build Coastguard Worker OpenContentUriForRead(const FilePath & content_uri)23*635a8641SAndroid Build Coastguard WorkerFile OpenContentUriForRead(const FilePath& content_uri) { 24*635a8641SAndroid Build Coastguard Worker JNIEnv* env = base::android::AttachCurrentThread(); 25*635a8641SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> j_uri = 26*635a8641SAndroid Build Coastguard Worker ConvertUTF8ToJavaString(env, content_uri.value()); 27*635a8641SAndroid Build Coastguard Worker jint fd = Java_ContentUriUtils_openContentUriForRead(env, j_uri); 28*635a8641SAndroid Build Coastguard Worker if (fd < 0) 29*635a8641SAndroid Build Coastguard Worker return File(); 30*635a8641SAndroid Build Coastguard Worker return File(fd); 31*635a8641SAndroid Build Coastguard Worker } 32*635a8641SAndroid Build Coastguard Worker GetContentUriMimeType(const FilePath & content_uri)33*635a8641SAndroid Build Coastguard Workerstd::string GetContentUriMimeType(const FilePath& content_uri) { 34*635a8641SAndroid Build Coastguard Worker JNIEnv* env = base::android::AttachCurrentThread(); 35*635a8641SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> j_uri = 36*635a8641SAndroid Build Coastguard Worker ConvertUTF8ToJavaString(env, content_uri.value()); 37*635a8641SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> j_mime = 38*635a8641SAndroid Build Coastguard Worker Java_ContentUriUtils_getMimeType(env, j_uri); 39*635a8641SAndroid Build Coastguard Worker if (j_mime.is_null()) 40*635a8641SAndroid Build Coastguard Worker return std::string(); 41*635a8641SAndroid Build Coastguard Worker 42*635a8641SAndroid Build Coastguard Worker return base::android::ConvertJavaStringToUTF8(env, j_mime.obj()); 43*635a8641SAndroid Build Coastguard Worker } 44*635a8641SAndroid Build Coastguard Worker 45*635a8641SAndroid Build Coastguard Worker } // namespace base 46