Merge "Use new VolumeInfo helper methods."
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index a280b2d..00fb094 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -53,10 +53,9 @@
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.util.Preconditions;
 import com.android.settings.R;
-import com.android.settings.Settings;
+import com.android.settings.Settings.StorageUseActivity;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
-import com.android.settings.Settings.StorageUseActivity;
 import com.android.settings.applications.ManageApplications;
 import com.android.settings.deviceinfo.StorageMeasurement.MeasurementDetails;
 import com.android.settings.deviceinfo.StorageMeasurement.MeasurementReceiver;
@@ -75,6 +74,7 @@
  */
 public class PrivateVolumeSettings extends SettingsPreferenceFragment {
     // TODO: disable unmount when providing over MTP/PTP
+    // TODO: warn when mounted read-only
 
     private static final String TAG_RENAME = "rename";
     private static final String TAG_CONFIRM_CLEAR_CACHE = "confirmClearCache";
@@ -129,8 +129,7 @@
         addPreferencesFromResource(R.xml.device_info_storage_volume);
 
         // Find the emulated shared storage layered above this private volume
-        mSharedVolume = mStorageManager.findVolumeById(
-                mVolume.getId().replace("private", "emulated"));
+        mSharedVolume = mStorageManager.findEmulatedForPrivate(mVolume);
 
         mMeasure = new StorageMeasurement(context, mVolume, mSharedVolume);
         mMeasure.setReceiver(mReceiver);
@@ -171,7 +170,7 @@
 
         screen.removeAll();
 
-        if (mVolume.getState() != VolumeInfo.STATE_MOUNTED) {
+        if (!mVolume.isMountedReadable()) {
             return;
         }
 
@@ -283,7 +282,7 @@
         } else {
             rename.setVisible(mVolume.getType() == VolumeInfo.TYPE_PRIVATE);
             mount.setVisible(mVolume.getState() == VolumeInfo.STATE_UNMOUNTED);
-            unmount.setVisible(mVolume.getState() == VolumeInfo.STATE_MOUNTED);
+            unmount.setVisible(mVolume.isMountedReadable());
             format.setVisible(true);
         }
 
diff --git a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
index 94a505b..e0b6843 100644
--- a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
@@ -118,7 +118,7 @@
 
         screen.removeAll();
 
-        if (mVolume.getState() == VolumeInfo.STATE_MOUNTED) {
+        if (mVolume.isMountedReadable()) {
             screen.addPreference(mGraph);
             screen.addPreference(mTotal);
             screen.addPreference(mAvailable);
@@ -139,7 +139,7 @@
         if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) {
             screen.addPreference(mMount);
         }
-        if (mVolume.getState() == VolumeInfo.STATE_MOUNTED) {
+        if (mVolume.isMountedReadable()) {
             screen.addPreference(mUnmount);
         }
         screen.addPreference(mFormat);
diff --git a/src/com/android/settings/deviceinfo/StorageMeasurement.java b/src/com/android/settings/deviceinfo/StorageMeasurement.java
index a3c4aec..b6c35e3 100644
--- a/src/com/android/settings/deviceinfo/StorageMeasurement.java
+++ b/src/com/android/settings/deviceinfo/StorageMeasurement.java
@@ -345,7 +345,7 @@
         final Message finished = mMeasurementHandler.obtainMessage(MeasurementHandler.MSG_COMPLETED,
                 details);
 
-        if (mSharedVolume != null && mSharedVolume.getState() == VolumeInfo.STATE_MOUNTED) {
+        if (mSharedVolume != null && mSharedVolume.isMountedReadable()) {
             final File basePath = mSharedVolume.getPathForUser(currentUser);
 
             // Measure media types for emulated storage, or for primary physical
diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java
index 74040ef..7a7d90d 100644
--- a/src/com/android/settings/deviceinfo/StorageSettings.java
+++ b/src/com/android/settings/deviceinfo/StorageSettings.java
@@ -186,7 +186,7 @@
             return true;
 
         } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) {
-            if (vol.getState() == VolumeInfo.STATE_MOUNTED) {
+            if (vol.isMountedReadable()) {
                 startActivity(vol.buildBrowseIntent());
                 return true;
             } else {
diff --git a/src/com/android/settings/deviceinfo/StorageVolumePreference.java b/src/com/android/settings/deviceinfo/StorageVolumePreference.java
index f127dfb..852aa39 100644
--- a/src/com/android/settings/deviceinfo/StorageVolumePreference.java
+++ b/src/com/android/settings/deviceinfo/StorageVolumePreference.java
@@ -47,14 +47,12 @@
         setKey(volume.getId());
         setTitle(mStorageManager.getBestVolumeDescription(volume));
 
-        switch (volume.getState()) {
-            case VolumeInfo.STATE_MOUNTED:
-                // TODO: move statfs() to background thread
-                final File path = volume.getPath();
-                final String free = Formatter.formatFileSize(context, path.getFreeSpace());
-                final String total = Formatter.formatFileSize(context, path.getTotalSpace());
-                setSummary(context.getString(R.string.storage_volume_summary, free, total));
-                break;
+        if (volume.isMountedReadable()) {
+            // TODO: move statfs() to background thread
+            final File path = volume.getPath();
+            final String free = Formatter.formatFileSize(context, path.getFreeSpace());
+            final String total = Formatter.formatFileSize(context, path.getTotalSpace());
+            setSummary(context.getString(R.string.storage_volume_summary, free, total));
         }
 
         // TODO: better icons
@@ -65,7 +63,7 @@
         }
 
         if (volume.getType() == VolumeInfo.TYPE_PUBLIC
-                && volume.getState() == VolumeInfo.STATE_MOUNTED) {
+                && volume.isMountedReadable()) {
             setWidgetLayoutResource(R.layout.preference_storage_action);
         }
     }