summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java38
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java1
-rw-r--r--chrome/app/generated_resources.grd8
-rw-r--r--chrome/browser/about_flags.cc8
-rw-r--r--chrome/common/chrome_switches.cc9
-rw-r--r--chrome/common/chrome_switches.h1
-rw-r--r--testing/variations/fieldtrial_testing_config_android.json8
-rw-r--r--tools/metrics/histograms/histograms.xml1
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"/>