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
15namespace base {
16namespace android {
17
18bool GetDataDirectory(FilePath* result) {
19  JNIEnv* env = AttachCurrentThread();
20  ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDataDirectory(env);
21  FilePath data_path(ConvertJavaStringToUTF8(path));
22  *result = data_path;
23  return true;
24}
25
26bool GetDatabaseDirectory(FilePath* result) {
27  JNIEnv* env = AttachCurrentThread();
28  ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDatabaseDirectory(env);
29  FilePath data_path(ConvertJavaStringToUTF8(path));
30  *result = data_path;
31  return true;
32}
33
34bool GetCacheDirectory(FilePath* result) {
35  JNIEnv* env = AttachCurrentThread();
36  ScopedJavaLocalRef<jstring> path = Java_PathUtils_getCacheDirectory(env);
37  FilePath cache_path(ConvertJavaStringToUTF8(path));
38  *result = cache_path;
39  return true;
40}
41
42bool GetThumbnailCacheDirectory(FilePath* result) {
43  JNIEnv* env = AttachCurrentThread();
44  ScopedJavaLocalRef<jstring> path =
45      Java_PathUtils_getThumbnailCacheDirectory(env);
46  FilePath thumbnail_cache_path(ConvertJavaStringToUTF8(path));
47  *result = thumbnail_cache_path;
48  return true;
49}
50
51bool GetDownloadsDirectory(FilePath* result) {
52  JNIEnv* env = AttachCurrentThread();
53  ScopedJavaLocalRef<jstring> path = Java_PathUtils_getDownloadsDirectory(env);
54  FilePath downloads_path(ConvertJavaStringToUTF8(path));
55  *result = downloads_path;
56  return true;
57}
58
59bool GetNativeLibraryDirectory(FilePath* result) {
60  JNIEnv* env = AttachCurrentThread();
61  ScopedJavaLocalRef<jstring> path =
62      Java_PathUtils_getNativeLibraryDirectory(env);
63  FilePath library_path(ConvertJavaStringToUTF8(path));
64  *result = library_path;
65  return true;
66}
67
68bool GetExternalStorageDirectory(FilePath* result) {
69  JNIEnv* env = AttachCurrentThread();
70  ScopedJavaLocalRef<jstring> path =
71      Java_PathUtils_getExternalStorageDirectory(env);
72  FilePath storage_path(ConvertJavaStringToUTF8(path));
73  *result = storage_path;
74  return true;
75}
76
77}  // namespace android
78}  // namespace base
79