Fix 2 failed OfflineIndicatorController tests

Bug: 859849
Change-Id: I88b4dc690cef0d482bb9f4a49a9aa7b688e8ae45
Reviewed-on: https://chromium-review.googlesource.com/1136470
Reviewed-by: Peter Williamson <petewil@chromium.org>
Commit-Queue: Jian Li <jianli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575410}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorController.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorController.java
index ef1f356c..b38af80 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorController.java
@@ -18,6 +18,7 @@
 
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.ContextUtils;
+import org.chromium.base.VisibleForTesting;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
@@ -46,6 +47,8 @@
 
     private static final int DURATION_MS = 10000;
 
+    private static boolean sSkipSystemCheckForTesting = false;
+
     @SuppressLint("StaticFieldLeak")
     private static OfflineIndicatorController sInstance;
 
@@ -120,6 +123,8 @@
      */
     @TargetApi(Build.VERSION_CODES.M)
     private boolean performSystemCheckForValidatedNetwork() {
+        if (sSkipSystemCheckForTesting) return false;
+
         // NetworkCapabilities.NET_CAPABILITY_VALIDATED is only available on Marshmallow and
         // later versions.
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return false;
@@ -200,4 +205,9 @@
         if (!mIsShowingOfflineIndicator) return;
         snackbarManager.dismissSnackbars(this);
     }
+
+    @VisibleForTesting
+    static void skipSystemCheckForTesting() {
+        sSkipSystemCheckForTesting = true;
+    }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java
index 8da9b68..5582737 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java
@@ -15,7 +15,6 @@
 
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.DisableIf;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
@@ -49,6 +48,7 @@
 
     @Before
     public void setUp() throws Exception {
+        OfflineIndicatorController.skipSystemCheckForTesting();
         mActivityTestRule.startMainActivityOnBlankPage();
         ThreadUtils.runOnUiThreadBlocking(() -> {
             if (!NetworkChangeNotifier.isInitialized()) {
@@ -93,7 +93,6 @@
     }
 
     @Test
-    @DisableIf.Build(sdk_is_greater_than = 22, message = "https://crbug.com/859849")
     @MediumTest
     public void testHideOfflineIndicatorWhenBackToOnline() throws Exception {
         EmbeddedTestServer testServer =
@@ -110,15 +109,13 @@
         checkOfflineIndicatorVisibility(mActivityTestRule.getActivity(), true);
 
         // Reconnect the network.
-        ThreadUtils.runOnUiThreadBlocking(
-                () -> { NetworkChangeNotifier.forceConnectivityState(true); });
+        setNetworkConnectivity(true);
 
         // Offline indicator should go away.
         checkOfflineIndicatorVisibility(mActivityTestRule.getActivity(), false);
     }
 
     @Test
-    @DisableIf.Build(sdk_is_greater_than = 22, message = "https://crbug.com/859849")
     @MediumTest
     public void testDoNotShowOfflineIndicatorOnErrorPageWhenOffline() throws Exception {
         EmbeddedTestServer testServer =