Merge pull request #800 from uazo/fix-780
Always desktop view mode: exclude internal schemes
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user