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