187 lines
11 KiB
Diff
187 lines
11 KiB
Diff
From: Wengling Chen <feiyu2817@gmail.com>
|
|
Date: Mon, 1 Feb 2021 19:18:55 +0200
|
|
Subject: Add option to force tablet UI
|
|
|
|
---
|
|
.../android/java/res/xml/accessibility_preferences.xml | 5 +++++
|
|
.../accessibility/settings/AccessibilitySettings.java | 10 ++++++++++
|
|
.../browser/preferences/ChromePreferenceKeys.java | 1 +
|
|
.../preferences/LegacyChromePreferenceKeys.java | 1 +
|
|
.../chrome/browser/omnibox/LocationBarCoordinator.java | 2 +-
|
|
.../ui/android/strings/android_chrome_strings.grd | 6 ++++++
|
|
.../browser/toolbar/top/ToolbarControlContainer.java | 2 +-
|
|
components/BUILD.gn | 4 ++--
|
|
ui/android/BUILD.gn | 2 ++
|
|
.../src/org/chromium/ui/base/DeviceFormFactor.java | 5 +++++
|
|
10 files changed, 34 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/chrome/android/java/res/xml/accessibility_preferences.xml
|
|
--- a/chrome/android/java/res/xml/accessibility_preferences.xml
|
|
+++ b/chrome/android/java/res/xml/accessibility_preferences.xml
|
|
@@ -29,6 +29,11 @@
|
|
android:key="captions"
|
|
android:title="@string/accessibility_captions_title"/>
|
|
|
|
+ <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
|
|
+ android:key="force_tablet_ui"
|
|
+ android:summary="@string/force_tablet_ui_summary"
|
|
+ android:title="@string/force_tablet_ui_title" />
|
|
+
|
|
<Preference
|
|
android:fragment="org.chromium.chrome.browser.image_descriptions.ImageDescriptionsSettings"
|
|
android:key="image_descriptions"
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
|
|
@@ -37,6 +37,7 @@ public class AccessibilitySettings
|
|
static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
|
|
static final String PREF_ACCESSIBILITY_PAGE_ZOOM = "accessibility_page_zoom";
|
|
|
|
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
|
|
private TextScalePreference mTextScalePref;
|
|
private ChromeBaseCheckBoxPreference mForceEnableZoomPref;
|
|
private boolean mRecordFontSizeChangeOnStop;
|
|
@@ -82,6 +83,12 @@ public class AccessibilitySettings
|
|
.getBoolean(Pref.READER_FOR_ACCESSIBILITY));
|
|
readerForAccessibilityPref.setOnPreferenceChangeListener(this);
|
|
|
|
+ ChromeBaseCheckBoxPreference forceTabletUiPref =
|
|
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_FORCE_TABLET_UI);
|
|
+ forceTabletUiPref.setChecked(SharedPreferencesManager.getInstance().readBoolean(
|
|
+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false));
|
|
+ forceTabletUiPref.setOnPreferenceChangeListener(this);
|
|
+
|
|
ChromeBaseCheckBoxPreference mAccessibilityTabSwitcherPref =
|
|
(ChromeBaseCheckBoxPreference) findPreference(
|
|
ChromePreferenceKeys.ACCESSIBILITY_TAB_SWITCHER);
|
|
@@ -137,6 +144,9 @@ public class AccessibilitySettings
|
|
mFontSizePrefs.setUserFontScaleFactor((Float) newValue);
|
|
} else if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
|
|
mFontSizePrefs.setForceEnableZoomFromUser((Boolean) newValue);
|
|
+ } else if (PREF_FORCE_TABLET_UI.equals(preference.getKey())) {
|
|
+ SharedPreferencesManager.getInstance().writeBoolean(
|
|
+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, (Boolean) newValue);
|
|
} else if (PREF_READER_FOR_ACCESSIBILITY.equals(preference.getKey())) {
|
|
UserPrefs.get(Profile.getLastUsedRegularProfile())
|
|
.setBoolean(Pref.READER_FOR_ACCESSIBILITY, (Boolean) newValue);
|
|
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
|
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
|
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
|
@@ -536,6 +536,7 @@ public final class ChromePreferenceKeys {
|
|
public static final String FONT_USER_SET_FORCE_ENABLE_ZOOM = "user_set_force_enable_zoom";
|
|
|
|
public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info";
|
|
+ public static final String FLAGS_FORCE_TABLET_UI_ENABLED = "force_tablet_ui_enabled";
|
|
|
|
/** Keys used to save settings related to homepage. */
|
|
public static final String HOMEPAGE_CUSTOM_URI = "homepage_custom_uri";
|
|
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
|
|
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
|
|
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
|
|
@@ -99,6 +99,7 @@ public class LegacyChromePreferenceKeys {
|
|
ChromePreferenceKeys.FLAGS_CACHED_SWAP_PIXEL_FORMAT_TO_FIX_CONVERT_FROM_TRANSLUCENT,
|
|
ChromePreferenceKeys.FLAGS_CACHED_TAB_GROUPS_ANDROID_ENABLED,
|
|
ChromePreferenceKeys.FONT_USER_FONT_SCALE_FACTOR,
|
|
+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED,
|
|
ChromePreferenceKeys.FONT_USER_SET_FORCE_ENABLE_ZOOM,
|
|
ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
|
|
ChromePreferenceKeys.HOMEPAGE_CUSTOM_URI,
|
|
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
|
|
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
|
|
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
|
|
@@ -348,7 +348,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
|
|
// OmniboxSuggestionsDropdownEmbedder implementation
|
|
@Override
|
|
public boolean isTablet() {
|
|
- return DeviceFormFactor.isWindowOnTablet(mWindowAndroid);
|
|
+ return DeviceFormFactor.isWindowOnTablet(mWindowAndroid) || isTabletLayout();
|
|
}
|
|
|
|
@Override
|
|
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
|
@@ -1200,6 +1200,12 @@ Your Google account may have other forms of browsing history like searches and a
|
|
<message name="IDS_SAFE_BROWSING_NO_PROTECTION_CONFIRMATION_DIALOG_CONFIRM" desc="Message for Safe Browsing no protection confirmation button.">
|
|
Turn off
|
|
</message>
|
|
+ <message name="IDS_FORCE_TABLET_UI_SUMMARY" desc="Summary of the preference that allows the user to force chromium to use tablet UI.">
|
|
+ Open chromium in Tablet Mode
|
|
+ </message>
|
|
+ <message name="IDS_FORCE_TABLET_UI_TITLE" desc="Title of the preference that allows the user to update force tablet UI settings.">
|
|
+ Force Tablet Mode
|
|
+ </message>
|
|
|
|
<!-- Accessibility preferences -->
|
|
<message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR_LIMIT=32]">
|
|
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
|
|
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
|
|
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
|
|
@@ -109,7 +109,7 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con
|
|
// On tablet, draw a fake tab strip and toolbar until the compositor is
|
|
// ready to draw the real tab strip. (On phone, the toolbar is made entirely
|
|
// of Android views, which are already initialized.)
|
|
- setBackgroundResource(R.drawable.toolbar_background);
|
|
+// setBackgroundResource(R.drawable.toolbar_background);
|
|
}
|
|
}
|
|
|
|
diff --git a/components/BUILD.gn b/components/BUILD.gn
|
|
--- a/components/BUILD.gn
|
|
+++ b/components/BUILD.gn
|
|
@@ -542,7 +542,7 @@ test("components_unittests") {
|
|
|
|
# On LaCrOS, tests use ash - chrome as a window manager, thus the dependency.
|
|
# On other platforms, no components should depend on Chrome.
|
|
- if (!is_chromeos_lacros) {
|
|
+ if (!is_chromeos_lacros && !is_android) {
|
|
assert_no_deps = [ "//chrome/*" ]
|
|
}
|
|
|
|
@@ -789,7 +789,7 @@ if (!is_ios) {
|
|
|
|
# On LaCrOS, tests use ash - chrome as a window manager, thus the dependency.
|
|
# On other platforms, no components should depend on Chrome.
|
|
- if (!is_chromeos_lacros) {
|
|
+ if (!is_chromeos_lacros && !is_android) {
|
|
assert_no_deps = [ "//chrome/*" ]
|
|
}
|
|
}
|
|
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
|
|
--- a/ui/android/BUILD.gn
|
|
+++ b/ui/android/BUILD.gn
|
|
@@ -370,6 +370,8 @@ android_library("ui_no_recycler_view_java") {
|
|
":ui_java_resources",
|
|
":ui_utils_java",
|
|
"//base:base_java",
|
|
+ # dependency for ui_no_recycler_view_java
|
|
+ "//chrome/browser/preferences:java",
|
|
"//components/url_formatter/android:url_formatter_java",
|
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
|
"//third_party/androidx:androidx_appcompat_appcompat_java",
|
|
diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
|
|
--- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
|
|
+++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
|
|
@@ -11,6 +11,8 @@ import androidx.annotation.UiThread;
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.ThreadUtils;
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
|
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
|
|
import org.chromium.ui.R;
|
|
import org.chromium.ui.display.DisplayAndroid;
|
|
import org.chromium.ui.display.DisplayUtil;
|
|
@@ -60,6 +62,9 @@ public class DeviceFormFactor {
|
|
* E.g. http://developer.samsung.com/samsung-dex/testing
|
|
*/
|
|
public static boolean isNonMultiDisplayContextOnTablet(Context context) {
|
|
+ if (SharedPreferencesManager.getInstance().readBoolean(
|
|
+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false))
|
|
+ return true;
|
|
return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET;
|
|
}
|
|
|
|
--
|
|
2.17.1
|
|
|