Loading tests/componentalias/AndroidManifest_service_aliases.xml +5 −5 Original line number Diff line number Diff line Loading @@ -50,31 +50,31 @@ <receiver android:name=".b.Alias00" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests/android.content.componentalias.tests.b.Target00" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_00" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_00" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias01" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub1/android.content.componentalias.tests.b.Target01" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_01" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_01" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias02" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub2/android.content.componentalias.tests.b.Target02" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_02" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_02" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias03" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub1/android.content.componentalias.tests.b.Target03" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_03" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_03" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias04" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub2/android.content.componentalias.tests.b.Target04" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_04" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_04" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> </application> Loading tests/componentalias/AndroidManifest_service_targets.xml +10 −0 Original line number Diff line number Diff line Loading @@ -28,19 +28,29 @@ <service android:name=".s.Target04" android:exported="true" android:enabled="true" > </service> <!-- Due to http://go/intents-match-intent-filters-guide, the target intent has to have an intent filter that matches the original intent. (modulo the package name) This restriction shouldn't exist in the final version. --> <receiver android:name=".b.Target00" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_00" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target01" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_01" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target02" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_02" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target03" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_03" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target04" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_04" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> </application> Loading tests/componentalias/src/android/content/componentalias/tests/ComponentAliasBroadcastTest.java +26 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); // 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); MAIN_PACKAGE + ".IS_RECEIVER_00").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 Loading Loading @@ -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; Loading @@ -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(); } }); Loading Loading
tests/componentalias/AndroidManifest_service_aliases.xml +5 −5 Original line number Diff line number Diff line Loading @@ -50,31 +50,31 @@ <receiver android:name=".b.Alias00" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests/android.content.componentalias.tests.b.Target00" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_00" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_00" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias01" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub1/android.content.componentalias.tests.b.Target01" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_01" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_01" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias02" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub2/android.content.componentalias.tests.b.Target02" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_02" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_02" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias03" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub1/android.content.componentalias.tests.b.Target03" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_03" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_03" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Alias04" android:exported="true" android:enabled="true" > <meta-data android:name="alias_target" android:value="android.content.componentalias.tests.sub2/android.content.componentalias.tests.b.Target04" /> <intent-filter><action android:name="android.intent.action.EXPERIMENTAL_IS_ALIAS" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_ALIAS_04" /></intent-filter> <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_04" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> </application> Loading
tests/componentalias/AndroidManifest_service_targets.xml +10 −0 Original line number Diff line number Diff line Loading @@ -28,19 +28,29 @@ <service android:name=".s.Target04" android:exported="true" android:enabled="true" > </service> <!-- Due to http://go/intents-match-intent-filters-guide, the target intent has to have an intent filter that matches the original intent. (modulo the package name) This restriction shouldn't exist in the final version. --> <receiver android:name=".b.Target00" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_00" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target01" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_01" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target02" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_02" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target03" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_03" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> <receiver android:name=".b.Target04" android:exported="true" android:enabled="true" > <intent-filter><action android:name="android.content.componentalias.tests.IS_RECEIVER_04" /></intent-filter> <intent-filter><action android:name="ACTION_BROADCAST" /></intent-filter> </receiver> </application> Loading
tests/componentalias/src/android/content/componentalias/tests/ComponentAliasBroadcastTest.java +26 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); // 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); MAIN_PACKAGE + ".IS_RECEIVER_00").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 Loading Loading @@ -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; Loading @@ -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(); } }); Loading