summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@android.com> 2012-09-19 11:22:14 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-09-19 11:22:14 -0700
commita490bddc8bf0812973dee34ead5c04c87e7ecb15 (patch)
tree8d4dd5cc60571fc9e13253b2eefc24c872e8a7fa
parent549be8beadf5ad2a56b7f4269d419753c0d61be8 (diff)
parent3fe5bf6d69f146077ce9b5e588be8651462b0cd2 (diff)
Merge changes I4513afbd,I20e2194c into jb-mr1-dev
* changes: Make getMediaStorageDirectory() user-aware. Lockdown should only augment connected networks.
-rw-r--r--core/java/android/os/Environment.java25
-rw-r--r--services/java/com/android/server/net/LockdownVpnTracker.java8
2 files changed, 24 insertions, 9 deletions
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 1607b96c0ad9..364004b2bee0 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -32,6 +32,7 @@ public class Environment {
private static final String ENV_EXTERNAL_STORAGE = "EXTERNAL_STORAGE";
private static final String ENV_EMULATED_STORAGE_TARGET = "EMULATED_STORAGE_TARGET";
+ private static final String ENV_MEDIA_STORAGE = "MEDIA_STORAGE";
/** {@hide} */
public static String DIRECTORY_ANDROID = "Android";
@@ -88,21 +89,30 @@ public class Environment {
private final File mExternalStorageAndroidData;
private final File mExternalStorageAndroidMedia;
private final File mExternalStorageAndroidObb;
+ private final File mMediaStorage;
public UserEnvironment(int userId) {
// See storage config details at http://source.android.com/tech/storage/
String rawExternalStorage = System.getenv(ENV_EXTERNAL_STORAGE);
String rawEmulatedStorageTarget = System.getenv(ENV_EMULATED_STORAGE_TARGET);
+ String rawMediaStorage = System.getenv(ENV_MEDIA_STORAGE);
+ if (TextUtils.isEmpty(rawMediaStorage)) {
+ rawMediaStorage = "/data/media";
+ }
if (!TextUtils.isEmpty(rawEmulatedStorageTarget)) {
// Device has emulated storage; external storage paths should have
// userId burned into them.
+ final String rawUserId = Integer.toString(userId);
final File emulatedBase = new File(rawEmulatedStorageTarget);
+ final File mediaBase = new File(rawMediaStorage);
// /storage/emulated/0
- mExternalStorage = buildPath(emulatedBase, Integer.toString(userId));
+ mExternalStorage = buildPath(emulatedBase, rawUserId);
// /storage/emulated/obb
mExternalStorageAndroidObb = buildPath(emulatedBase, "obb");
+ // /data/media/0
+ mMediaStorage = buildPath(mediaBase, rawUserId);
} else {
// Device has physical external storage; use plain paths.
@@ -115,6 +125,8 @@ public class Environment {
mExternalStorage = new File(rawExternalStorage);
// /storage/sdcard0/Android/obb
mExternalStorageAndroidObb = buildPath(mExternalStorage, DIRECTORY_ANDROID, "obb");
+ // /data/media
+ mMediaStorage = new File(rawMediaStorage);
}
mExternalStorageAndroidData = buildPath(mExternalStorage, DIRECTORY_ANDROID, "data");
@@ -152,6 +164,10 @@ public class Environment {
public File getExternalStorageAppCacheDirectory(String packageName) {
return new File(new File(mExternalStorageAndroidData, packageName), "cache");
}
+
+ public File getMediaStorageDirectory() {
+ return mMediaStorage;
+ }
}
/**
@@ -198,7 +214,8 @@ public class Environment {
* @hide
*/
public static File getMediaStorageDirectory() {
- return MEDIA_STORAGE_DIRECTORY;
+ throwIfSystem();
+ return sCurrentUser.getMediaStorageDirectory();
}
/**
@@ -231,10 +248,6 @@ public class Environment {
private static final File SECURE_DATA_DIRECTORY
= getDirectory("ANDROID_SECURE_DATA", "/data/secure");
- /** @hide */
- private static final File MEDIA_STORAGE_DIRECTORY
- = getDirectory("MEDIA_STORAGE", "/data/media");
-
private static final File DOWNLOAD_CACHE_DIRECTORY = getDirectory("DOWNLOAD_CACHE", "/cache");
/**
diff --git a/services/java/com/android/server/net/LockdownVpnTracker.java b/services/java/com/android/server/net/LockdownVpnTracker.java
index f2d67456c0fa..f32dd092e5d2 100644
--- a/services/java/com/android/server/net/LockdownVpnTracker.java
+++ b/services/java/com/android/server/net/LockdownVpnTracker.java
@@ -268,9 +268,11 @@ public class LockdownVpnTracker {
}
public NetworkInfo augmentNetworkInfo(NetworkInfo info) {
- final NetworkInfo vpnInfo = mVpn.getNetworkInfo();
- info = new NetworkInfo(info);
- info.setDetailedState(vpnInfo.getDetailedState(), vpnInfo.getReason(), null);
+ if (info.isConnected()) {
+ final NetworkInfo vpnInfo = mVpn.getNetworkInfo();
+ info = new NetworkInfo(info);
+ info.setDetailedState(vpnInfo.getDetailedState(), vpnInfo.getReason(), null);
+ }
return info;
}