Adopt shell permission only to set and unset time limit.

We don't want this permission to "help" Launcher with calling other
APIs.

Bug: 130914022
Change-Id: I649dede958aa6e4a67ccf332151a15cad53b0e9f
This commit is contained in:
vadimt 2019-04-22 11:32:43 -07:00
parent 8b0cb4113f
commit b647866cd0
1 changed files with 18 additions and 7 deletions

View File

@ -31,14 +31,14 @@ public class DigitalWellBeingToastTest extends AbstractQuickStepTest {
mTargetContext.getSystemService(UsageStatsManager.class);
final int observerId = 0;
getInstrumentation().getUiAutomation().adoptShellPermissionIdentity();
try {
final String[] packages = new String[]{CALCULATOR_PACKAGE};
// Set time limit for app.
usageStatsManager.registerAppUsageLimitObserver(observerId, packages,
Duration.ofSeconds(600), Duration.ofSeconds(300),
PendingIntent.getActivity(mTargetContext, -1, new Intent(), 0));
runWithShellPermission(() ->
usageStatsManager.registerAppUsageLimitObserver(observerId, packages,
Duration.ofSeconds(600), Duration.ofSeconds(300),
PendingIntent.getActivity(mTargetContext, -1, new Intent(), 0)));
mLauncher.pressHome();
final DigitalWellBeingToast toast = getToast();
@ -47,13 +47,14 @@ public class DigitalWellBeingToastTest extends AbstractQuickStepTest {
assertEquals("Toast text: ", "5 minutes left today", toast.getTextView().getText());
// Unset time limit for app.
usageStatsManager.unregisterAppUsageLimitObserver(observerId);
runWithShellPermission(
() -> usageStatsManager.unregisterAppUsageLimitObserver(observerId));
mLauncher.pressHome();
assertFalse("Toast is visible", getToast().isShown());
} finally {
usageStatsManager.unregisterAppUsageLimitObserver(observerId);
getInstrumentation().getUiAutomation().dropShellPermissionIdentity();
runWithShellPermission(
() -> usageStatsManager.unregisterAppUsageLimitObserver(observerId));
}
}
@ -73,4 +74,14 @@ public class DigitalWellBeingToastTest extends AbstractQuickStepTest {
private TaskView getLatestTask(Launcher launcher) {
return launcher.<RecentsView>getOverviewPanel().getTaskViewAt(0);
}
private void runWithShellPermission(Runnable action) {
getInstrumentation().getUiAutomation().adoptShellPermissionIdentity();
try {
action.run();
} finally {
getInstrumentation().getUiAutomation().dropShellPermissionIdentity();
}
}
}