Merge "Merge cherrypicks of [1791247, 1791267, 1791248] into sparse-7542236-L11900000950626321" into sparse-7542236-L11900000950626321
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/PackageDeviceInfo.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/PackageDeviceInfo.java
index 735b805..4ed65de 100644
--- a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/PackageDeviceInfo.java
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/PackageDeviceInfo.java
@@ -139,6 +139,8 @@
store.startArray(REQUESTED_PERMISSIONS);
if (pkg.requestedPermissions != null && pkg.requestedPermissions.length > 0) {
for (String permission : pkg.requestedPermissions) {
+ if (permission == null) continue;
+
try {
final PermissionInfo pi = pm.getPermissionInfo(permission, 0);
@@ -146,8 +148,6 @@
store.addResult(PERMISSION_NAME, permission);
writePermissionsDetails(pi, store);
- if (permission == null) continue;
-
final boolean isPlatformPermission = systemPermissions.contains(permission);
if (isPlatformPermission) {
final boolean isAndroidPermission = permission.startsWith(PLATFORM_PERMISSION_PREFIX);
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java b/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java
index 87dedb4..b7c4fb0 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java
@@ -292,7 +292,29 @@
int windowingMode = mWmState.getFocusedStackWindowingMode();
// In a multi-window environment the home activity might not be fully covered
assumeTrue(windowingMode == WINDOWING_MODE_FULLSCREEN);
- mWmState.waitAndAssertVisibilityGone(homeActivity);
+
+ // A WM Shell can implement a policy where there are more than one default
+ // Task Display Areas.
+ // If there are two task display areas, for example, left and right.
+ // When an activity is organized in left task display area it is still running in
+ // WINDOWING_MODE_FULLSCREEN. Having said that, home activity in default task display
+ // area is not fully covered. Thus, home activity is still resumed and visible.
+ // More than that, in the current AOSP 11 implementation, visibility and activity
+ // lifecycle work differently if activities are in the same task display area or in
+ // different task display areas.
+ // For example, if two task display areas have the exact same bounds,
+ // for the user, an activity running in the top task display area covers the activity
+ // running in the bottom task display area. However, because they are in separate
+ // display areas they will be both resumed.
+ // There can be cases where the bounds match but because tasks are in different
+ // task display area they are both resumed.
+ // So we check the activity bounds for two activities to confirm if task display
+ // areas are the same. If not the same, we will skip the visibility asserting test.
+ if (compareActivityBounds(homeActivity,
+ ComponentName.unflattenFromString(mWmState.getFocusedActivity()))) {
+ mWmState.waitAndAssertVisibilityGone(homeActivity);
+ }
+
mBroadcastActionTrigger.doAction(TEST_ACTIVITY_ACTION_FINISH_SELF);
mWmState.waitForFocusedStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_ASSISTANT);
assertAssistantStackExists();
@@ -438,4 +460,16 @@
super.set(getActivityName(assistantName));
}
}
+
+ /**
+ * Compare if bounds were the same between activities
+ */
+ private boolean compareActivityBounds(ComponentName activityName1,
+ ComponentName activityName2) {
+ if (mWmState.getTaskByActivity(activityName1).getBounds()
+ .equals(mWmState.getTaskByActivity(activityName2).getBounds())) {
+ return true;
+ }
+ return false;
+ }
}
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java b/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java
index b90f642..9782c43 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java
@@ -1018,8 +1018,10 @@
launchActivity(PIP_ACTIVITY);
waitForExitPipToFullscreen(PIP_ACTIVITY);
assertPinnedStackDoesNotExist();
- mWmState.waitForLastOrientation(ORIENTATION_LANDSCAPE);
- assertEquals(ORIENTATION_LANDSCAPE, mWmState.getLastOrientation());
+ mWmState.waitForActivityOrientation(PIP_ACTIVITY, ORIENTATION_LANDSCAPE);
+
+ final ActivityTask pipActivityTask = mWmState.getTaskByActivity(PIP_ACTIVITY);
+ assertEquals(ORIENTATION_LANDSCAPE, pipActivityTask.mOverrideConfiguration.orientation);
}
@Test