Verify display features when embedding a different package
Bug: 236295340
Test: ActivityEmbeddingIntegrationTests#testDisplayFeaturesWithEmbedding_differentPackage
Change-Id: I0a752b7f3a0e56c583681dec52a5c0752a6d3e1c
diff --git a/tests/framework/base/windowmanager/jetpack/SignedApp/src/android/server/wm/jetpack/signed/SignedEmbeddingActivity.java b/tests/framework/base/windowmanager/jetpack/SignedApp/src/android/server/wm/jetpack/signed/SignedEmbeddingActivity.java
index b332543..4188d43 100644
--- a/tests/framework/base/windowmanager/jetpack/SignedApp/src/android/server/wm/jetpack/signed/SignedEmbeddingActivity.java
+++ b/tests/framework/base/windowmanager/jetpack/SignedApp/src/android/server/wm/jetpack/signed/SignedEmbeddingActivity.java
@@ -18,11 +18,11 @@
import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.DEFAULT_SPLIT_RATIO;
import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.EMBEDDED_ACTIVITY_ID;
-import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.createWildcardSplitPairRule;
import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.startActivityCrossUidInSplit;
import static android.server.wm.jetpack.utils.ExtensionUtil.assumeExtensionSupportedDevice;
import static android.server.wm.jetpack.utils.ExtensionUtil.getWindowExtensions;
import static android.server.wm.jetpack.utils.WindowManagerJetpackTestBase.EXTRA_EMBED_ACTIVITY;
+import static android.server.wm.jetpack.utils.WindowManagerJetpackTestBase.EXTRA_SPLIT_RATIO;
import static org.junit.Assume.assumeNotNull;
@@ -89,8 +89,9 @@
activityActivityPair -> true /* activityActivityPredicate */,
activityIntentPair -> true /* activityIntentPredicate */,
parentWindowMetrics -> true /* parentWindowMetricsPredicate */)
- .setSplitRatio(DEFAULT_SPLIT_RATIO).build();
- embeddingComponent.setEmbeddingRules(Collections.singleton(createWildcardSplitPairRule()));
+ .setSplitRatio(getIntent().getFloatExtra(EXTRA_SPLIT_RATIO, DEFAULT_SPLIT_RATIO))
+ .build();
+ embeddingComponent.setEmbeddingRules(Collections.singleton(splitPairRule));
// Launch an activity from a different UID that recognizes this package's signature and
// verify that it is split with this activity.
diff --git a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ActivityEmbeddingIntegrationTests.java b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ActivityEmbeddingIntegrationTests.java
index 84cb036..b2448b7 100644
--- a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ActivityEmbeddingIntegrationTests.java
+++ b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ActivityEmbeddingIntegrationTests.java
@@ -16,17 +16,22 @@
package android.server.wm.jetpack;
+import static android.server.wm.jetpack.signed.Components.SIGNED_EMBEDDING_ACTIVITY;
+import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.EMBEDDED_ACTIVITY_ID;
import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.startActivityAndVerifySplit;
+import static android.server.wm.jetpack.utils.ActivityEmbeddingUtil.waitAndAssertResumed;
import static android.server.wm.jetpack.utils.ExtensionUtil.assumeExtensionSupportedDevice;
import static android.server.wm.jetpack.utils.ExtensionUtil.assumeHasDisplayFeatures;
import static android.server.wm.jetpack.utils.ExtensionUtil.getExtensionWindowLayoutComponent;
import static android.server.wm.jetpack.utils.ExtensionUtil.getExtensionWindowLayoutInfo;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeNotNull;
import android.app.Activity;
+import android.os.Bundle;
import android.platform.test.annotations.Presubmit;
import android.server.wm.jetpack.utils.TestActivityWithId;
import android.server.wm.jetpack.utils.TestConfigChangeHandlingActivity;
@@ -109,4 +114,36 @@
assertEquals(windowLayoutInfo.getDisplayFeatures().size(),
newWindowLayoutInfo.getDisplayFeatures().size());
}
+
+ /**
+ * Tests that display features are still reported when using ActivityEmbedding. Same as above,
+ * but using different packages for the host and embedded activities.
+ * Fixed in CL: If2dbc337c4b8cb909914cc28ae4db28a82ff9de3
+ */
+ @Test
+ public void testDisplayFeaturesWithEmbedding_differentPackage() throws Exception {
+ // Start an activity to collect the window layout info.
+ TestConfigChangeHandlingActivity initialActivity = (TestConfigChangeHandlingActivity)
+ startActivityNewTask(TestConfigChangeHandlingActivity.class);
+ WindowLayoutInfo windowLayoutInfo = getExtensionWindowLayoutInfo(initialActivity);
+ assumeHasDisplayFeatures(windowLayoutInfo);
+
+ // Start an activity that will attempt to embed TestActivityKnownEmbeddingCerts. It will be
+ // put in a new task, since it has a different affinity.
+ Bundle extras = new Bundle();
+ extras.putBoolean(EXTRA_EMBED_ACTIVITY, true);
+ extras.putFloat(EXTRA_SPLIT_RATIO, 0.1f);
+ startActivityNoWait(mContext, SIGNED_EMBEDDING_ACTIVITY, extras);
+
+ waitAndAssertResumed(EMBEDDED_ACTIVITY_ID);
+ TestActivityWithId secondaryActivity = getResumedActivityById(EMBEDDED_ACTIVITY_ID);
+ assertNotNull(secondaryActivity);
+ assertTrue(mActivityEmbeddingComponent.isActivityEmbedded(secondaryActivity));
+
+ // Verify that an embedded activity from a different package observes the same number of
+ // features as the initial one.
+ WindowLayoutInfo newWindowLayoutInfo = getExtensionWindowLayoutInfo(secondaryActivity);
+ assertEquals(windowLayoutInfo.getDisplayFeatures().size(),
+ newWindowLayoutInfo.getDisplayFeatures().size());
+ }
}
diff --git a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/WindowManagerJetpackTestBase.java b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/WindowManagerJetpackTestBase.java
index 2c8c843..dd9c168 100644
--- a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/WindowManagerJetpackTestBase.java
+++ b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/WindowManagerJetpackTestBase.java
@@ -59,6 +59,7 @@
public static final String ACTIVITY_ID_LABEL = "ActivityID";
public static final String EXTRA_EMBED_ACTIVITY = "EmbedActivity";
+ public static final String EXTRA_SPLIT_RATIO = "SplitRatio";
public Instrumentation mInstrumentation;
public Context mContext;