• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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