Commit 89fb3149 authored by Wenyu Fu's avatar Wenyu Fu Committed by Chromium LUCI CQ

[FirstRun] Remove delay for test when FRE is skipped.

Add test setting to avoid delay when FRE is skipped due to policy. This
change removes the 1 second waiting for 14 test cases, and could avoid
flakiness on verification for following pages/activity in other FirstRun
tests.

This CL also optimize the runnable feedback in crrev.com/c/2600042

Change-Id: I53b4e67b4cb55a76f473112570d8a7c535f8c699
Bug: 1161329
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2606186
Auto-Submit: Wenyu Fu <wenyufu@chromium.org>
Reviewed-by: default avatarSky Malice <skym@chromium.org>
Commit-Queue: Wenyu Fu <wenyufu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#839768}
parent 40125802
......@@ -26,6 +26,8 @@ public class FirstRunUtils {
private static final int DEFAULT_SKIP_TOS_EXIT_DELAY_MS = 1000;
private static final int A11Y_DELAY_FACTOR = 2;
private static boolean sDisableDelayOnExitFreForTest;
/**
* Synchronizes first run native and Java preferences.
* Must be called after native initialization.
......@@ -132,6 +134,8 @@ public class FirstRunUtils {
* @return The number of ms delay before exiting FRE with policy.
*/
public static int getSkipTosExitDelayMs() {
if (sDisableDelayOnExitFreForTest) return 0;
int durationMs = DEFAULT_SKIP_TOS_EXIT_DELAY_MS;
if (ChromeAccessibilityUtil.get().isTouchExplorationEnabled()) {
durationMs *= A11Y_DELAY_FACTOR;
......@@ -139,6 +143,11 @@ public class FirstRunUtils {
return durationMs;
}
@VisibleForTesting
public static void setDisableDelayOnExitFreForTest(boolean isDisable) {
sDisableDelayOnExitFreForTest = isDisable;
}
@NativeMethods
public interface Natives {
boolean getFirstRunEulaAccepted();
......
......@@ -77,7 +77,6 @@ public class TosAndUmaFirstRunFragmentWithEnterpriseSupport
new OneshotSupplierImpl<>();
private Handler mHandler;
private Runnable mExitFreRunnable;
/** The {@link SystemClock} timestamp when onViewCreated is called. */
private long mViewCreatedTimeMs;
......@@ -92,8 +91,9 @@ public class TosAndUmaFirstRunFragmentWithEnterpriseSupport
mSkipTosDialogPolicyListener.destroy();
mSkipTosDialogPolicyListener = null;
}
if (mHandler != null && mExitFreRunnable != null) {
mHandler.removeCallbacks(mExitFreRunnable);
if (mHandler != null) {
// Remove all callback associated.
mHandler.removeCallbacksAndMessages(null);
mHandler = null;
}
super.onDestroy();
......@@ -192,17 +192,13 @@ public class TosAndUmaFirstRunFragmentWithEnterpriseSupport
mPrivacyDisclaimer.announceForAccessibility(mPrivacyDisclaimer.getText());
}
if (sOverridenOnExitFreRunnableForTest != null) {
mExitFreRunnable = sOverridenOnExitFreRunnableForTest;
} else {
mExitFreRunnable = () -> {
getPageDelegate().exitFirstRun();
mExitFreRunnable = null;
};
}
// Make sure this function is called at most once by asserting no handler is created yet.
assert mHandler == null;
Runnable exitFreRunnable = sOverridenOnExitFreRunnableForTest != null
? sOverridenOnExitFreRunnableForTest
: () -> getPageDelegate().exitFirstRun();
mHandler = new Handler(ThreadUtils.getUiThreadLooper());
mHandler.postDelayed(mExitFreRunnable, FirstRunUtils.getSkipTosExitDelayMs());
mHandler.postDelayed(exitFreRunnable, FirstRunUtils.getSkipTosExitDelayMs());
}
@VisibleForTesting
......
......@@ -94,6 +94,7 @@ public class FirstRunIntegrationTest {
public void setUp() {
MockitoAnnotations.initMocks(this);
FirstRunStatus.setFirstRunSkippedByPolicy(false);
FirstRunUtils.setDisableDelayOnExitFreForTest(true);
FirstRunActivity.setObserverForTest(mTestObserver);
ToSAndUMAFirstRunFragment.setShowUmaCheckBoxForTesting(true);
......@@ -109,6 +110,7 @@ public class FirstRunIntegrationTest {
@After
public void tearDown() {
FirstRunStatus.setFirstRunSkippedByPolicy(false);
FirstRunUtils.setDisableDelayOnExitFreForTest(false);
FirstRunAppRestrictionInfo.setInitializedInstanceForTest(null);
ToSAndUMAFirstRunFragment.setShowUmaCheckBoxForTesting(false);
EnterpriseInfo.setInstanceForTest(null);
......
......@@ -126,6 +126,7 @@ public class TosAndUmaFirstRunFragmentWithEnterpriseSupportTest {
FirstRunAppRestrictionInfo.setInitializedInstanceForTest(mMockAppRestrictionInfo);
ToSAndUMAFirstRunFragment.setShowUmaCheckBoxForTesting(true);
PolicyServiceFactory.setPolicyServiceForTest(mPolicyService);
FirstRunUtils.setDisableDelayOnExitFreForTest(true);
FirstRunUtilsJni.TEST_HOOKS.setInstanceForTesting(mFirstRunUtils);
EnterpriseInfo.setInstanceForTest(mMockEnterpriseInfo);
......@@ -167,6 +168,7 @@ public class TosAndUmaFirstRunFragmentWithEnterpriseSupportTest {
ToSAndUMAFirstRunFragment.setShowUmaCheckBoxForTesting(false);
TosAndUmaFirstRunFragmentWithEnterpriseSupport.setOverrideOnExitFreRunnableForTest(null);
PolicyServiceFactory.setPolicyServiceForTest(null);
FirstRunUtils.setDisableDelayOnExitFreForTest(false);
FirstRunUtilsJni.TEST_HOOKS.setInstanceForTesting(mFirstRunUtils);
EnterpriseInfo.setInstanceForTest(null);
SharedPreferencesManager.getInstance().writeBoolean(
......
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