1 // Copyright 2017 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.base; 6 7 import android.content.ComponentName; 8 import android.content.Context; 9 import android.content.Intent; 10 11 import androidx.test.filters.SmallTest; 12 13 import org.junit.Assert; 14 import org.junit.Rule; 15 import org.junit.Test; 16 import org.junit.runner.RunWith; 17 import org.mockito.Mock; 18 import org.mockito.Mockito; 19 import org.mockito.junit.MockitoJUnit; 20 import org.mockito.junit.MockitoRule; 21 import org.mockito.quality.Strictness; 22 23 import org.chromium.base.test.BaseJUnit4ClassRunner; 24 import org.chromium.base.test.util.Batch; 25 import org.chromium.build.BuildConfig; 26 27 /** Tests for {@link IntentUtils}. */ 28 @RunWith(BaseJUnit4ClassRunner.class) 29 @Batch(Batch.UNIT_TESTS) 30 public class IntentUtilsTest { 31 @Mock private Context mContext; 32 33 @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS); 34 assertTargetsSelf(boolean targetsSelf, Intent intent, boolean expectAssertion)35 private void assertTargetsSelf(boolean targetsSelf, Intent intent, boolean expectAssertion) { 36 boolean asserted = false; 37 try { 38 Assert.assertEquals(targetsSelf, IntentUtils.intentTargetsSelf(mContext, intent)); 39 } catch (AssertionError e) { 40 asserted = true; 41 if (!expectAssertion) throw e; 42 } 43 if (BuildConfig.ENABLE_ASSERTS) Assert.assertEquals(expectAssertion, asserted); 44 } 45 46 @Test 47 @SmallTest testIntentTargetsSelf()48 public void testIntentTargetsSelf() { 49 String packageName = "package.name"; 50 Mockito.when(mContext.getPackageName()).thenReturn(packageName); 51 assertTargetsSelf(false, new Intent(), false); 52 assertTargetsSelf(true, new Intent(mContext, IntentUtilsTest.class), false); 53 54 Intent intent = new Intent(); 55 intent.setComponent(new ComponentName(packageName, "")); 56 assertTargetsSelf(true, intent, false); 57 58 intent.setComponent( 59 new ComponentName("other.package", "org.chromium.base.IntentUtilsTest")); 60 assertTargetsSelf(false, intent, false); 61 62 intent.setPackage(packageName); 63 assertTargetsSelf(false, intent, true); 64 65 intent.setComponent(null); 66 assertTargetsSelf(true, intent, false); 67 68 intent.setPackage("other.package"); 69 assertTargetsSelf(false, intent, false); 70 71 intent.setComponent(new ComponentName(packageName, "")); 72 assertTargetsSelf(false, intent, true); 73 74 intent.setPackage(null); 75 assertTargetsSelf(true, intent, false); 76 } 77 } 78