• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
ContentUriExists(const FilePath & content_uri)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 
OpenContentUriForRead(const FilePath & content_uri)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 
GetContentUriMimeType(const FilePath & content_uri)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