// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import androidx.test.filters.SmallTest;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.quality.Strictness;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Batch;
import org.chromium.build.BuildConfig;
/** Tests for {@link IntentUtils}. */
@RunWith(BaseJUnit4ClassRunner.class)
@Batch(Batch.UNIT_TESTS)
public class IntentUtilsTest {
@Mock private Context mContext;
@Rule public MockitoRule mMockitoRule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
private void assertTargetsSelf(boolean targetsSelf, Intent intent, boolean expectAssertion) {
boolean asserted = false;
try {
Assert.assertEquals(targetsSelf, IntentUtils.intentTargetsSelf(mContext, intent));
} catch (AssertionError e) {
asserted = true;
if (!expectAssertion) throw e;
}
if (BuildConfig.ENABLE_ASSERTS) Assert.assertEquals(expectAssertion, asserted);
}
@Test
@SmallTest
public void testIntentTargetsSelf() {
String packageName = "package.name";
Mockito.when(mContext.getPackageName()).thenReturn(packageName);
assertTargetsSelf(false, new Intent(), false);
assertTargetsSelf(true, new Intent(mContext, IntentUtilsTest.class), false);
Intent intent = new Intent();
intent.setComponent(new ComponentName(packageName, ""));
assertTargetsSelf(true, intent, false);
intent.setComponent(
new ComponentName("other.package", "org.chromium.base.IntentUtilsTest"));
assertTargetsSelf(false, intent, false);
intent.setPackage(packageName);
assertTargetsSelf(false, intent, true);
intent.setComponent(null);
assertTargetsSelf(true, intent, false);
intent.setPackage("other.package");
assertTargetsSelf(false, intent, false);
intent.setComponent(new ComponentName(packageName, ""));
assertTargetsSelf(false, intent, true);
intent.setPackage(null);
assertTargetsSelf(true, intent, false);
}
}