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