diff --git a/tests/componentalias/AndroidManifest_service_aliases.xml b/tests/componentalias/AndroidManifest_service_aliases.xml
index 8c1ced6c1d0ba..e73bb6102fbf5 100644
--- a/tests/componentalias/AndroidManifest_service_aliases.xml
+++ b/tests/componentalias/AndroidManifest_service_aliases.xml
@@ -50,31 +50,31 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/tests/componentalias/AndroidManifest_service_targets.xml b/tests/componentalias/AndroidManifest_service_targets.xml
index c4bcd782c7912..24c0432bcf4c6 100644
--- a/tests/componentalias/AndroidManifest_service_targets.xml
+++ b/tests/componentalias/AndroidManifest_service_targets.xml
@@ -28,19 +28,29 @@
+
+
+
+
+
+
diff --git a/tests/componentalias/src/android/content/componentalias/tests/ComponentAliasBroadcastTest.java b/tests/componentalias/src/android/content/componentalias/tests/ComponentAliasBroadcastTest.java
index a568313a37bb0..7d5e0b9c6d8af 100644
--- a/tests/componentalias/src/android/content/componentalias/tests/ComponentAliasBroadcastTest.java
+++ b/tests/componentalias/src/android/content/componentalias/tests/ComponentAliasBroadcastTest.java
@@ -16,18 +16,17 @@
package android.content.componentalias.tests;
import static android.content.componentalias.tests.ComponentAliasTestCommon.MAIN_PACKAGE;
+import static android.content.componentalias.tests.ComponentAliasTestCommon.SUB1_PACKAGE;
+import static android.content.componentalias.tests.ComponentAliasTestCommon.SUB2_PACKAGE;
import static android.content.componentalias.tests.ComponentAliasTestCommon.TAG;
import static com.google.common.truth.Truth.assertThat;
-import static org.hamcrest.core.Is.is;
-
import android.content.ComponentName;
import android.content.Intent;
import com.android.compatibility.common.util.BroadcastMessenger.Receiver;
-import org.junit.Assume;
import org.junit.Test;
import java.util.function.Consumer;
@@ -37,18 +36,16 @@ public class ComponentAliasBroadcastTest extends BaseComponentAliasTest {
new Combo(
new ComponentName(MAIN_PACKAGE, MAIN_PACKAGE + ".b.Alias00"),
new ComponentName(MAIN_PACKAGE, MAIN_PACKAGE + ".b.Target00"),
- MAIN_PACKAGE + ".IS_ALIAS_00").apply(callback);
+ MAIN_PACKAGE + ".IS_RECEIVER_00").apply(callback);
- // TODO: This still don't pass -- fix it. But there seems to be an issue with
- // `am instrument`, so need to fix that first...
-// new Combo(
-// new ComponentName(MAIN_PACKAGE, MAIN_PACKAGE + ".b.Alias01"),
-// new ComponentName(SUB1_PACKAGE, MAIN_PACKAGE + ".b.Target01"),
-// MAIN_PACKAGE + ".IS_ALIAS_01").apply(callback);
-// new Combo(
-// new ComponentName(MAIN_PACKAGE, MAIN_PACKAGE + ".b.Alias02"),
-// new ComponentName(SUB2_PACKAGE, MAIN_PACKAGE + ".b.Target02"),
-// MAIN_PACKAGE + ".IS_ALIAS_02").apply(callback);
+ new Combo(
+ new ComponentName(MAIN_PACKAGE, MAIN_PACKAGE + ".b.Alias01"),
+ new ComponentName(SUB1_PACKAGE, MAIN_PACKAGE + ".b.Target01"),
+ MAIN_PACKAGE + ".IS_RECEIVER_01").apply(callback);
+ new Combo(
+ new ComponentName(MAIN_PACKAGE, MAIN_PACKAGE + ".b.Alias02"),
+ new ComponentName(SUB2_PACKAGE, MAIN_PACKAGE + ".b.Target02"),
+ MAIN_PACKAGE + ".IS_RECEIVER_02").apply(callback);
}
@Test
@@ -77,9 +74,13 @@ public class ComponentAliasBroadcastTest extends BaseComponentAliasTest {
@Test
public void testBroadcast_explicitPackageName() {
- // TODO Fix it -- it should work even when called from sub-packages.
- Assume.assumeThat(sContext.getPackageName(), is(MAIN_PACKAGE));
forEachCombo((c) -> {
+ // In this test, we only set the package name to the intent.
+ // If the alias and target are the same package, the intent will be sent to both of them
+ // *and* the one to the alias is redirected to the target, so the target will receive
+ // the intent twice. This case is haled at *1 below.
+
+
Intent i = new Intent().setPackage(c.alias.getPackageName());
i.setAction(c.action);
ComponentAliasMessage m;
@@ -92,10 +93,16 @@ public class ComponentAliasBroadcastTest extends BaseComponentAliasTest {
assertThat(m.getMethodName()).isEqualTo("onReceive");
assertThat(m.getSenderIdentity()).isEqualTo(c.target.flattenToShortString());
-
- // The broadcast intent will always have the receiving component name set.
assertThat(m.getIntent().getComponent()).isEqualTo(c.target);
+ // *1 -- if the alias and target are in the same package, we expect one more
+ // message.
+ if (c.alias.getPackageName().equals(c.target.getPackageName())) {
+ m = receiver.waitForNextMessage();
+ assertThat(m.getMethodName()).isEqualTo("onReceive");
+ assertThat(m.getSenderIdentity()).isEqualTo(c.target.flattenToShortString());
+ assertThat(m.getIntent().getComponent()).isEqualTo(c.target);
+ }
receiver.ensureNoMoreMessages();
}
});