Merge "Make migrate option menu invisible when src volume is not mounted" am: 6db9f21256 am: b084c60686
am: 4036866211

Change-Id: I25f21e3c176e225db6900d3c93b6a8860e701061
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
index ce425c6..00a79a0 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
@@ -67,7 +67,8 @@
         if (migrate != null) {
             migrate.setVisible((privateVol != null)
                     && (privateVol.getType() == VolumeInfo.TYPE_PRIVATE)
-                    && !Objects.equals(mVolumeInfo, privateVol));
+                    && !Objects.equals(mVolumeInfo, privateVol)
+                    && privateVol.isMountedWritable());
         }
     }
 
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index 1812974..f516926 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -416,7 +416,8 @@
                 .getPrimaryStorageCurrentVolume();
         migrate.setVisible((privateVol != null)
                 && (privateVol.getType() == VolumeInfo.TYPE_PRIVATE)
-                && !Objects.equals(mVolume, privateVol));
+                && !Objects.equals(mVolume, privateVol)
+                && privateVol.isMountedWritable());
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java
index 983621c..a966417 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java
@@ -64,6 +64,7 @@
         MockitoAnnotations.initMocks(this);
 
         when(mVolumeInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
+        when(mVolumeInfo.isMountedWritable()).thenReturn(true);
         when(mPrimaryInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
         when(mMenu.findItem(anyInt())).thenReturn(mMigrateMenuItem);
         when(mMigrateMenuItem.getItemId()).thenReturn(100);
@@ -82,6 +83,7 @@
     @Test
     public void testMigrateDataIsNotVisibleNormally() {
         when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mPrimaryInfo);
+        when(mPrimaryInfo.isMountedWritable()).thenReturn(true);
 
         mController.onCreateOptionsMenu(mMenu, mMenuInflater);
         mController.onPrepareOptionsMenu(mMenu);
@@ -100,6 +102,17 @@
     }
 
     @Test
+    public void testMigrateDataIsNotVisibleWhenExternalVolumeIsNotMounted() {
+        when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mVolumeInfo);
+        when(mVolumeInfo.isMountedWritable()).thenReturn(false);
+
+        mController.onCreateOptionsMenu(mMenu, mMenuInflater);
+        mController.onPrepareOptionsMenu(mMenu);
+
+        verify(mMigrateMenuItem).setVisible(false);
+    }
+
+    @Test
     public void testMigrateDataGoesToMigrateWizard() {
         when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mVolumeInfo);