diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java index 9e4a1e2732b..df4a2180048 100644 --- a/src/com/android/settings/deviceinfo/StorageSettings.java +++ b/src/com/android/settings/deviceinfo/StorageSettings.java @@ -144,6 +144,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index switch (vol.getType()) { case VolumeInfo.TYPE_PRIVATE: case VolumeInfo.TYPE_PUBLIC: + case VolumeInfo.TYPE_STUB: return true; default: return false; @@ -176,7 +177,8 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index final int color = COLOR_PRIVATE[privateCount++ % COLOR_PRIVATE.length]; mInternalCategory.addPreference( new StorageVolumePreference(context, vol, color, volumeTotalBytes)); - } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) { + } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC + || vol.getType() == VolumeInfo.TYPE_STUB) { mExternalCategory.addPreference( new StorageVolumePreference(context, vol, COLOR_PUBLIC, 0)); } @@ -304,6 +306,8 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) { return handlePublicVolumeClick(getContext(), vol); + } else if (vol.getType() == VolumeInfo.TYPE_STUB) { + return handleStubVolumeClick(getContext(), vol); } } else if (key.startsWith("disk:")) { @@ -327,6 +331,16 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index return false; } + @VisibleForTesting + static boolean handleStubVolumeClick(Context context, VolumeInfo vol) { + final Intent intent = vol.buildBrowseIntent(); + if (vol.isMountedReadable() && intent != null) { + context.startActivity(intent); + return true; + } + return false; + } + @VisibleForTesting static boolean handlePublicVolumeClick(Context context, VolumeInfo vol) { final Intent intent = vol.buildBrowseIntent(); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/StorageSettingsTest.java b/tests/robotests/src/com/android/settings/deviceinfo/StorageSettingsTest.java index 943bd9d2630..2142e9a058a 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/StorageSettingsTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/StorageSettingsTest.java @@ -102,4 +102,16 @@ public class StorageSettingsTest { verify(mActivity, never()).startActivity(null); verify(mActivity).startActivity(any(Intent.class)); } + + @Test + public void handleStubVolumeClick_startsANonNullActivityWhenVolumeHasNoBrowse() { + VolumeInfo volumeInfo = mock(VolumeInfo.class, RETURNS_DEEP_STUBS); + when(volumeInfo.isMountedReadable()).thenReturn(true); + + StorageSettings.handleStubVolumeClick(mActivity, volumeInfo); + + verify(mActivity, never()).startActivity(null); + verify(mActivity).startActivity(any(Intent.class)); + } + }