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