blob: 3d86177bfa072b16dfcb62489b51c4a0a0787100 [file] [log] [blame]
peter@chromium.orgf63cdf12012-03-14 20:24:04 +09001// Copyright (c) 2012 The Chromium Authors. All rights reserved.
michaelbai@google.com686190b2011-08-03 01:11:16 +09002// 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
michaelbai@google.com686190b2011-08-03 01:11:16 +09007#include "base/android/jni_android.h"
8#include "base/android/jni_string.h"
joth@chromium.orged27f3a2011-09-09 19:17:35 +09009#include "base/android/scoped_java_ref.h"
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090010#include "base/file_path.h"
michaelbai@google.com686190b2011-08-03 01:11:16 +090011
bulach@chromium.org4c248ed2012-07-20 05:02:55 +090012#include "jni/PathUtils_jni.h"
michaelbai@google.com686190b2011-08-03 01:11:16 +090013
14namespace base {
15namespace android {
16
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090017bool GetDataDirectory(FilePath* result) {
michaelbai@google.com686190b2011-08-03 01:11:16 +090018 JNIEnv* env = AttachCurrentThread();
peter@chromium.orgf63cdf12012-03-14 20:24:04 +090019 ScopedJavaLocalRef<jstring> path =
20 Java_PathUtils_getDataDirectory(env, GetApplicationContext());
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090021 FilePath data_path(ConvertJavaStringToUTF8(path));
22 *result = data_path;
23 return true;
michaelbai@google.com686190b2011-08-03 01:11:16 +090024}
25
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090026bool GetCacheDirectory(FilePath* result) {
michaelbai@google.com686190b2011-08-03 01:11:16 +090027 JNIEnv* env = AttachCurrentThread();
peter@chromium.orgf63cdf12012-03-14 20:24:04 +090028 ScopedJavaLocalRef<jstring> path =
29 Java_PathUtils_getCacheDirectory(env, GetApplicationContext());
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090030 FilePath cache_path(ConvertJavaStringToUTF8(path));
31 *result = cache_path;
32 return true;
peter@chromium.orgf63cdf12012-03-14 20:24:04 +090033}
34
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090035bool GetDownloadsDirectory(FilePath* result) {
peter@chromium.orgf63cdf12012-03-14 20:24:04 +090036 JNIEnv* env = AttachCurrentThread();
37 ScopedJavaLocalRef<jstring> path =
38 Java_PathUtils_getDownloadsDirectory(env, GetApplicationContext());
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090039 FilePath downloads_path(ConvertJavaStringToUTF8(path));
40 *result = downloads_path;
41 return true;
michaelbai@google.com686190b2011-08-03 01:11:16 +090042}
43
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090044bool GetNativeLibraryDirectory(FilePath* result) {
aurimas@chromium.org59cc7cf2012-07-03 05:04:04 +090045 JNIEnv* env = AttachCurrentThread();
46 ScopedJavaLocalRef<jstring> path =
47 Java_PathUtils_getNativeLibraryDirectory(env, GetApplicationContext());
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090048 FilePath library_path(ConvertJavaStringToUTF8(path));
49 *result = library_path;
50 return true;
aurimas@chromium.org59cc7cf2012-07-03 05:04:04 +090051}
52
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090053bool GetExternalStorageDirectory(FilePath* result) {
nileshagrawal@chromium.orga4be12c2012-08-24 19:08:27 +090054 JNIEnv* env = AttachCurrentThread();
55 ScopedJavaLocalRef<jstring> path =
56 Java_PathUtils_getExternalStorageDirectory(env);
aurimas@chromium.orge91c48c2012-10-03 07:03:33 +090057 FilePath storage_path(ConvertJavaStringToUTF8(path));
58 *result = storage_path;
59 return true;
nileshagrawal@chromium.orga4be12c2012-08-24 19:08:27 +090060}
61
michaelbai@google.com686190b2011-08-03 01:11:16 +090062bool RegisterPathUtils(JNIEnv* env) {
63 return RegisterNativesImpl(env);
64}
65
66} // namespace android
67} // namespace base