diff options
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java | 38 | ||||
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java | 1 | ||||
-rw-r--r-- | chrome/app/generated_resources.grd | 8 | ||||
-rw-r--r-- | chrome/browser/about_flags.cc | 8 | ||||
-rw-r--r-- | chrome/common/chrome_switches.cc | 9 | ||||
-rw-r--r-- | chrome/common/chrome_switches.h | 1 | ||||
-rw-r--r-- | testing/variations/fieldtrial_testing_config_android.json | 8 | ||||
-rw-r--r-- | tools/metrics/histograms/histograms.xml | 1 |
8 files changed, 74 insertions, 0 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java b/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java index 3a2372b..d1f37b6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java @@ -5,6 +5,7 @@ package org.chromium.chrome.browser.device; import android.content.Context; +import android.text.TextUtils; import android.view.accessibility.AccessibilityManager; import org.chromium.base.ApplicationStatus; @@ -12,6 +13,7 @@ import org.chromium.base.CommandLine; import org.chromium.base.SysUtils; import org.chromium.base.TraceEvent; import org.chromium.chrome.browser.ChromeSwitches; +import org.chromium.components.variations.VariationsAssociatedData; import org.chromium.ui.base.DeviceFormFactor; /** @@ -19,6 +21,12 @@ import org.chromium.ui.base.DeviceFormFactor; * devices. */ public class DeviceClassManager { + private static final String DISABLE_AUTO_HIDING_FIELD_TRIAL_NAME = "DisableAutoHidingToolbar"; + private static final String DISABLE_AUTO_HIDING_TOOLBAR_THRESHOLD_COMMAND = + "disable-auto-hiding-toolbar-threshold"; + private static final String DISABLE_AUTO_HIDING_TOOLBAR_THRESHOLD_PARAM = + "disable_auto_hiding_toolbar_threshold"; + private static DeviceClassManager sInstance; // Set of features that can be enabled/disabled @@ -33,6 +41,7 @@ public class DeviceClassManager { private boolean mDisableDomainReliability; private final boolean mEnableFullscreen; + private Boolean mDisableAutoHidingToolbar; private static DeviceClassManager getInstance() { if (sInstance == null) { @@ -164,4 +173,33 @@ public class DeviceClassManager { TraceEvent.end("DeviceClassManager::isAccessibilityModeEnabled"); return enabled; } + + /** + * @param context A {@link Context} instance. + * @return Whether auto-hiding the toolbar is disabled. + */ + public static boolean isAutoHidingToolbarDisabled(Context context) { + if (getInstance().mDisableAutoHidingToolbar == null) { + getInstance().mDisableAutoHidingToolbar = false; + String value = CommandLine.getInstance().getSwitchValue( + DISABLE_AUTO_HIDING_TOOLBAR_THRESHOLD_COMMAND); + if (TextUtils.isEmpty(value)) { + value = VariationsAssociatedData.getVariationParamValue( + DISABLE_AUTO_HIDING_FIELD_TRIAL_NAME, + DISABLE_AUTO_HIDING_TOOLBAR_THRESHOLD_PARAM); + } + if (!TextUtils.isEmpty(value)) { + try { + int threshold = Integer.parseInt(value); + int smallestScreenDp = + context.getResources().getConfiguration().smallestScreenWidthDp; + if (smallestScreenDp >= threshold) { + getInstance().mDisableAutoHidingToolbar = true; + } + } catch (NumberFormatException e) { + } + } + } + return getInstance().mDisableAutoHidingToolbar; + } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java index 091e627..f9d849a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java @@ -2435,6 +2435,7 @@ public class Tab implements ViewGroup.OnHierarchyChangeListener, enableHidingTopControls &= !webContents.isShowingInterstitialPage(); enableHidingTopControls &= (mFullscreenManager != null); enableHidingTopControls &= DeviceClassManager.enableFullscreen(); + enableHidingTopControls &= !DeviceClassManager.isAutoHidingToolbarDisabled(mActivity); enableHidingTopControls &= !mIsFullscreenWaitingForLoad; return enableHidingTopControls; diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 6c401a8..2fca636 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -15365,6 +15365,14 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2<ex>jane.doe@gmail.com</ex <message name="IDS_DATA_USE_LEARN_MORE_LINK_URL" desc="URL for the 'Learn more' link in the the dialog shown when data use tracking has ended." formatter_data="android_java"> <!-- Intentionally empty. This is overridden via Finch. --> </message> + + <!-- Disable Auto-Hiding Toolbar Flags --> + <message name="IDS_FLAGS_DISABLE_AUTO_HIDING_TOOLBAR_NAME" desc="Name of the flag to disable auto-hiding the toolbar."> + Disable auto-hiding the toolbar + </message> + <message name="IDS_FLAGS_DISABLE_AUTO_HIDING_TOOLBAR_DESCRIPTION" desc="Description of the flag to disable auto-hiding the toolbar."> + When enabled, the toolbar will never be hidden due to scrolling. It will still be hidden if page contents go fullscreen. + </message> </if> </messages> diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index e70f0ae..a2e24d4 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -2124,6 +2124,14 @@ const FeatureEntry kFeatureEntries[] = { ENABLE_DISABLE_VALUE_TYPE(switches::kEnableAppContainer, switches::kDisableAppContainer)}, #endif // defined(OS_WIN) +#if defined(OS_ANDROID) + {"disable-auto-hiding-toolbar-threshold", + IDS_FLAGS_DISABLE_AUTO_HIDING_TOOLBAR_NAME, + IDS_FLAGS_DISABLE_AUTO_HIDING_TOOLBAR_DESCRIPTION, + kOsAndroid, + SINGLE_VALUE_TYPE_AND_VALUE(switches::kDisableAutoHidingToolbarThreshold, + "0")}, +#endif // NOTE: Adding new command-line switches requires adding corresponding // entries to enum "LoginCustomFlags" in histograms.xml. See note in // histograms.xml and don't forget to run AboutFlagsHistogramTest unit test. diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 6d49d90..64d0ac6 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -1317,6 +1317,15 @@ const char kDebugPrint[] = "debug-print"; const char kDisableNewTaskManager[] = "disable-new-task-manager"; #endif // defined(ENABLE_TASK_MANAGER) +#if defined(OS_ANDROID) +// Sets the threshold for when to disable auto-hiding the toolbar. If the +// device's width and height are above the threshold, the toolbar will never +// be hidden due to scrolling. It will still be hidden if page contents go +// fullscreen. +const char kDisableAutoHidingToolbarThreshold[] = + "disable-auto-hiding-toolbar-threshold"; +#endif // defined(OS_ANDROID) + bool AboutInSettingsEnabled() { return SettingsWindowEnabled() && !base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 1813c9a..c8638a9 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -317,6 +317,7 @@ extern const char kEnableHungRendererInfoBar[]; extern const char kEnablePhysicalWeb[]; extern const char kProgressBarAnimation[]; extern const char kEnableThemeColorInTabbedMode[]; +extern const char kDisableAutoHidingToolbarThreshold[]; #endif // defined(OS_ANDROID) #if defined(USE_ASH) diff --git a/testing/variations/fieldtrial_testing_config_android.json b/testing/variations/fieldtrial_testing_config_android.json index a756e4a..3635450 100644 --- a/testing/variations/fieldtrial_testing_config_android.json +++ b/testing/variations/fieldtrial_testing_config_android.json @@ -88,6 +88,14 @@ "group_name": "Enabled" } ], + "DisableAutoHidingToolbar": [ + { + "group_name": "Enabled", + "params": { + "disable_auto_hiding_toolbar_threshold": "800" + } + } + ], "EnableMediaThreadForMediaPlayback": [ { "group_name": "Enabled" diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 77d9f9f..81111c3 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -66227,6 +66227,7 @@ To add a new entry, add it with any value and run test to compute valid value. <int value="2077917024" label="enable-supervised-user-managed-bookmarks-folder"/> <int value="2093235103" label="default-tile-width"/> + <int value="2097048479" label="disable-auto-hiding-toolbar-threshold"/> <int value="2101151142" label="disable-direct-write"/> <int value="2119964154" label="enable-download-resumption"/> <int value="2121776031" label="auto-virtual-keyboard"/> |