123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- 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
- @@ -543,6 +543,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
- @@ -1223,6 +1223,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
- @@ -549,7 +549,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/*" ]
- }
-
- @@ -798,7 +798,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
- @@ -369,6 +369,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.20.1
|