From d360de85cca310c8b1c94f524ac953d7347d524f Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 26 Oct 2020 17:53:06 +0100 Subject: [PATCH] fix toggling the new option alone does not affect the user agent --- ...s-view-desktop-site-for-all-websites.patch | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch b/build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch index 1cf473b0..aef70083 100644 --- a/build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch +++ b/build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch @@ -1,5 +1,5 @@ From: uazo -Date: Mon, 26 Oct 2020 11:55:40 +0000 +Date: Mon, 26 Oct 2020 16:50:15 +0000 Subject: Add flag to always view the desktop site for all websites --- @@ -7,19 +7,19 @@ Subject: Add flag to always view the desktop site for all websites chrome/android/chrome_java_sources.gni | 1 + .../android/java/res/xml/main_preferences.xml | 5 ++ .../java/res/xml/useragent_preferences.xml | 30 ++++++++++ - .../chrome/browser/app/ChromeActivity.java | 15 ++++- - .../settings/UserAgentPreferences.java | 56 +++++++++++++++++++ - .../chromium/chrome/browser/tab/TabImpl.java | 47 +++++++++++++++- + .../chrome/browser/app/ChromeActivity.java | 17 +++++- + .../settings/UserAgentPreferences.java | 59 +++++++++++++++++++ + .../chromium/chrome/browser/tab/TabImpl.java | 51 +++++++++++++++- .../browser/tabmodel/TabWindowManager.java | 20 +++++++ chrome/browser/android/tab_android.cc | 5 +- chrome/browser/android/tab_android.h | 3 +- - .../preferences/ChromePreferenceKeys.java | 5 +- + .../preferences/ChromePreferenceKeys.java | 7 ++- .../org/chromium/chrome/browser/tab/Tab.java | 2 + .../strings/android_chrome_strings.grd | 14 +++++ .../navigation_controller_android.cc | 6 +- .../navigation_controller_android.h | 3 +- .../framehost/NavigationControllerImpl.java | 6 +- - 16 files changed, 207 insertions(+), 12 deletions(-) + 16 files changed, 218 insertions(+), 12 deletions(-) create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import java.util.ArrayList; import java.util.List; -@@ -1987,11 +1990,17 @@ public abstract class ChromeActivity +@@ -1987,11 +1990,19 @@ public abstract class ChromeActivity } else if (id == R.id.view_source_id) { currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString())); } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) { @@ -115,10 +115,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent(); - currentTab.getWebContents().getNavigationController().setUseDesktopUserAgent( - !usingDesktopUserAgent, reloadOnChange); -+ -+ final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( ++ SharedPreferencesManager.getInstance().writeBoolean( ++ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, !usingDesktopUserAgent); ++ ++ final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( + ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); -+ if (alwaysDesktopModeEnabled) { ++ if (stickyDesktopModeEnabled) { + TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(!usingDesktopUserAgent); + } + else { @@ -131,7 +133,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAg new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java -@@ -0,0 +1,56 @@ +@@ -0,0 +1,59 @@ +/* + This file is part of Bromite. + @@ -182,6 +184,10 @@ new file mode 100644 + alwaysDesktopModeSwitch.setOnPreferenceChangeListener((preference, newValue) -> { + SharedPreferencesManager.getInstance().writeBoolean( + ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, (boolean) newValue); ++ ++ final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( ++ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false); ++ TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled); + return true; + }); + } @@ -201,22 +207,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. -@@ -446,6 +450,14 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -446,6 +450,18 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { throw new RuntimeException("Tab.loadUrl called when no native side exists"); } -+ if (params.getUserAgentOverrideOption() == (int)UserAgentOverrideOption.INHERIT) { ++ final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( ++ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); ++ if (stickyDesktopModeEnabled) { + final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( -+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); ++ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false); + if (alwaysDesktopModeEnabled) { + params.setOverrideUserAgent((int)UserAgentOverrideOption.TRUE); ++ } else { ++ params.setOverrideUserAgent((int)UserAgentOverrideOption.FALSE); + } + } + // We load the URL from the tab rather than directly from the ContentView so the tab has // a chance of using a prerenderer page is any. int loadType = TabImplJni.get().loadUrl(mNativeTabAndroid, TabImpl.this, -@@ -458,7 +470,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -458,7 +474,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { params.getReferrer() != null ? params.getReferrer().getPolicy() : 0, params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(), params.getHasUserGesture(), params.getShouldClearHistoryList(), @@ -226,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav for (TabObserver observer : mObservers) { observer.onLoadUrl(this, params, loadType); -@@ -1380,6 +1393,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1380,6 +1397,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { if (mWebContents != null) mWebContents.getNavigationController().loadIfNecessary(); mIsBeingRestored = true; for (TabObserver observer : mObservers) observer.onRestoreStarted(this); @@ -237,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav } finally { TraceEvent.end("Tab.restoreIfNeeded"); } -@@ -1497,6 +1514,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1497,6 +1518,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { } } @@ -269,7 +279,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav @NativeMethods interface Natives { void init(TabImpl caller); -@@ -1517,7 +1559,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1517,7 +1563,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { String referrerUrl, int referrerPolicy, boolean isRendererInitiated, boolean shoulReplaceCurrentEntry, boolean hasUserGesture, boolean shouldClearHistoryList, long inputStartTimestamp, @@ -345,22 +355,24 @@ diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_a 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 -@@ -778,6 +778,8 @@ public final class ChromePreferenceKeys { +@@ -778,6 +778,9 @@ public final class ChromePreferenceKeys { public static final KeyPrefix KEY_ZERO_SUGGEST_HEADER_GROUP_COLLAPSED_BY_DEFAULT_PREFIX = new KeyPrefix("zero_suggest_header_group_collapsed_by_default*"); + public static final String USERAGENT_STICKY_DESKTOP_MODE = "Chrome.UserAgent.StickyDesktopMode"; ++ public static final String USERAGENT_ALWAYS_DESKTOP_MODE = "Chrome.UserAgent.AlwaysDesktopMode"; + /** * These values are currently used as SharedPreferences keys, along with the keys in * {@link GrandfatheredChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys -@@ -820,7 +822,8 @@ public final class ChromePreferenceKeys { +@@ -820,7 +823,9 @@ public final class ChromePreferenceKeys { PROMO_TIMES_SEEN.pattern(), SETTINGS_SAFETY_CHECK_LAST_RUN_TIMESTAMP, SETTINGS_SAFETY_CHECK_RUN_COUNTER, - TWA_DISCLOSURE_SEEN_PACKAGES + TWA_DISCLOSURE_SEEN_PACKAGES, -+ USERAGENT_STICKY_DESKTOP_MODE ++ USERAGENT_STICKY_DESKTOP_MODE, ++ USERAGENT_ALWAYS_DESKTOP_MODE ); // clang-format on }