Better public volumes handling on secondary users.

Public volumes are only mounted for a single user at a time, so only
show notifications and launch Intents for the relevant user.

Test: RunSettingsRobotest
Bug: 73642796
Change-Id: Ic386ec03598ab8968b75320be7844b6ac7f1387b
This commit is contained in:
Daniel Nishi
2018-03-28 15:31:17 -07:00
parent 00a2dcb8f9
commit 3c6627d894
2 changed files with 87 additions and 61 deletions

View File

@@ -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;
@@ -71,14 +74,14 @@ public class StorageSettingsTest {
when(volumeInfo.isMountedReadable()).thenReturn(true);
when(volumeInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
when(mStorageManagerVolumeProvider
.getTotalBytes(nullable(StorageStatsManager.class), nullable(VolumeInfo.class)))
.thenReturn(500L);
.getTotalBytes(nullable(StorageStatsManager.class), nullable(VolumeInfo.class)))
.thenReturn(500L);
when(mStorageManagerVolumeProvider
.getFreeBytes(nullable(StorageStatsManager.class), nullable(VolumeInfo.class)))
.thenReturn(0L);
.getFreeBytes(nullable(StorageStatsManager.class), nullable(VolumeInfo.class)))
.thenReturn(0L);
ReflectionHelpers
.setField(provider, "mStorageManagerVolumeProvider", mStorageManagerVolumeProvider);
.setField(provider, "mStorageManagerVolumeProvider", mStorageManagerVolumeProvider);
ReflectionHelpers.setField(provider, "mContext", RuntimeEnvironment.application);
provider.setListening(true);
@@ -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));
}
}