Home | History | Annotate | Download | only in android
      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