aboutsummaryrefslogtreecommitdiff
path: root/robolectric
diff options
context:
space:
mode:
authorAlex Kershaw <alexkershaw@google.com>2020-03-26 11:13:35 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-03-26 11:13:35 +0000
commit976276eb41813abfcab90184b5988c2f364ff406 (patch)
treee56763fae17f7e781fbcf61d37dc15e3a6b7f9bb /robolectric
parentcf183823152e63dd91e379a7d486ebb6afb81b4d (diff)
parent53aefd975cc0d94ef708fb1d263060ed46f7aec4 (diff)
downloadrobolectric-shadows-976276eb41813abfcab90184b5988c2f364ff406.tar.gz
Merge "Add shadow methods for clearing cross-profile app-ops" into rvc-dev am: 53aefd975c
Change-Id: Id0187206be4bddf609a1a6aee626730429ffd5d3
Diffstat (limited to 'robolectric')
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowCrossProfileAppsTest.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowCrossProfileAppsTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowCrossProfileAppsTest.java
index 6bc47c335..cae91513a 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowCrossProfileAppsTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowCrossProfileAppsTest.java
@@ -1,15 +1,23 @@
package org.robolectric.shadows;
import static android.Manifest.permission.INTERACT_ACROSS_PROFILES;
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_DEFAULT;
import static android.os.Build.VERSION_CODES.P;
import static android.os.Build.VERSION_CODES.Q;
+import static android.os.Build.VERSION_CODES.R;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;
import static org.robolectric.Shadows.shadowOf;
import android.app.Application;
+import android.app.AppOpsManager;
import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.CrossProfileApps;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Process;
import android.os.UserHandle;
@@ -28,6 +36,7 @@ public class ShadowCrossProfileAppsTest {
private final Application application = ApplicationProvider.getApplicationContext();
private final CrossProfileApps crossProfileApps =
application.getSystemService(CrossProfileApps.class);
+ private final PackageManager packageManager = ((Context) application).getPackageManager();
private final UserHandle userHandle1 = UserHandle.of(10);
private final UserHandle userHandle2 = UserHandle.of(11);
@@ -339,6 +348,35 @@ public class ShadowCrossProfileAppsTest {
assertThat(shadowOf(crossProfileApps).peekNextStartedActivity()).isNull();
}
+ // BEGIN-INTERNAL
+ @Test
+ @Config(minSdk = R)
+ public void clearInteractAcrossProfilesAppOps_clearsAppOps() {
+ String testPackage1 = "com.example.testpackage1";
+ String testPackage2 = "com.example.testpackage2";
+ shadowOf(packageManager).installPackage(buildTestPackageInfo(testPackage1));
+ shadowOf(packageManager).installPackage(buildTestPackageInfo(testPackage2));
+ shadowOf(crossProfileApps).setInteractAcrossProfilesAppOp(testPackage1, MODE_ALLOWED);
+ shadowOf(crossProfileApps).setInteractAcrossProfilesAppOp(testPackage2, MODE_ALLOWED);
+
+ shadowOf(crossProfileApps).clearInteractAcrossProfilesAppOps();
+
+ assertThat(shadowOf(crossProfileApps).getInteractAcrossProfilesAppOp(testPackage1))
+ .isEqualTo(MODE_DEFAULT);
+ assertThat(shadowOf(crossProfileApps).getInteractAcrossProfilesAppOp(testPackage2))
+ .isEqualTo(MODE_DEFAULT);
+ }
+
+ private PackageInfo buildTestPackageInfo(String packageName) {
+ PackageInfo packageInfo = new PackageInfo();
+ packageInfo.packageName = packageName;
+ packageInfo.applicationInfo = new ApplicationInfo();
+ packageInfo.applicationInfo.packageName = packageName;
+ packageInfo.applicationInfo.name = "test";
+ return packageInfo;
+ }
+ // END-INTERNAL
+
private static void assertThrowsSecurityException(Runnable runnable) {
assertThrows(SecurityException.class, runnable);
}