diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java index ce425c6eeec..00a79a03f18 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java @@ -67,7 +67,8 @@ public class PrivateVolumeOptionMenuController implements LifecycleObserver, OnC 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 1812974ece9..f51692632c2 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -416,7 +416,8 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { .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 983621c734f..a9664177acd 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 @@ public class PrivateVolumeOptionMenuControllerTest { 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 @@ public class PrivateVolumeOptionMenuControllerTest { @Test public void testMigrateDataIsNotVisibleNormally() { when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mPrimaryInfo); + when(mPrimaryInfo.isMountedWritable()).thenReturn(true); mController.onCreateOptionsMenu(mMenu, mMenuInflater); mController.onPrepareOptionsMenu(mMenu); @@ -99,6 +101,17 @@ public class PrivateVolumeOptionMenuControllerTest { verify(mMigrateMenuItem).setVisible(true); } + @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);