Add-option-to-force-tablet-UI.patch 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. From: Wengling Chen <feiyu2817@gmail.com>
  2. Date: Mon, 1 Feb 2021 19:18:55 +0200
  3. Subject: Add option to force tablet UI
  4. ---
  5. .../android/java/res/xml/accessibility_preferences.xml | 5 +++++
  6. .../accessibility/settings/AccessibilitySettings.java | 10 ++++++++++
  7. .../browser/toolbar/top/ToolbarControlContainer.java | 2 +-
  8. .../browser/preferences/ChromePreferenceKeys.java | 1 +
  9. .../preferences/GrandfatheredChromePreferenceKeys.java | 1 +
  10. .../ui/android/strings/android_chrome_strings.grd | 6 ++++++
  11. components/BUILD.gn | 4 ++--
  12. ui/android/BUILD.gn | 1 +
  13. .../src/org/chromium/ui/base/DeviceFormFactor.java | 5 +++++
  14. 9 files changed, 32 insertions(+), 3 deletions(-)
  15. diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/chrome/android/java/res/xml/accessibility_preferences.xml
  16. --- a/chrome/android/java/res/xml/accessibility_preferences.xml
  17. +++ b/chrome/android/java/res/xml/accessibility_preferences.xml
  18. @@ -29,6 +29,11 @@
  19. android:key="captions"
  20. android:title="@string/accessibility_captions_title"/>
  21. + <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
  22. + android:key="force_tablet_ui"
  23. + android:summary="@string/force_tablet_ui_summary"
  24. + android:title="@string/force_tablet_ui_title" />
  25. +
  26. <Preference
  27. android:fragment="org.chromium.chrome.browser.image_descriptions.ImageDescriptionsSettings"
  28. android:key="image_descriptions"
  29. 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
  30. --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
  31. +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
  32. @@ -35,6 +35,7 @@ public class AccessibilitySettings
  33. static final String PREF_CAPTIONS = "captions";
  34. static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
  35. + static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
  36. private TextScalePreference mTextScalePref;
  37. private ChromeBaseCheckBoxPreference mForceEnableZoomPref;
  38. private boolean mRecordFontSizeChangeOnStop;
  39. @@ -80,6 +81,12 @@ public class AccessibilitySettings
  40. .getBoolean(Pref.READER_FOR_ACCESSIBILITY));
  41. readerForAccessibilityPref.setOnPreferenceChangeListener(this);
  42. + ChromeBaseCheckBoxPreference forceTabletUiPref =
  43. + (ChromeBaseCheckBoxPreference) findPreference(PREF_FORCE_TABLET_UI);
  44. + forceTabletUiPref.setChecked(SharedPreferencesManager.getInstance().readBoolean(
  45. + ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false));
  46. + forceTabletUiPref.setOnPreferenceChangeListener(this);
  47. +
  48. ChromeBaseCheckBoxPreference mAccessibilityTabSwitcherPref =
  49. (ChromeBaseCheckBoxPreference) findPreference(
  50. ChromePreferenceKeys.ACCESSIBILITY_TAB_SWITCHER);
  51. @@ -131,6 +138,9 @@ public class AccessibilitySettings
  52. mFontSizePrefs.setUserFontScaleFactor((Float) newValue);
  53. } else if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
  54. mFontSizePrefs.setForceEnableZoomFromUser((Boolean) newValue);
  55. + } else if (PREF_FORCE_TABLET_UI.equals(preference.getKey())) {
  56. + SharedPreferencesManager.getInstance().writeBoolean(
  57. + ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, (Boolean) newValue);
  58. } else if (PREF_READER_FOR_ACCESSIBILITY.equals(preference.getKey())) {
  59. UserPrefs.get(Profile.getLastUsedRegularProfile())
  60. .setBoolean(Pref.READER_FOR_ACCESSIBILITY, (Boolean) newValue);
  61. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
  62. --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
  63. +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
  64. @@ -107,7 +107,7 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con
  65. // On tablet, draw a fake tab strip and toolbar until the compositor is
  66. // ready to draw the real tab strip. (On phone, the toolbar is made entirely
  67. // of Android views, which are already initialized.)
  68. - setBackgroundResource(R.drawable.toolbar_background);
  69. +// setBackgroundResource(R.drawable.toolbar_background);
  70. }
  71. }
  72. 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
  73. --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
  74. +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
  75. @@ -449,6 +449,7 @@ public final class ChromePreferenceKeys {
  76. public static final String FONT_USER_SET_FORCE_ENABLE_ZOOM = "user_set_force_enable_zoom";
  77. public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info";
  78. + public static final String FLAGS_FORCE_TABLET_UI_ENABLED = "force_tablet_ui_enabled";
  79. /** Keys used to save settings related to homepage. */
  80. public static final String HOMEPAGE_CUSTOM_URI = "homepage_custom_uri";
  81. diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/GrandfatheredChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/GrandfatheredChromePreferenceKeys.java
  82. --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/GrandfatheredChromePreferenceKeys.java
  83. +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/GrandfatheredChromePreferenceKeys.java
  84. @@ -100,6 +100,7 @@ public class GrandfatheredChromePreferenceKeys {
  85. ChromePreferenceKeys.FLAGS_CACHED_SWAP_PIXEL_FORMAT_TO_FIX_CONVERT_FROM_TRANSLUCENT,
  86. ChromePreferenceKeys.FLAGS_CACHED_TAB_GROUPS_ANDROID_ENABLED,
  87. ChromePreferenceKeys.FONT_USER_FONT_SCALE_FACTOR,
  88. + ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED,
  89. ChromePreferenceKeys.FONT_USER_SET_FORCE_ENABLE_ZOOM,
  90. ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
  91. ChromePreferenceKeys.HOMEPAGE_CUSTOM_URI,
  92. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  93. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  94. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  95. @@ -1166,6 +1166,12 @@ Your Google account may have other forms of browsing history like searches and a
  96. <message name="IDS_SAFE_BROWSING_NO_PROTECTION_CONFIRMATION_DIALOG_CONFIRM" desc="Message for Safe Browsing no protection confirmation button.">
  97. Turn off
  98. </message>
  99. + <message name="IDS_FORCE_TABLET_UI_SUMMARY" desc="Summary of the preference that allows the user to force chromium to use tablet UI.">
  100. + Open chromium in Tablet Mode
  101. + </message>
  102. + <message name="IDS_FORCE_TABLET_UI_TITLE" desc="Title of the preference that allows the user to update force tablet UI settings.">
  103. + Force Tablet Mode
  104. + </message>
  105. <!-- Accessibility preferences -->
  106. <message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR-LIMIT=32]">
  107. diff --git a/components/BUILD.gn b/components/BUILD.gn
  108. --- a/components/BUILD.gn
  109. +++ b/components/BUILD.gn
  110. @@ -501,7 +501,7 @@ test("components_unittests") {
  111. # On LaCrOS, tests use ash-chrome as a window manager, thus the dependency.
  112. # On other platforms, no components should depend on Chrome.
  113. - if (!is_chromeos_lacros) {
  114. + if (!is_chromeos_lacros && !is_android) {
  115. assert_no_deps = [ "//chrome/*" ]
  116. }
  117. @@ -748,7 +748,7 @@ if (!is_ios && !is_fuchsia) {
  118. # On LaCrOS, tests use ash-chrome as a window manager, thus the dependency.
  119. # On other platforms, no components should depend on Chrome.
  120. - if (!is_chromeos_lacros) {
  121. + if (!is_chromeos_lacros && !is_android) {
  122. assert_no_deps = [ "//chrome/*" ]
  123. }
  124. }
  125. diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
  126. --- a/ui/android/BUILD.gn
  127. +++ b/ui/android/BUILD.gn
  128. @@ -362,6 +362,7 @@ android_library("ui_no_recycler_view_java") {
  129. ":ui_utils_java",
  130. "//base:base_java",
  131. "//base:jni_java",
  132. + "//chrome/browser/preferences:java",
  133. "//third_party/androidx:androidx_annotation_annotation_java",
  134. "//third_party/androidx:androidx_appcompat_appcompat_java",
  135. "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
  136. diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
  137. --- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
  138. +++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
  139. @@ -11,6 +11,8 @@ import androidx.annotation.UiThread;
  140. import org.chromium.base.ContextUtils;
  141. import org.chromium.base.ThreadUtils;
  142. import org.chromium.base.annotations.CalledByNative;
  143. +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
  144. +import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
  145. import org.chromium.ui.R;
  146. import org.chromium.ui.display.DisplayAndroid;
  147. import org.chromium.ui.display.DisplayUtil;
  148. @@ -60,6 +62,9 @@ public class DeviceFormFactor {
  149. * E.g. http://developer.samsung.com/samsung-dex/testing
  150. */
  151. public static boolean isNonMultiDisplayContextOnTablet(Context context) {
  152. + if (SharedPreferencesManager.getInstance().readBoolean(
  153. + ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false))
  154. + return true;
  155. return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET;
  156. }
  157. --
  158. 2.17.1