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