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 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); --