summaryrefslogtreecommitdiff
path: root/base/android/path_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/android/path_utils.cc')
-rw-r--r--base/android/path_utils.cc82
1 files changed, 82 insertions, 0 deletions
diff --git a/base/android/path_utils.cc b/base/android/path_utils.cc
new file mode 100644
index 0000000000..d1f6d43e9d
--- /dev/null
+++ b/base/android/path_utils.cc
@@ -0,0 +1,82 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/android/path_utils.h"
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_array.h"
+#include "base/android/jni_string.h"
+#include "base/android/scoped_java_ref.h"
+#include "base/files/file_path.h"
+
+#include "jni/PathUtils_jni.h"
+
+namespace base {
+namespace android {
+
+bool GetDataDirectory(FilePath* result) {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDataDirectory(env);
+ FilePath data_path(ConvertJavaStringToUTF8(path));
+ *result = data_path;
+ return true;
+}
+
+bool GetCacheDirectory(FilePath* result) {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> path = Java_PathUtils_getCacheDirectory(env);
+ FilePath cache_path(ConvertJavaStringToUTF8(path));
+ *result = cache_path;
+ return true;
+}
+
+bool GetThumbnailCacheDirectory(FilePath* result) {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> path =
+ Java_PathUtils_getThumbnailCacheDirectory(env);
+ FilePath thumbnail_cache_path(ConvertJavaStringToUTF8(path));
+ *result = thumbnail_cache_path;
+ return true;
+}
+
+bool GetDownloadsDirectory(FilePath* result) {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDownloadsDirectory(env);
+ FilePath downloads_path(ConvertJavaStringToUTF8(path));
+ *result = downloads_path;
+ return true;
+}
+
+std::vector<FilePath> GetAllPrivateDownloadsDirectories() {
+ std::vector<std::string> dirs;
+ JNIEnv* env = AttachCurrentThread();
+ auto jarray = Java_PathUtils_getAllPrivateDownloadsDirectories(env);
+ base::android::AppendJavaStringArrayToStringVector(env, jarray.obj(), &dirs);
+
+ std::vector<base::FilePath> file_paths;
+ for (const auto& dir : dirs)
+ file_paths.emplace_back(dir);
+ return file_paths;
+}
+
+bool GetNativeLibraryDirectory(FilePath* result) {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> path =
+ Java_PathUtils_getNativeLibraryDirectory(env);
+ FilePath library_path(ConvertJavaStringToUTF8(path));
+ *result = library_path;
+ return true;
+}
+
+bool GetExternalStorageDirectory(FilePath* result) {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> path =
+ Java_PathUtils_getExternalStorageDirectory(env);
+ FilePath storage_path(ConvertJavaStringToUTF8(path));
+ *result = storage_path;
+ return true;
+}
+
+} // namespace android
+} // namespace base