From 9deece9086796e52304db5105fefefad429e336b Mon Sep 17 00:00:00 2001 From: Risan Date: Mon, 29 Oct 2018 08:59:06 +0900 Subject: [PATCH] Allow StubVolume to be browseable in Settings Test: Unit test + manual test: Mount and unmount stubvolume in ARC++, check settings show the device correctly and could browse it using DocumentsUI. Bug: 110380403 Change-Id: I96fc82e731225776ac7070ef035687f83da94245 --- .../settings/deviceinfo/StorageSettings.java | 16 +++++++++++++++- .../settings/deviceinfo/StorageSettingsTest.java | 12 ++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) 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)); + } + }