171 lines
8.8 KiB
Diff
171 lines
8.8 KiB
Diff
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|
Date: Sat, 4 Dec 2021 11:41:31 +0100
|
|
Subject: Restore offline-indicator-v2 flag
|
|
|
|
Reverts acc8b6f4542703211e5f3c5181914fd3374c9e84
|
|
|
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|
---
|
|
.../indicator/OfflineDetector.java | 40 ++++++++++++++++++-
|
|
.../tabbed_mode/TabbedRootUiCoordinator.java | 8 +++-
|
|
.../flags/android/chrome_feature_list.cc | 1 +
|
|
.../browser/flags/ChromeFeatureList.java | 1 +
|
|
.../Restore-offline-indicator-v2-flag.inc | 12 ++++++
|
|
.../Restore-offline-indicator-v2-flag.inc | 3 ++
|
|
.../Restore-offline-indicator-v2-flag.inc | 1 +
|
|
7 files changed, 63 insertions(+), 3 deletions(-)
|
|
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc
|
|
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-offline-indicator-v2-flag.inc
|
|
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-offline-indicator-v2-flag.inc
|
|
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java
|
|
@@ -8,6 +8,7 @@ import android.content.Context;
|
|
import android.os.Handler;
|
|
import android.os.SystemClock;
|
|
import android.provider.Settings;
|
|
+import android.text.TextUtils;
|
|
|
|
import androidx.annotation.VisibleForTesting;
|
|
|
|
@@ -18,8 +19,12 @@ import org.chromium.base.Log;
|
|
import org.chromium.base.version_info.VersionInfo;
|
|
import org.chromium.build.annotations.NullMarked;
|
|
import org.chromium.build.annotations.Nullable;
|
|
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector;
|
|
import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState;
|
|
+import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector;
|
|
+import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState;
|
|
+import org.chromium.components.variations.VariationsAssociatedData;
|
|
|
|
import java.util.function.Supplier;
|
|
|
|
@@ -131,8 +136,9 @@ class OfflineDetector
|
|
mIsForegroundCallback = isForegroundCallback;
|
|
mContext = context;
|
|
mHandler = new Handler();
|
|
- mStatusIndicatorWaitOnSwitchOnlineToOfflineDurationMs =
|
|
- STATUS_INDICATOR_WAIT_ON_SWITCH_ONLINE_TO_OFFLINE_DEFAULT_DURATION_MS;
|
|
+ mStatusIndicatorWaitOnSwitchOnlineToOfflineDurationMs = getIntParamValueOrDefault(
|
|
+ "STATUS_INDICATOR_WAIT_ON_SWITCH_ONLINE_TO_OFFLINE_DEFAULT_DURATION_MS",
|
|
+ STATUS_INDICATOR_WAIT_ON_SWITCH_ONLINE_TO_OFFLINE_DEFAULT_DURATION_MS);
|
|
|
|
mUpdateOfflineStatusIndicatorDelayedRunnable =
|
|
() -> {
|
|
@@ -389,4 +395,34 @@ class OfflineDetector
|
|
timeNeededAfterConnectionChangeFromOnlineToOffline),
|
|
timeNeededAfterConnectionChangeFromAirplaneToOffline));
|
|
}
|
|
+
|
|
+ /**
|
|
+ * Returns the value for a Finch parameter, or the default value if no parameter
|
|
+ * exists in the current configuration.
|
|
+ * @param paramName The name of the Finch parameter (or command-line switch) to get a value
|
|
+ * for.
|
|
+ * @param defaultValue The default value to return when there's no param or switch.
|
|
+ * @return The value -- either the param or the default.
|
|
+ */
|
|
+ private static long getIntParamValueOrDefault(String paramName, long defaultValue) {
|
|
+ String value;
|
|
+
|
|
+ // May throw exception in tests.
|
|
+ try {
|
|
+ value = VariationsAssociatedData.getVariationParamValue(
|
|
+ ChromeFeatureList.OFFLINE_INDICATOR_V2, paramName);
|
|
+ } catch (java.lang.UnsupportedOperationException e) {
|
|
+ return defaultValue;
|
|
+ }
|
|
+
|
|
+ if (!TextUtils.isEmpty(value)) {
|
|
+ try {
|
|
+ return Integer.parseInt(value);
|
|
+ } catch (NumberFormatException e) {
|
|
+ return defaultValue;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return defaultValue;
|
|
+ }
|
|
}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
|
|
@@ -1618,7 +1618,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
|
|
private void initStatusIndicatorCoordinator(LayoutManagerImpl layoutManager) {
|
|
// TODO(crbug.com/40112282): Disable on tablets for now as we need to do one or two extra
|
|
// things for tablets.
|
|
- if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
|
|
+ if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)
|
|
+ || (!ChromeFeatureList.isEnabled(ChromeFeatureList.OFFLINE_INDICATOR_V2))) {
|
|
return;
|
|
}
|
|
|
|
@@ -1658,6 +1659,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
|
|
hubManager.setStatusIndicatorHeight(mStatusIndicatorHeight);
|
|
});
|
|
|
|
+ // Don't initialize the offline indicator controller if the feature is disabled.
|
|
+ if (!ChromeFeatureList.isEnabled(ChromeFeatureList.OFFLINE_INDICATOR_V2)) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
SettableNonNullObservableSupplier<Boolean> isUrlBarFocusedSupplier =
|
|
ObservableSuppliers.createNonNull(mToolbarManager.isUrlBarFocused());
|
|
mUrlFocusChangeListener =
|
|
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
|
|
--- a/chrome/browser/flags/android/chrome_feature_list.cc
|
|
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
|
@@ -408,6 +408,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
|
&kNotificationTrampolineNoNewTask,
|
|
&kNtpMvcRefactor,
|
|
&kNtpSimplification,
|
|
+ &kOfflineIndicatorV2,
|
|
&kOmahaMinSdkVersionAndroid,
|
|
&kOnDemandBackgroundTabContextCapture,
|
|
&kPCCTMinimumHeight,
|
|
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
|
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
|
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
|
@@ -551,6 +551,7 @@ public abstract class ChromeFeatureList {
|
|
"NotificationTrampolineNoNewTask";
|
|
public static final String NTP_MVC_REFACTOR = "NtpMvcRefactor";
|
|
public static final String NTP_SIMPLIFICATION = "NtpSimplification";
|
|
+ public static final String OFFLINE_INDICATOR_V2 = "OfflineIndicatorV2";
|
|
public static final String OMAHA_MIN_SDK_VERSION_ANDROID = "OmahaMinSdkVersionAndroid";
|
|
public static final String OMNIBOX_AUTOFOCUS_ON_INCOGNITO_NTP =
|
|
"OmniboxAutofocusOnIncognitoNtp";
|
|
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc
|
|
@@ -0,0 +1,12 @@
|
|
+#if BUILDFLAG(IS_ANDROID)
|
|
+
|
|
+#ifdef FLAG_SECTION
|
|
+
|
|
+ {"offline-indicator-v2",
|
|
+ "Offline indicator V2",
|
|
+ "Show a persistent offline indicator when offline.", kOsAndroid,
|
|
+ FEATURE_VALUE_TYPE(chrome::android::kOfflineIndicatorV2)},
|
|
+
|
|
+#endif
|
|
+
|
|
+#endif
|
|
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-offline-indicator-v2-flag.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-offline-indicator-v2-flag.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-offline-indicator-v2-flag.inc
|
|
@@ -0,0 +1,3 @@
|
|
+CROMITE_FEATURE(kOfflineIndicatorV2,
|
|
+ "OfflineIndicatorV2",
|
|
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-offline-indicator-v2-flag.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-offline-indicator-v2-flag.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-offline-indicator-v2-flag.inc
|
|
@@ -0,0 +1 @@
|
|
+BASE_DECLARE_FEATURE(kOfflineIndicatorV2);
|
|
--
|