[Signin][Android] Use real policies in FirstRunActivitySigninAndSyncTest
After this CL, FirstRunActivitySigninAndSyncTest no longer mocks
FirstRunAppRestrictionInfo. Instead, the test now uses @Policies
annotation.
This CL also adds a check for test policies into
FirstRunAppRestrictionInfo so it can work correctly with @Policies
annotation.
Bug: None
Change-Id: I8fc4c279b670586425410b5a0127ad80e430a3d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3826282
Reviewed-by: Tanmoy Mollik <triploblastic@chromium.org>
Reviewed-by: Fabio Tirelo <ftirelo@chromium.org>
Auto-Submit: Boris Sazonov <bsazonov@chromium.org>
Commit-Queue: Fabio Tirelo <ftirelo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1034460}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunAppRestrictionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunAppRestrictionInfo.java
index 040162a..e253e15 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunAppRestrictionInfo.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunAppRestrictionInfo.java
@@ -19,6 +19,7 @@
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.TaskTraits;
+import org.chromium.components.policy.AbstractAppRestrictionsProvider;
import org.chromium.components.policy.AppRestrictionsProvider;
import org.chromium.components.policy.PolicySwitches;
@@ -144,6 +145,11 @@
return;
}
+ if (AbstractAppRestrictionsProvider.hasTestRestrictions()) {
+ onRestrictionDetected(true, startTime);
+ return;
+ }
+
Context appContext = ContextUtils.getApplicationContext();
try {
mFetchAppRestrictionAsyncTask = new AsyncTask<Boolean>() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunActivitySigninAndSyncTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunActivitySigninAndSyncTest.java
index fa61367..357d449 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunActivitySigninAndSyncTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/firstrun/FirstRunActivitySigninAndSyncTest.java
@@ -29,7 +29,6 @@
import androidx.test.filters.MediumTest;
import org.hamcrest.Matcher;
-import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
@@ -37,7 +36,6 @@
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -59,6 +57,7 @@
import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
import org.chromium.components.externalauth.ExternalAuthUtils;
+import org.chromium.components.policy.test.annotations.Policies;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
/**
@@ -89,9 +88,6 @@
@Mock
private LocaleManagerDelegate mLocalManagerDelegateMock;
- @Mock
- private FirstRunAppRestrictionInfo mFirstRunAppRestrictionInfoMock;
-
@Before
public void setUp() {
when(mLocalManagerDelegateMock.getSearchEnginePromoShowType())
@@ -103,11 +99,6 @@
ExternalAuthUtils.setInstanceForTesting(mExternalAuthUtilsMock);
}
- @After
- public void tearDown() {
- FirstRunAppRestrictionInfo.setInitializedInstanceForTest(null);
- }
-
@Test
@MediumTest
public void dismissButtonClickSkipsSyncConsentPageWhenNoAccountsAreOnDevice() {
@@ -146,10 +137,10 @@
@Test
@MediumTest
+ // ChildAccountStatusSupplier uses AppRestrictions to quickly detect non-supervised cases,
+ // adding at least one policy via AppRestrictions prevents that.
+ @Policies.Add(@Policies.Item(key = "ForceSafeSearch", string = "true"))
public void continueButtonClickShowsSyncConsentPageWithChildAccount() {
- // ChildAccountStatusSupplier uses AppRestrictions to quickly detect non-supervised cases.
- Mockito.doNothing().when(mFirstRunAppRestrictionInfoMock).getHasAppRestriction(any());
- FirstRunAppRestrictionInfo.setInitializedInstanceForTest(mFirstRunAppRestrictionInfoMock);
mAccountManagerTestRule.addAccount(CHILD_EMAIL);
launchFirstRunActivity();
ensureCurrentPageIs(SigninFirstRunFragment.class);
diff --git a/components/policy/android/java/src/org/chromium/components/policy/AbstractAppRestrictionsProvider.java b/components/policy/android/java/src/org/chromium/components/policy/AbstractAppRestrictionsProvider.java
index 059f0ad..23556b12 100644
--- a/components/policy/android/java/src/org/chromium/components/policy/AbstractAppRestrictionsProvider.java
+++ b/components/policy/android/java/src/org/chromium/components/policy/AbstractAppRestrictionsProvider.java
@@ -121,4 +121,9 @@
(policies == null ? null : policies.keySet().toArray()));
sTestRestrictions = policies;
}
+
+ /** Returns whether any restrictions were set using {@link #setTestRestrictions}. */
+ public static boolean hasTestRestrictions() {
+ return sTestRestrictions != null;
+ }
}