Commit 9489bb64 authored by Wenyu Fu's avatar Wenyu Fu Committed by Commit Bot

Expand test coverage for FRE

1. When CCT policy is set and Browser App FRE working as before;
2. When skip FRE shared pref set, FRE is not skipped with policy;
3. Variaties of test causes in *EnterpriseSupportTest, and histogram
for all the testcases.

Bug: 1120851
Change-Id: I766c66ca06dc5c90331c59e7f4392f5ab6d34d3d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2422687
Commit-Queue: Wenyu Fu <wenyufu@chromium.org>
Reviewed-by: default avatarSky Malice <skym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#810387}
parent 85c27979
...@@ -69,7 +69,7 @@ public class FirstRunIntegrationTest { ...@@ -69,7 +69,7 @@ public class FirstRunIntegrationTest {
@Mock @Mock
public FirstRunAppRestrictionInfo mMockAppRestrictionInfo; public FirstRunAppRestrictionInfo mMockAppRestrictionInfo;
@Mock @Mock
public EnterpriseInfo mEntepriseInfo; public EnterpriseInfo mEnterpriseInfo;
private final Set<Class> mSupportedActivities = private final Set<Class> mSupportedActivities =
CollectionUtil.newHashSet(ChromeLauncherActivity.class, FirstRunActivity.class, CollectionUtil.newHashSet(ChromeLauncherActivity.class, FirstRunActivity.class,
...@@ -85,6 +85,7 @@ public class FirstRunIntegrationTest { ...@@ -85,6 +85,7 @@ public class FirstRunIntegrationTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
FirstRunActivity.setObserverForTest(mTestObserver); FirstRunActivity.setObserverForTest(mTestObserver);
ToSAndUMAFirstRunFragment.setShowUmaCheckBoxForTesting(true);
mInstrumentation = InstrumentationRegistry.getInstrumentation(); mInstrumentation = InstrumentationRegistry.getInstrumentation();
mContext = mInstrumentation.getTargetContext(); mContext = mInstrumentation.getTargetContext();
...@@ -98,6 +99,7 @@ public class FirstRunIntegrationTest { ...@@ -98,6 +99,7 @@ public class FirstRunIntegrationTest {
@After @After
public void tearDown() { public void tearDown() {
FirstRunAppRestrictionInfo.setInitializedInstanceForTest(null); FirstRunAppRestrictionInfo.setInitializedInstanceForTest(null);
ToSAndUMAFirstRunFragment.setShowUmaCheckBoxForTesting(false);
EnterpriseInfo.setInstanceForTest(null); EnterpriseInfo.setInstanceForTest(null);
if (mLastActivity != null) mLastActivity.finish(); if (mLastActivity != null) mLastActivity.finish();
} }
...@@ -133,9 +135,17 @@ public class FirstRunIntegrationTest { ...@@ -133,9 +135,17 @@ public class FirstRunIntegrationTest {
callback.onResult(new EnterpriseInfo.OwnedState(true, false)); callback.onResult(new EnterpriseInfo.OwnedState(true, false));
return null; return null;
}) })
.when(mEntepriseInfo) .when(mEnterpriseInfo)
.getDeviceEnterpriseInfo(any()); .getDeviceEnterpriseInfo(any());
EnterpriseInfo.setInstanceForTest(mEntepriseInfo); EnterpriseInfo.setInstanceForTest(mEnterpriseInfo);
}
private void setCctTosDialogEnabledPolicy(boolean enabled) {
setHasAppRestrictionForMock();
Bundle restrictions = new Bundle();
restrictions.putBoolean("CCTToSDialogEnabled", enabled);
AbstractAppRestrictionsProvider.setTestRestrictions(restrictions);
setDeviceOwnedForMock();
} }
@Test @Test
...@@ -191,6 +201,14 @@ public class FirstRunIntegrationTest { ...@@ -191,6 +201,14 @@ public class FirstRunIntegrationTest {
runSearchEnginePromptTest(LocaleManager.SearchEnginePromoType.SHOW_EXISTING); runSearchEnginePromptTest(LocaleManager.SearchEnginePromoType.SHOW_EXISTING);
} }
@Test
@MediumTest
public void testDefaultSearchEngine_WithCctPolicy() throws Exception {
setCctTosDialogEnabledPolicy(false);
runSearchEnginePromptTest(LocaleManager.SearchEnginePromoType.SHOW_EXISTING);
}
private void runSearchEnginePromptTest(@SearchEnginePromoType final int searchPromoType) private void runSearchEnginePromptTest(@SearchEnginePromoType final int searchPromoType)
throws Exception { throws Exception {
// Force the LocaleManager into a specific state. // Force the LocaleManager into a specific state.
...@@ -269,11 +287,7 @@ public class FirstRunIntegrationTest { ...@@ -269,11 +287,7 @@ public class FirstRunIntegrationTest {
@Test @Test
@MediumTest @MediumTest
public void testExitFirstRunWithPolicy() { public void testExitFirstRunWithPolicy() {
setHasAppRestrictionForMock(); setCctTosDialogEnabledPolicy(false);
Bundle restrictions = new Bundle();
restrictions.putBoolean("CCTToSDialogEnabled", false);
AbstractAppRestrictionsProvider.setTestRestrictions(restrictions);
setDeviceOwnedForMock();
Intent intent = Intent intent =
CustomTabsTestUtils.createMinimalCustomTabIntent(mContext, "https://test.com"); CustomTabsTestUtils.createMinimalCustomTabIntent(mContext, "https://test.com");
...@@ -287,9 +301,34 @@ public class FirstRunIntegrationTest { ...@@ -287,9 +301,34 @@ public class FirstRunIntegrationTest {
"native never initialized."); "native never initialized.");
waitForActivity(CustomTabActivity.class); waitForActivity(CustomTabActivity.class);
Assert.assertFalse("Usage and crash reporting pref was set to true after skip", Assert.assertFalse("Usage and crash reporting pref was set to true after skip",
PrivacyPreferencesManager.getInstance().isUsageAndCrashReportingPermittedByUser()); PrivacyPreferencesManager.getInstance().isUsageAndCrashReportingPermittedByUser());
Assert.assertTrue(
"FRE should be skipped for CCT.", FirstRunStatus.isEphemeralSkipFirstRun());
}
@Test
@MediumTest
// TODO(https://crbug.com/1111490): Change this test case when policy can handle cases when ToS
// is accepted in Browser App.
public void testSkipTosPage_WithCctPolicy() throws Exception {
setCctTosDialogEnabledPolicy(false);
FirstRunStatus.setSkipWelcomePage(true);
Intent intent =
CustomTabsTestUtils.createMinimalCustomTabIntent(mContext, "https://test.com");
mContext.startActivity(intent);
FirstRunActivity freActivity = waitForActivity(FirstRunActivity.class);
CriteriaHelper.pollUiThread(
() -> freActivity.getSupportFragmentManager().getFragments().size() > 0);
// A page skip should happen, while we are still staying at FRE.
mTestObserver.jumpToPageCallback.waitForCallback("Welcome page should be skipped.", 0);
Assert.assertFalse(
"FRE should not be skipped for CCT.", FirstRunStatus.isEphemeralSkipFirstRun());
Assert.assertFalse(
"FreActivity should still be alive.", freActivity.isActivityFinishingOrDestroyed());
} }
@Test @Test
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment