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
14 namespace base {
15
RegisterContentUriUtils(JNIEnv * env)16 bool RegisterContentUriUtils(JNIEnv* env) {
17 return RegisterNativesImpl(env);
18 }
19
ContentUriExists(const FilePath & content_uri)20 bool ContentUriExists(const FilePath& content_uri) {
21 JNIEnv* env = base::android::AttachCurrentThread();
22 ScopedJavaLocalRef<jstring> j_uri =
23 ConvertUTF8ToJavaString(env, content_uri.value());
24 return Java_ContentUriUtils_contentUriExists(
25 env, base::android::GetApplicationContext(), j_uri.obj());
26 }
27
OpenContentUriForRead(const FilePath & content_uri)28 File OpenContentUriForRead(const FilePath& content_uri) {
29 JNIEnv* env = base::android::AttachCurrentThread();
30 ScopedJavaLocalRef<jstring> j_uri =
31 ConvertUTF8ToJavaString(env, content_uri.value());
32 jint fd = Java_ContentUriUtils_openContentUriForRead(
33 env, base::android::GetApplicationContext(), j_uri.obj());
34 if (fd < 0)
35 return File();
36 return File(fd);
37 }
38
GetContentUriMimeType(const FilePath & content_uri)39 std::string GetContentUriMimeType(const FilePath& content_uri) {
40 JNIEnv* env = base::android::AttachCurrentThread();
41 ScopedJavaLocalRef<jstring> j_uri =
42 ConvertUTF8ToJavaString(env, content_uri.value());
43 ScopedJavaLocalRef<jstring> j_mime =
44 Java_ContentUriUtils_getMimeType(
45 env, base::android::GetApplicationContext(), j_uri.obj());
46 if (j_mime.is_null())
47 return std::string();
48
49 return base::android::ConvertJavaStringToUTF8(env, j_mime.obj());
50 }
51
52 } // namespace base
53