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 56c2f1d7..47950a04 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 @@ -6,20 +6,20 @@ Subject: Add flag to always view the desktop site for all websites chrome/android/chrome_java_resources.gni | 1 + 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 | 17 +++++- - .../settings/UserAgentPreferences.java | 59 +++++++++++++++++++ - .../chromium/chrome/browser/tab/TabImpl.java | 51 +++++++++++++++- - .../browser/tabmodel/TabWindowManager.java | 20 +++++++ + .../java/res/xml/useragent_preferences.xml | 30 ++++++++ + .../chrome/browser/app/ChromeActivity.java | 17 ++++- + .../settings/UserAgentPreferences.java | 60 +++++++++++++++ + .../chromium/chrome/browser/tab/TabImpl.java | 75 ++++++++++++++++++- + .../browser/tabmodel/TabWindowManager.java | 20 +++++ chrome/browser/android/tab_android.cc | 5 +- chrome/browser/android/tab_android.h | 3 +- - .../preferences/ChromePreferenceKeys.java | 7 ++- + .../preferences/ChromePreferenceKeys.java | 7 +- .../org/chromium/chrome/browser/tab/Tab.java | 2 + - .../strings/android_chrome_strings.grd | 14 +++++ + .../strings/android_chrome_strings.grd | 14 ++++ .../navigation_controller_android.cc | 6 +- .../navigation_controller_android.h | 3 +- .../framehost/NavigationControllerImpl.java | 6 +- - 16 files changed, 218 insertions(+), 12 deletions(-) + 16 files changed, 243 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 @@ -133,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,59 @@ +@@ -0,0 +1,60 @@ +/* + This file is part of Bromite. + @@ -177,26 +177,27 @@ new file mode 100644 + + ChromeSwitchPreference alwaysDesktopModeSwitch = + (ChromeSwitchPreference) findPreference(PREF_STICK_DESKTOP_MODE_SWITCH); -+ if (alwaysDesktopModeSwitch != null) { -+ boolean enabled = SharedPreferencesManager.getInstance().readBoolean( -+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); -+ alwaysDesktopModeSwitch.setChecked(enabled); -+ alwaysDesktopModeSwitch.setOnPreferenceChangeListener((preference, newValue) -> { -+ SharedPreferencesManager.getInstance().writeBoolean( -+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, (boolean) newValue); ++ boolean enabled = SharedPreferencesManager.getInstance().readBoolean( ++ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); ++ alwaysDesktopModeSwitch.setChecked(enabled); ++ alwaysDesktopModeSwitch.setOnPreferenceChangeListener((preference, newValue) -> { ++ SharedPreferencesManager.getInstance().writeBoolean( ++ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, (boolean) newValue); ++ UpdateAllTabs(); ++ return true; ++ }); ++ } + -+ final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( -+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false); -+ TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled); -+ return true; -+ }); -+ } ++ private void UpdateAllTabs() { ++ final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( ++ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false); ++ TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled); + } +} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -57,6 +57,10 @@ import org.chromium.ui.base.WindowAndroid; +@@ -57,6 +57,12 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; import org.chromium.url.Origin; @@ -204,18 +205,33 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav +import org.chromium.chrome.browser.preferences.SharedPreferencesManager; +import org.chromium.content_public.browser.navigation_controller.UserAgentOverrideOption; +import org.chromium.content_public.browser.NavigationController; ++import org.chromium.components.embedder_support.util.UrlUtilities; ++import org.chromium.components.url_formatter.UrlFormatter; /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. -@@ -446,6 +450,18 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -446,6 +452,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { throw new RuntimeException("Tab.loadUrl called when no native side exists"); } + final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( + ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false); + if (stickyDesktopModeEnabled) { -+ final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( ++ boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean( + ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false); ++ ++ if (UrlUtilities.isInternalScheme(UrlFormatter.fixupUrl(params.getUrl()))) { ++ alwaysDesktopModeEnabled = false; ++ } ++ ++ WebContents webContents = this.getWebContents(); ++ if (webContents != null) { ++ NavigationController navigationController = webContents.getNavigationController(); ++ boolean currentUseDesktopUserAgent = navigationController.getUseDesktopUserAgent(); ++ if (currentUseDesktopUserAgent != alwaysDesktopModeEnabled) ++ navigationController.setUseDesktopUserAgent(alwaysDesktopModeEnabled, false); ++ } ++ + if (alwaysDesktopModeEnabled) { + params.setOverrideUserAgent((int)UserAgentOverrideOption.TRUE); + } else { @@ -226,7 +242,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav // 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 +474,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -458,7 +489,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { params.getReferrer() != null ? params.getReferrer().getPolicy() : 0, params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(), params.getHasUserGesture(), params.getShouldClearHistoryList(), @@ -236,7 +252,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 +1397,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1380,6 +1412,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { if (mWebContents != null) mWebContents.getNavigationController().loadIfNecessary(); mIsBeingRestored = true; for (TabObserver observer : mObservers) observer.onRestoreStarted(this); @@ -247,16 +263,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav } finally { TraceEvent.end("Tab.restoreIfNeeded"); } -@@ -1497,6 +1518,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1497,6 +1533,40 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { } } + int overrideUserAgentWhenUnFrozen = (int)UserAgentOverrideOption.INHERIT; + + public void SetOverrideUserAgent(boolean usingDesktopUserAgent) { ++ WebContents webContents = this.getWebContents(); + overrideUserAgentWhenUnFrozen = UserAgentOverrideOption.INHERIT; + -+ WebContents webContents = this.getWebContents(); ++ if (usingDesktopUserAgent) { ++ GURL url = this.getUrl(); ++ if (webContents == null && this.getPendingLoadParams() != null) { ++ url = UrlFormatter.fixupUrl(this.getPendingLoadParams().getUrl()); ++ } ++ if (UrlUtilities.isInternalScheme(url) == true) ++ usingDesktopUserAgent = false; ++ } ++ + if (webContents != null) { + NavigationController navigationController = webContents.getNavigationController(); + navigationController.setUseDesktopUserAgent( @@ -279,7 +304,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav @NativeMethods interface Natives { void init(TabImpl caller); -@@ -1517,7 +1563,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { +@@ -1517,7 +1587,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer { String referrerUrl, int referrerPolicy, boolean isRendererInitiated, boolean shoulReplaceCurrentEntry, boolean hasUserGesture, boolean shouldClearHistoryList, long inputStartTimestamp, @@ -469,6 +494,3 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh void clearHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller); int getNavigationHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller, Object history); --- -2.17.1 -