1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/android/path_utils.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/android/jni_android.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/android/jni_array.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/android/jni_string.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/android/scoped_java_ref.h" 11*6777b538SAndroid Build Coastguard Worker #include "base/files/file_path.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker #include "base/base_jni/PathUtils_jni.h" 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker namespace base { 16*6777b538SAndroid Build Coastguard Worker namespace android { 17*6777b538SAndroid Build Coastguard Worker GetDataDirectory(FilePath * result)18*6777b538SAndroid Build Coastguard Workerbool GetDataDirectory(FilePath* result) { 19*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 20*6777b538SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDataDirectory(env); 21*6777b538SAndroid Build Coastguard Worker FilePath data_path(ConvertJavaStringToUTF8(path)); 22*6777b538SAndroid Build Coastguard Worker *result = data_path; 23*6777b538SAndroid Build Coastguard Worker return true; 24*6777b538SAndroid Build Coastguard Worker } 25*6777b538SAndroid Build Coastguard Worker GetCacheDirectory(FilePath * result)26*6777b538SAndroid Build Coastguard Workerbool GetCacheDirectory(FilePath* result) { 27*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 28*6777b538SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> path = Java_PathUtils_getCacheDirectory(env); 29*6777b538SAndroid Build Coastguard Worker FilePath cache_path(ConvertJavaStringToUTF8(path)); 30*6777b538SAndroid Build Coastguard Worker *result = cache_path; 31*6777b538SAndroid Build Coastguard Worker return true; 32*6777b538SAndroid Build Coastguard Worker } 33*6777b538SAndroid Build Coastguard Worker GetThumbnailCacheDirectory(FilePath * result)34*6777b538SAndroid Build Coastguard Workerbool GetThumbnailCacheDirectory(FilePath* result) { 35*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 36*6777b538SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> path = 37*6777b538SAndroid Build Coastguard Worker Java_PathUtils_getThumbnailCacheDirectory(env); 38*6777b538SAndroid Build Coastguard Worker FilePath thumbnail_cache_path(ConvertJavaStringToUTF8(path)); 39*6777b538SAndroid Build Coastguard Worker *result = thumbnail_cache_path; 40*6777b538SAndroid Build Coastguard Worker return true; 41*6777b538SAndroid Build Coastguard Worker } 42*6777b538SAndroid Build Coastguard Worker GetDownloadsDirectory(FilePath * result)43*6777b538SAndroid Build Coastguard Workerbool GetDownloadsDirectory(FilePath* result) { 44*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 45*6777b538SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDownloadsDirectory(env); 46*6777b538SAndroid Build Coastguard Worker FilePath downloads_path(ConvertJavaStringToUTF8(path)); 47*6777b538SAndroid Build Coastguard Worker *result = downloads_path; 48*6777b538SAndroid Build Coastguard Worker return true; 49*6777b538SAndroid Build Coastguard Worker } 50*6777b538SAndroid Build Coastguard Worker GetAllPrivateDownloadsDirectories()51*6777b538SAndroid Build Coastguard Workerstd::vector<FilePath> GetAllPrivateDownloadsDirectories() { 52*6777b538SAndroid Build Coastguard Worker std::vector<std::string> dirs; 53*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 54*6777b538SAndroid Build Coastguard Worker auto jarray = Java_PathUtils_getAllPrivateDownloadsDirectories(env); 55*6777b538SAndroid Build Coastguard Worker base::android::AppendJavaStringArrayToStringVector(env, jarray, &dirs); 56*6777b538SAndroid Build Coastguard Worker 57*6777b538SAndroid Build Coastguard Worker std::vector<base::FilePath> file_paths; 58*6777b538SAndroid Build Coastguard Worker for (const auto& dir : dirs) 59*6777b538SAndroid Build Coastguard Worker file_paths.emplace_back(dir); 60*6777b538SAndroid Build Coastguard Worker return file_paths; 61*6777b538SAndroid Build Coastguard Worker } 62*6777b538SAndroid Build Coastguard Worker GetSecondaryStorageDownloadDirectories()63*6777b538SAndroid Build Coastguard Workerstd::vector<FilePath> GetSecondaryStorageDownloadDirectories() { 64*6777b538SAndroid Build Coastguard Worker std::vector<std::string> dirs; 65*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 66*6777b538SAndroid Build Coastguard Worker auto jarray = Java_PathUtils_getExternalDownloadVolumesNames(env); 67*6777b538SAndroid Build Coastguard Worker base::android::AppendJavaStringArrayToStringVector(env, jarray, &dirs); 68*6777b538SAndroid Build Coastguard Worker 69*6777b538SAndroid Build Coastguard Worker std::vector<base::FilePath> file_paths; 70*6777b538SAndroid Build Coastguard Worker for (const auto& dir : dirs) 71*6777b538SAndroid Build Coastguard Worker file_paths.emplace_back(dir); 72*6777b538SAndroid Build Coastguard Worker return file_paths; 73*6777b538SAndroid Build Coastguard Worker } 74*6777b538SAndroid Build Coastguard Worker GetNativeLibraryDirectory(FilePath * result)75*6777b538SAndroid Build Coastguard Workerbool GetNativeLibraryDirectory(FilePath* result) { 76*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 77*6777b538SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> path = 78*6777b538SAndroid Build Coastguard Worker Java_PathUtils_getNativeLibraryDirectory(env); 79*6777b538SAndroid Build Coastguard Worker FilePath library_path(ConvertJavaStringToUTF8(path)); 80*6777b538SAndroid Build Coastguard Worker *result = library_path; 81*6777b538SAndroid Build Coastguard Worker return true; 82*6777b538SAndroid Build Coastguard Worker } 83*6777b538SAndroid Build Coastguard Worker GetExternalStorageDirectory(FilePath * result)84*6777b538SAndroid Build Coastguard Workerbool GetExternalStorageDirectory(FilePath* result) { 85*6777b538SAndroid Build Coastguard Worker JNIEnv* env = AttachCurrentThread(); 86*6777b538SAndroid Build Coastguard Worker ScopedJavaLocalRef<jstring> path = 87*6777b538SAndroid Build Coastguard Worker Java_PathUtils_getExternalStorageDirectory(env); 88*6777b538SAndroid Build Coastguard Worker FilePath storage_path(ConvertJavaStringToUTF8(path)); 89*6777b538SAndroid Build Coastguard Worker *result = storage_path; 90*6777b538SAndroid Build Coastguard Worker return true; 91*6777b538SAndroid Build Coastguard Worker } 92*6777b538SAndroid Build Coastguard Worker 93*6777b538SAndroid Build Coastguard Worker } // namespace android 94*6777b538SAndroid Build Coastguard Worker } // namespace base 95