1 // Copyright (c) 2012 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/path_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 "base/android/scoped_java_ref.h" 11 #include "base/files/file_path.h" 12 13 #include "jni/PathUtils_jni.h" 14 15 namespace base { 16 namespace android { 17 18 bool GetDataDirectory(FilePath* result) { 19 JNIEnv* env = AttachCurrentThread(); 20 ScopedJavaLocalRef<jstring> path = 21 Java_PathUtils_getDataDirectory(env, GetApplicationContext()); 22 FilePath data_path(ConvertJavaStringToUTF8(path)); 23 *result = data_path; 24 return true; 25 } 26 27 bool GetDatabaseDirectory(FilePath* result) { 28 JNIEnv* env = AttachCurrentThread(); 29 ScopedJavaLocalRef<jstring> path = 30 Java_PathUtils_getDatabaseDirectory(env, GetApplicationContext()); 31 FilePath data_path(ConvertJavaStringToUTF8(path)); 32 *result = data_path; 33 return true; 34 } 35 36 bool GetCacheDirectory(FilePath* result) { 37 JNIEnv* env = AttachCurrentThread(); 38 ScopedJavaLocalRef<jstring> path = 39 Java_PathUtils_getCacheDirectory(env, GetApplicationContext()); 40 FilePath cache_path(ConvertJavaStringToUTF8(path)); 41 *result = cache_path; 42 return true; 43 } 44 45 bool GetThumbnailCacheDirectory(FilePath* result) { 46 JNIEnv* env = AttachCurrentThread(); 47 ScopedJavaLocalRef<jstring> path = 48 Java_PathUtils_getThumbnailCacheDirectory(env, GetApplicationContext()); 49 FilePath thumbnail_cache_path(ConvertJavaStringToUTF8(path)); 50 *result = thumbnail_cache_path; 51 return true; 52 } 53 54 bool GetDownloadsDirectory(FilePath* result) { 55 JNIEnv* env = AttachCurrentThread(); 56 ScopedJavaLocalRef<jstring> path = 57 Java_PathUtils_getDownloadsDirectory(env, GetApplicationContext()); 58 FilePath downloads_path(ConvertJavaStringToUTF8(path)); 59 *result = downloads_path; 60 return true; 61 } 62 63 bool GetNativeLibraryDirectory(FilePath* result) { 64 JNIEnv* env = AttachCurrentThread(); 65 ScopedJavaLocalRef<jstring> path = 66 Java_PathUtils_getNativeLibraryDirectory(env, GetApplicationContext()); 67 FilePath library_path(ConvertJavaStringToUTF8(path)); 68 *result = library_path; 69 return true; 70 } 71 72 bool GetExternalStorageDirectory(FilePath* result) { 73 JNIEnv* env = AttachCurrentThread(); 74 ScopedJavaLocalRef<jstring> path = 75 Java_PathUtils_getExternalStorageDirectory(env); 76 FilePath storage_path(ConvertJavaStringToUTF8(path)); 77 *result = storage_path; 78 return true; 79 } 80 81 bool RegisterPathUtils(JNIEnv* env) { 82 return RegisterNativesImpl(env); 83 } 84 85 } // namespace android 86 } // namespace base 87