Fix "Permission denied" problem due to permission update slow
This is flaky test. After starting a secondary user and installing MEDIA_FULL.apk in the secondary user, the user initialization may cause slow permission update. So make sure user initialization is complete before updating permission.
Bug:153699381
BUG: 158587595
Test: run cts -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.ExternalStorageHostTest#testMediaSandboxed28
Signed-off-by: qianyou <qianyou@xiaomi.com>
Change-Id: If682df221aa8253b244e779d74c1b8aaca82da04
(cherry picked from commit c3966c75e5f03c3085ae6bd5997781acf9e0cdce)
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
index a08a515..2a087dc 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
@@ -488,6 +488,8 @@
private void doMediaSandboxed(Config config, boolean sandboxed) throws Exception {
installPackage(config.apk);
installPackage(MEDIA_29.apk);
+ // Make sure user initialization is complete before updating permission
+ waitForBroadcastIdle();
for (int user : mUsers) {
updatePermissions(config.pkg, user, new String[] {
PERM_READ_EXTERNAL_STORAGE,
@@ -749,6 +751,11 @@
}
}
+ /** Wait until all broadcast queues are idle. */
+ private void waitForBroadcastIdle() throws Exception{
+ getDevice().executeShellCommand("am wait-for-broadcast-idle");
+ }
+
private void updateAppOp(String packageName, int userId, String appOp, boolean allow)
throws Exception {
updateAppOp(packageName, false, userId, appOp, allow);