Loading src/com/android/settings/deviceinfo/StorageSettings.java +70 −57 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; import android.os.storage.VolumeRecord; import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.text.TextUtils; Loading Loading @@ -71,6 +72,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index private static final String TAG_VOLUME_UNMOUNTED = "volume_unmounted"; private static final String TAG_DISK_INIT = "disk_init"; private static final int METRICS_CATEGORY = MetricsEvent.DEVICEINFO_STORAGE; static final int COLOR_PUBLIC = Color.parseColor("#ff9e9e9e"); Loading @@ -94,7 +96,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index @Override public int getMetricsCategory() { return MetricsEvent.DEVICEINFO_STORAGE; return METRICS_CATEGORY; } @Override Loading Loading @@ -301,20 +303,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index return true; } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) { if (vol.isMountedReadable()) { startActivity(vol.buildBrowseIntent()); return true; } else { final Bundle args = new Bundle(); args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId()); new SubSettingLauncher(getContext()) .setDestination(PublicVolumeSettings.class.getCanonicalName()) .setTitle(-1) .setSourceMetricsCategory(getMetricsCategory()) .setArguments(args) .launch(); return true; } return handlePublicVolumeClick(getContext(), vol); } } else if (key.startsWith("disk:")) { Loading @@ -338,6 +327,25 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index return false; } @VisibleForTesting static boolean handlePublicVolumeClick(Context context, VolumeInfo vol) { final Intent intent = vol.buildBrowseIntent(); if (vol.isMountedReadable() && intent != null) { context.startActivity(intent); return true; } else { final Bundle args = new Bundle(); args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId()); new SubSettingLauncher(context) .setDestination(PublicVolumeSettings.class.getCanonicalName()) .setTitle(-1) .setSourceMetricsCategory(METRICS_CATEGORY) .setArguments(args) .launch(); return true; } } public static class MountTask extends AsyncTask<Void, Void, Exception> { private final Context mContext; private final StorageManager mStorageManager; Loading Loading @@ -441,7 +449,8 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index builder.setPositiveButton(R.string.storage_menu_mount, new DialogInterface.OnClickListener() { /** * Check if an {@link RestrictedLockUtils#sendShowAdminSupportDetailsIntent admin * Check if an {@link * RestrictedLockUtils#sendShowAdminSupportDetailsIntent admin * details intent} should be shown for the restriction and show it. * * @param restriction The restriction to check Loading @@ -450,10 +459,12 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index private boolean wasAdminSupportIntentShown(@NonNull String restriction) { EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( getActivity(), restriction, UserHandle.myUserId()); boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( getActivity(), restriction, UserHandle.myUserId()); if (admin != null && !hasBaseUserRestriction) { RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin); RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin); return true; } Loading @@ -462,12 +473,14 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index @Override public void onClick(DialogInterface dialog, int which) { if (wasAdminSupportIntentShown(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA)) { if (wasAdminSupportIntentShown( UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA)) { return; } if (vol.disk != null && vol.disk.isUsb() && wasAdminSupportIntentShown(UserManager.DISALLOW_USB_FILE_TRANSFER)) { wasAdminSupportIntentShown( UserManager.DISALLOW_USB_FILE_TRANSFER)) { return; } Loading tests/robotests/src/com/android/settings/deviceinfo/StorageSettingsTest.java +18 −5 Original line number Diff line number Diff line Loading @@ -16,14 +16,17 @@ package com.android.settings.deviceinfo; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.usage.StorageStatsManager; import android.content.Intent; import android.icu.text.NumberFormat; import android.os.storage.VolumeInfo; import android.text.format.Formatter; Loading Loading @@ -89,4 +92,14 @@ public class StorageSettingsTest { RuntimeEnvironment.application.getString( R.string.storage_summary, percentage, freeSpace)); } @Test public void handlePublicVolumeClick_startsANonNullActivityWhenVolumeHasNoBrowse() { VolumeInfo volumeInfo = mock(VolumeInfo.class, RETURNS_DEEP_STUBS); when(volumeInfo.isMountedReadable()).thenReturn(true); StorageSettings.handlePublicVolumeClick(mActivity, volumeInfo); verify(mActivity, never()).startActivity(null); verify(mActivity).startActivity(any(Intent.class)); } } Loading
src/com/android/settings/deviceinfo/StorageSettings.java +70 −57 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; import android.os.storage.VolumeRecord; import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.text.TextUtils; Loading Loading @@ -71,6 +72,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index private static final String TAG_VOLUME_UNMOUNTED = "volume_unmounted"; private static final String TAG_DISK_INIT = "disk_init"; private static final int METRICS_CATEGORY = MetricsEvent.DEVICEINFO_STORAGE; static final int COLOR_PUBLIC = Color.parseColor("#ff9e9e9e"); Loading @@ -94,7 +96,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index @Override public int getMetricsCategory() { return MetricsEvent.DEVICEINFO_STORAGE; return METRICS_CATEGORY; } @Override Loading Loading @@ -301,20 +303,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index return true; } else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) { if (vol.isMountedReadable()) { startActivity(vol.buildBrowseIntent()); return true; } else { final Bundle args = new Bundle(); args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId()); new SubSettingLauncher(getContext()) .setDestination(PublicVolumeSettings.class.getCanonicalName()) .setTitle(-1) .setSourceMetricsCategory(getMetricsCategory()) .setArguments(args) .launch(); return true; } return handlePublicVolumeClick(getContext(), vol); } } else if (key.startsWith("disk:")) { Loading @@ -338,6 +327,25 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index return false; } @VisibleForTesting static boolean handlePublicVolumeClick(Context context, VolumeInfo vol) { final Intent intent = vol.buildBrowseIntent(); if (vol.isMountedReadable() && intent != null) { context.startActivity(intent); return true; } else { final Bundle args = new Bundle(); args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId()); new SubSettingLauncher(context) .setDestination(PublicVolumeSettings.class.getCanonicalName()) .setTitle(-1) .setSourceMetricsCategory(METRICS_CATEGORY) .setArguments(args) .launch(); return true; } } public static class MountTask extends AsyncTask<Void, Void, Exception> { private final Context mContext; private final StorageManager mStorageManager; Loading Loading @@ -441,7 +449,8 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index builder.setPositiveButton(R.string.storage_menu_mount, new DialogInterface.OnClickListener() { /** * Check if an {@link RestrictedLockUtils#sendShowAdminSupportDetailsIntent admin * Check if an {@link * RestrictedLockUtils#sendShowAdminSupportDetailsIntent admin * details intent} should be shown for the restriction and show it. * * @param restriction The restriction to check Loading @@ -450,10 +459,12 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index private boolean wasAdminSupportIntentShown(@NonNull String restriction) { EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( getActivity(), restriction, UserHandle.myUserId()); boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( getActivity(), restriction, UserHandle.myUserId()); if (admin != null && !hasBaseUserRestriction) { RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin); RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), admin); return true; } Loading @@ -462,12 +473,14 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index @Override public void onClick(DialogInterface dialog, int which) { if (wasAdminSupportIntentShown(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA)) { if (wasAdminSupportIntentShown( UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA)) { return; } if (vol.disk != null && vol.disk.isUsb() && wasAdminSupportIntentShown(UserManager.DISALLOW_USB_FILE_TRANSFER)) { wasAdminSupportIntentShown( UserManager.DISALLOW_USB_FILE_TRANSFER)) { return; } Loading
tests/robotests/src/com/android/settings/deviceinfo/StorageSettingsTest.java +18 −5 Original line number Diff line number Diff line Loading @@ -16,14 +16,17 @@ package com.android.settings.deviceinfo; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.usage.StorageStatsManager; import android.content.Intent; import android.icu.text.NumberFormat; import android.os.storage.VolumeInfo; import android.text.format.Formatter; Loading Loading @@ -89,4 +92,14 @@ public class StorageSettingsTest { RuntimeEnvironment.application.getString( R.string.storage_summary, percentage, freeSpace)); } @Test public void handlePublicVolumeClick_startsANonNullActivityWhenVolumeHasNoBrowse() { VolumeInfo volumeInfo = mock(VolumeInfo.class, RETURNS_DEEP_STUBS); when(volumeInfo.isMountedReadable()).thenReturn(true); StorageSettings.handlePublicVolumeClick(mActivity, volumeInfo); verify(mActivity, never()).startActivity(null); verify(mActivity).startActivity(any(Intent.class)); } }