updated patch for v90
This commit is contained in:
parent
b5a8dc1ebf
commit
1aef9679ae
2 changed files with 122 additions and 210 deletions
|
@ -145,4 +145,5 @@ Add-option-to-force-tablet-UI.patch
|
|||
Make-all-favicon-requests-on-demand.patch
|
||||
Add-Alt-D-hotkey-to-focus-address-bar.patch
|
||||
Remove-offline-measurement-background-task.patch
|
||||
User-agent-customization.patch
|
||||
Automated-domain-substitution.patch
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
From: uazo <uazo@users.noreply.github.com>
|
||||
Date: Mon, 26 Oct 2020 16:50:15 +0000
|
||||
Date: Fri, 9 Apr 2021 20:09:08 +0000
|
||||
Subject: User agent customization
|
||||
|
||||
Add flag to always view the desktop site for all websites
|
||||
|
@ -11,36 +11,34 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin
|
|||
base/base_switches.h | 2 +
|
||||
chrome/android/chrome_java_resources.gni | 2 +
|
||||
chrome/android/chrome_java_sources.gni | 1 +
|
||||
.../layout/custom_useragent_preferences.xml | 108 ++++++++++
|
||||
.../layout/custom_useragent_preferences.xml | 106 ++++++++++
|
||||
.../android/java/res/xml/main_preferences.xml | 5 +
|
||||
.../java/res/xml/useragent_preferences.xml | 31 +++
|
||||
.../chrome/browser/app/ChromeActivity.java | 21 +-
|
||||
.../init/ChromeBrowserInitializer.java | 3 +
|
||||
.../PrivacyPreferencesManagerImpl.java | 42 ++++
|
||||
.../settings/UserAgentPreferences.java | 185 ++++++++++++++++++
|
||||
.../chromium/chrome/browser/tab/TabImpl.java | 83 +++++++-
|
||||
.../settings/UserAgentPreferences.java | 188 ++++++++++++++++++
|
||||
.../chromium/chrome/browser/tab/TabImpl.java | 71 +++++++
|
||||
.../chromium/chrome/browser/tab/TabUtils.java | 18 +-
|
||||
.../browser/android/content/content_utils.cc | 28 +++
|
||||
.../preferences/browser_prefs_android.cc | 7 +
|
||||
.../privacy_preferences_manager_impl.cc | 114 +++++++++++
|
||||
chrome/browser/android/tab_android.cc | 5 +-
|
||||
chrome/browser/android/tab_android.h | 3 +-
|
||||
.../browser/chrome_content_browser_client.cc | 8 +
|
||||
.../privacy_preferences_manager_impl.cc | 118 +++++++++++
|
||||
.../preferences/ChromePreferenceKeys.java | 7 +-
|
||||
.../settings/PrivacyPreferencesManager.java | 8 +
|
||||
.../org/chromium/chrome/browser/tab/Tab.java | 2 +
|
||||
.../browser/tabmodel/TabWindowManager.java | 8 +
|
||||
.../browser/tabmodel/TabWindowManager.java | 3 +
|
||||
.../tabmodel/TabWindowManagerImpl.java | 18 ++
|
||||
.../strings/android_chrome_strings.grd | 35 ++++
|
||||
chrome/common/pref_names.cc | 13 ++
|
||||
chrome/common/pref_names.h | 8 +
|
||||
.../widget/RadioButtonWithEditText.java | 11 ++
|
||||
.../widget/RadioButtonWithEditText.java | 11 +
|
||||
.../embedder_support/user_agent_utils.cc | 7 +
|
||||
.../navigation_controller_android.cc | 6 +-
|
||||
.../navigation_controller_android.h | 3 +-
|
||||
.../renderer_host/render_process_host_impl.cc | 1 +
|
||||
.../browser/web_contents/web_contents_impl.cc | 4 +-
|
||||
.../browser/web_contents/web_contents_impl.cc | 6 +
|
||||
.../framehost/NavigationControllerImpl.java | 6 +-
|
||||
content/renderer/render_thread_impl.cc | 1 -
|
||||
33 files changed, 767 insertions(+), 14 deletions(-)
|
||||
31 files changed, 749 insertions(+), 10 deletions(-)
|
||||
create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml
|
||||
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
|
||||
|
@ -48,8 +46,8 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin
|
|||
diff --git a/base/base_switches.cc b/base/base_switches.cc
|
||||
--- a/base/base_switches.cc
|
||||
+++ b/base/base_switches.cc
|
||||
@@ -164,6 +164,8 @@ const char kForceFieldTrialParams[] = "force-fieldtrial-params";
|
||||
const char kEnableThreadInstructionCount[] = "enable-thread-instruction-count";
|
||||
@@ -169,6 +169,8 @@ const char kEnableThreadInstructionCount[] = "enable-thread-instruction-count";
|
||||
extern const char kEnableCrashpad[] = "enable-crashpad";
|
||||
#endif
|
||||
|
||||
+const char kDesktopModeViewportMetaEnabled[] = "dm-viewport-meta-enabled";
|
||||
|
@ -60,7 +58,7 @@ diff --git a/base/base_switches.cc b/base/base_switches.cc
|
|||
diff --git a/base/base_switches.h b/base/base_switches.h
|
||||
--- a/base/base_switches.h
|
||||
+++ b/base/base_switches.h
|
||||
@@ -66,6 +66,8 @@ extern const char kEnableThreadInstructionCount[];
|
||||
@@ -70,6 +70,8 @@ extern const char kEnableCrashpad[];
|
||||
extern const char kSchedulerBoostUrgent[];
|
||||
#endif
|
||||
|
||||
|
@ -72,7 +70,7 @@ diff --git a/base/base_switches.h b/base/base_switches.h
|
|||
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
|
||||
--- a/chrome/android/chrome_java_resources.gni
|
||||
+++ b/chrome/android/chrome_java_resources.gni
|
||||
@@ -998,4 +998,6 @@ chrome_java_resources = [
|
||||
@@ -946,4 +946,6 @@ chrome_java_resources = [
|
||||
"java/res/xml/sync_and_services_preferences.xml",
|
||||
"java/res/xml/theme_preferences.xml",
|
||||
"java/res/xml/tracing_preferences.xml",
|
||||
|
@ -82,7 +80,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
|
|||
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
|
||||
--- a/chrome/android/chrome_java_sources.gni
|
||||
+++ b/chrome/android/chrome_java_sources.gni
|
||||
@@ -1155,6 +1155,7 @@ chrome_java_sources = [
|
||||
@@ -1145,6 +1145,7 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java",
|
||||
"java/src/org/chromium/chrome/browser/payments/ui/LineItem.java",
|
||||
"java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java",
|
||||
|
@ -94,7 +92,7 @@ diff --git a/chrome/android/java/res/layout/custom_useragent_preferences.xml b/c
|
|||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/layout/custom_useragent_preferences.xml
|
||||
@@ -0,0 +1,108 @@
|
||||
@@ -0,0 +1,106 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!--
|
||||
+ This file is part of Bromite.
|
||||
|
@ -118,8 +116,6 @@ new file mode 100644
|
|||
+<ScrollView
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
+ android:layout_weight="0"
|
||||
+ android:gravity="top"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content">
|
||||
+
|
||||
|
@ -254,65 +250,18 @@ new file mode 100644
|
|||
+ android:summaryOff="@string/option_desktop_flag_off" />
|
||||
+
|
||||
+</PreferenceScreen>
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
@@ -72,6 +72,7 @@ import org.chromium.chrome.browser.app.flags.ChromeCachedFlags;
|
||||
import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFactory;
|
||||
import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController;
|
||||
import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
|
||||
+import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
|
||||
@@ -209,6 +210,13 @@ import org.chromium.ui.widget.Toast;
|
||||
import org.chromium.url.GURL;
|
||||
import org.chromium.url.Origin;
|
||||
import org.chromium.webapk.lib.client.WebApkNavigationClient;
|
||||
+import org.chromium.chrome.browser.tabmodel.TabWindowManager;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
|
||||
+
|
||||
+import org.chromium.chrome.browser.tabmodel.TabWindowManager;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
|
||||
|
||||
import org.chromium.url.GURL;
|
||||
|
||||
@@ -2102,11 +2110,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
} 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) {
|
||||
- final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
final boolean usingDesktopUserAgent =
|
||||
currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent();
|
||||
- currentTab.getWebContents().getNavigationController().setUseDesktopUserAgent(
|
||||
- !usingDesktopUserAgent, reloadOnChange);
|
||||
+ SharedPreferencesManager.getInstance().writeBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, !usingDesktopUserAgent);
|
||||
+
|
||||
+ final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
|
||||
+ if (stickyDesktopModeEnabled) {
|
||||
+ TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(!usingDesktopUserAgent);
|
||||
+ } else {
|
||||
+ currentTab.SetOverrideUserAgent(!usingDesktopUserAgent);
|
||||
+ }
|
||||
RecordUserAction.record("MobileMenuRequestDesktopSite");
|
||||
} else if (id == R.id.reader_mode_prefs_id) {
|
||||
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
|
||||
@@ -47,6 +47,7 @@ import org.chromium.content_public.browser.SpeechRecognition;
|
||||
@@ -44,6 +44,7 @@ import org.chromium.content_public.browser.DeviceUtils;
|
||||
import org.chromium.content_public.browser.SpeechRecognition;
|
||||
import org.chromium.content_public.browser.UiThreadTaskTraits;
|
||||
import org.chromium.net.NetworkChangeNotifier;
|
||||
import org.chromium.ui.resources.ResourceExtractor;
|
||||
+import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -322,11 +323,13 @@ public class ChromeBrowserInitializer {
|
||||
@@ -305,11 +306,13 @@ public class ChromeBrowserInitializer {
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
@ -388,7 +337,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,185 @@
|
||||
@@ -0,0 +1,188 @@
|
||||
+/*
|
||||
+ This file is part of Bromite.
|
||||
+
|
||||
|
@ -476,6 +425,9 @@ new file mode 100644
|
|||
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
+ @Nullable Bundle savedInstanceState) {
|
||||
+ LinearLayout viewGroup = (LinearLayout) super.onCreateView(inflater, container, savedInstanceState);
|
||||
+ LinearLayout.LayoutParams params =
|
||||
+ new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
+ viewGroup.setLayoutParams(params);
|
||||
+ ScrollView view = (ScrollView) inflater.inflate(R.layout.custom_useragent_preferences, viewGroup, false);
|
||||
+ viewGroup.addView(view);
|
||||
+
|
||||
|
@ -577,28 +529,21 @@ new file mode 100644
|
|||
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
|
||||
@@ -61,6 +61,18 @@ import org.chromium.ui.base.WindowAndroid;
|
||||
@@ -64,6 +64,11 @@ import org.chromium.ui.base.WindowAndroid;
|
||||
import org.chromium.ui.util.ColorUtils;
|
||||
import org.chromium.url.GURL;
|
||||
import org.chromium.url.Origin;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+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;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+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}.
|
||||
@@ -481,6 +493,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
throw new RuntimeException("Tab.loadUrl called when no native side exists");
|
||||
}
|
||||
@@ -492,6 +497,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
// Request desktop sites for large screen tablets.
|
||||
params.setOverrideUserAgent(calculateUserAgentOverrideOption());
|
||||
|
||||
+ final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
|
||||
|
@ -628,34 +573,24 @@ 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, params.getUrl(),
|
||||
@@ -493,7 +530,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
params.getReferrer() != null ? params.getReferrer().getPolicy() : 0,
|
||||
params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(),
|
||||
params.getHasUserGesture(), params.getShouldClearHistoryList(),
|
||||
- params.getInputStartTimestamp(), params.getIntentReceivedTimestamp());
|
||||
+ params.getInputStartTimestamp(), params.getIntentReceivedTimestamp(),
|
||||
+ params.getUserAgentOverrideOption());
|
||||
|
||||
for (TabObserver observer : mObservers) {
|
||||
observer.onLoadUrl(this, params, loadType);
|
||||
@@ -1477,6 +1515,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
@@ -1507,6 +1537,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
if (mWebContents != null) mWebContents.getNavigationController().loadIfNecessary();
|
||||
mIsBeingRestored = true;
|
||||
for (TabObserver observer : mObservers) observer.onRestoreStarted(this);
|
||||
+
|
||||
+ if(overrideUserAgentWhenUnFrozen != UserAgentOverrideOption.INHERIT) {
|
||||
+ SetOverrideUserAgent(overrideUserAgentWhenUnFrozen == (int)UserAgentOverrideOption.TRUE ? true : false);
|
||||
+ SetOverrideUserAgent(overrideUserAgentWhenUnFrozen == (int)UserAgentOverrideOption.TRUE ? true : false,
|
||||
+ /*forcedByUser*/ true);
|
||||
+ }
|
||||
} finally {
|
||||
TraceEvent.end("Tab.restoreIfNeeded");
|
||||
}
|
||||
@@ -1596,6 +1638,42 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
}
|
||||
@@ -1674,6 +1708,43 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
/* forcedByUser */ false);
|
||||
}
|
||||
|
||||
+ int overrideUserAgentWhenUnFrozen = (int)UserAgentOverrideOption.INHERIT;
|
||||
+
|
||||
+ public void SetOverrideUserAgent(boolean usingDesktopUserAgent) {
|
||||
+ public void SetOverrideUserAgent(boolean usingDesktopUserAgent, boolean forcedByUser) {
|
||||
+ WebContents webContents = this.getWebContents();
|
||||
+ overrideUserAgentWhenUnFrozen = UserAgentOverrideOption.INHERIT;
|
||||
+
|
||||
|
@ -669,11 +604,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
|
|||
+ }
|
||||
+
|
||||
+ if (webContents != null) {
|
||||
+ ContentUtils.setUserAgentOverride(webContents);
|
||||
+ ContentUtils.setUserAgentOverride(webContents, /*forcedByUser*/ true);
|
||||
+
|
||||
+ NavigationController navigationController = webContents.getNavigationController();
|
||||
+ navigationController.setUseDesktopUserAgent(
|
||||
+ usingDesktopUserAgent, !this.isNativePage());
|
||||
+ if (forcedByUser) this.setUserForcedUserAgent();
|
||||
+ }
|
||||
+ else if (this.getPendingLoadParams() != null) {
|
||||
+ if (usingDesktopUserAgent) {
|
||||
|
@ -692,22 +628,47 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
|
|||
@NativeMethods
|
||||
interface Natives {
|
||||
TabImpl fromWebContents(WebContents webContents);
|
||||
@@ -1615,7 +1693,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
|
||||
ResourceRequestBody postData, int transition, String referrerUrl,
|
||||
int referrerPolicy, boolean isRendererInitiated, boolean shoulReplaceCurrentEntry,
|
||||
boolean hasUserGesture, boolean shouldClearHistoryList, long inputStartTimestamp,
|
||||
- long intentReceivedTimestamp);
|
||||
+ long intentReceivedTimestamp,
|
||||
+ int userAgentOverrideOption);
|
||||
void setActiveNavigationEntryTitleForUrl(long nativeTabAndroid, String url, String title);
|
||||
void loadOriginalImage(long nativeTabAndroid);
|
||||
void setAddApi2TransitionToFutureNavigations(long nativeTabAndroid, boolean shouldAdd);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
|
||||
@@ -20,6 +20,10 @@ import org.chromium.content_public.browser.WebContents;
|
||||
import org.chromium.ui.base.WindowAndroid;
|
||||
import org.chromium.ui.display.DisplayAndroidManager;
|
||||
|
||||
+import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
|
||||
+
|
||||
/**
|
||||
* Collection of utility methods that operates on Tab.
|
||||
*/
|
||||
@@ -82,10 +86,16 @@ public class TabUtils {
|
||||
* @param forcedByUser Whether this was triggered by users action.
|
||||
*/
|
||||
public static void switchUserAgent(Tab tab, boolean switchToDesktop, boolean forcedByUser) {
|
||||
- final boolean reloadOnChange = !tab.isNativePage();
|
||||
- tab.getWebContents().getNavigationController().setUseDesktopUserAgent(
|
||||
- switchToDesktop, reloadOnChange);
|
||||
- if (forcedByUser) ((TabImpl) tab).setUserForcedUserAgent();
|
||||
+ SharedPreferencesManager.getInstance().writeBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, switchToDesktop);
|
||||
+
|
||||
+ final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
|
||||
+ if (stickyDesktopModeEnabled) {
|
||||
+ TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(switchToDesktop);
|
||||
+ } else {
|
||||
+ tab.SetOverrideUserAgent(switchToDesktop, forcedByUser);
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/android/content/content_utils.cc
|
||||
--- a/chrome/browser/android/content/content_utils.cc
|
||||
+++ b/chrome/browser/android/content/content_utils.cc
|
||||
@@ -8,6 +8,20 @@
|
||||
#include "components/embedder_support/android/util/user_agent_utils.h"
|
||||
#include "components/version_info/version_info.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
|
||||
+#include "base/android/jni_android.h"
|
||||
+#include "base/android/scoped_java_ref.h"
|
||||
|
@ -725,11 +686,11 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an
|
|||
+
|
||||
static base::android::ScopedJavaLocalRef<jstring>
|
||||
JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) {
|
||||
return base::android::ConvertUTF8ToJavaString(env, GetUserAgent());
|
||||
@@ -16,6 +30,20 @@ JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) {
|
||||
static void JNI_ContentUtils_SetUserAgentOverride(
|
||||
return base::android::ConvertUTF8ToJavaString(
|
||||
@@ -18,6 +32,20 @@ static void JNI_ContentUtils_SetUserAgentOverride(
|
||||
JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& jweb_contents) {
|
||||
const base::android::JavaParamRef<jobject>& jweb_contents,
|
||||
jboolean j_override_in_new_tabs) {
|
||||
+ bool enabled =
|
||||
+ g_browser_process->local_state()->GetBoolean(prefs::kOverrideUserAgentDesktopModeEnabled);
|
||||
+
|
||||
|
@ -746,7 +707,7 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an
|
|||
+
|
||||
content::WebContents* web_contents =
|
||||
content::WebContents::FromJavaWebContents(jweb_contents);
|
||||
embedder_support::SetDesktopUserAgentOverride(web_contents,
|
||||
embedder_support::SetDesktopUserAgentOverride(
|
||||
diff --git a/chrome/browser/android/preferences/browser_prefs_android.cc b/chrome/browser/android/preferences/browser_prefs_android.cc
|
||||
--- a/chrome/browser/android/preferences/browser_prefs_android.cc
|
||||
+++ b/chrome/browser/android/preferences/browser_prefs_android.cc
|
||||
|
@ -772,7 +733,7 @@ diff --git a/chrome/browser/android/preferences/browser_prefs_android.cc b/chrom
|
|||
diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
|
||||
--- a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
|
||||
+++ b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
|
||||
@@ -12,6 +12,26 @@
|
||||
@@ -12,6 +12,30 @@
|
||||
#include "components/metrics/metrics_pref_names.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
|
||||
|
@ -783,6 +744,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
|
|||
+#include "content/common/renderer.mojom.h"
|
||||
+#include "chrome/browser/chrome_content_browser_client.h"
|
||||
+
|
||||
+#include "components/embedder_support/content_settings_utils.h"
|
||||
+#include "components/embedder_support/switches.h"
|
||||
+#include "components/embedder_support/user_agent_utils.h"
|
||||
+
|
||||
+#include "base/android/jni_android.h"
|
||||
+#include "base/android/jni_array.h"
|
||||
+#include "base/android/jni_string.h"
|
||||
|
@ -799,7 +764,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
|
|||
namespace {
|
||||
|
||||
PrefService* GetPrefService() {
|
||||
@@ -67,3 +87,97 @@ static void JNI_PrivacyPreferencesManagerImpl_SetNetworkPredictionEnabled(
|
||||
@@ -67,3 +91,97 @@ static void JNI_PrivacyPreferencesManagerImpl_SetNetworkPredictionEnabled(
|
||||
enabled ? chrome_browser_net::NETWORK_PREDICTION_WIFI_ONLY
|
||||
: chrome_browser_net::NETWORK_PREDICTION_NEVER);
|
||||
}
|
||||
|
@ -814,10 +779,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
|
|||
+
|
||||
+ base::CommandLine* parsed_command_line =
|
||||
+ base::CommandLine::ForCurrentProcess();
|
||||
+ parsed_command_line->RemoveSwitch(switches::kUserAgent);
|
||||
+ parsed_command_line->RemoveSwitch(embedder_support::kUserAgent);
|
||||
+ if (!ua.empty()) {
|
||||
+ if (overrideUserAgentEnabled) {
|
||||
+ parsed_command_line->AppendSwitchASCII(switches::kUserAgent, ua);
|
||||
+ parsed_command_line->AppendSwitchASCII(embedder_support::kUserAgent, ua);
|
||||
+ }
|
||||
+
|
||||
+ for (auto iter = content::RenderProcessHost::AllHostsIterator(); !iter.IsAtEnd();
|
||||
|
@ -897,71 +862,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
|
|||
+ enabled);
|
||||
+ UpdateOverrideUserAgent();
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
|
||||
--- a/chrome/browser/android/tab_android.cc
|
||||
+++ b/chrome/browser/android/tab_android.cc
|
||||
@@ -373,7 +373,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(
|
||||
jboolean has_user_gesture,
|
||||
jboolean should_clear_history_list,
|
||||
jlong input_start_timestamp,
|
||||
- jlong intent_received_timestamp) {
|
||||
+ jlong intent_received_timestamp,
|
||||
+ jint user_agent_override_option) {
|
||||
if (!web_contents())
|
||||
return PAGE_LOAD_FAILED;
|
||||
|
||||
@@ -430,6 +431,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(
|
||||
load_params.input_start =
|
||||
base::TimeTicks::FromUptimeMillis(intent_received_timestamp);
|
||||
}
|
||||
+ load_params.override_user_agent = static_cast<NavigationController::UserAgentOverrideOption>(
|
||||
+ user_agent_override_option);
|
||||
web_contents()->GetController().LoadURLWithParams(load_params);
|
||||
}
|
||||
return DEFAULT_PAGE_LOAD;
|
||||
diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h
|
||||
--- a/chrome/browser/android/tab_android.h
|
||||
+++ b/chrome/browser/android/tab_android.h
|
||||
@@ -167,7 +167,8 @@ class TabAndroid : public base::SupportsUserData {
|
||||
jboolean has_user_gesture,
|
||||
jboolean should_clear_history_list,
|
||||
jlong omnibox_input_received_timestamp,
|
||||
- jlong intent_received_timestamp);
|
||||
+ jlong intent_received_timestamp,
|
||||
+ jint user_agent_override_option);
|
||||
void SetActiveNavigationEntryTitleForUrl(
|
||||
JNIEnv* env,
|
||||
const base::android::JavaParamRef<jstring>& jurl,
|
||||
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
||||
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -1286,6 +1286,13 @@ std::string GetPlatformForUAMetadata() {
|
||||
blink::UserAgentMetadata GetUserAgentMetadata() {
|
||||
blink::UserAgentMetadata metadata;
|
||||
|
||||
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||
+ if (command_line->HasSwitch(switches::kUserAgent)) {
|
||||
+ std::string ua = command_line->GetSwitchValueASCII(switches::kUserAgent);
|
||||
+
|
||||
+ return metadata;
|
||||
+ }
|
||||
+
|
||||
metadata.brand_version_list = GetBrandVersionList();
|
||||
metadata.full_version = version_info::GetVersionNumber();
|
||||
metadata.platform = GetPlatformForUAMetadata();
|
||||
@@ -2379,6 +2386,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
|
||||
switches::kDisableTargetBlankImpliesNoOpener);
|
||||
}
|
||||
|
||||
+
|
||||
#if defined(OS_ANDROID)
|
||||
// Communicating to content/ for BackForwardCache.
|
||||
if (prefs->HasPrefPath(policy::policy_prefs::kBackForwardCacheEnabled) &&
|
||||
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
|
||||
@@ -828,6 +828,9 @@ public final class ChromePreferenceKeys {
|
||||
@@ -881,6 +881,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*");
|
||||
|
||||
|
@ -971,7 +875,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
|
|||
/**
|
||||
* These values are currently used as SharedPreferences keys, along with the keys in
|
||||
* {@link GrandfatheredChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys
|
||||
@@ -890,7 +893,9 @@ public final class ChromePreferenceKeys {
|
||||
@@ -954,7 +957,9 @@ public final class ChromePreferenceKeys {
|
||||
SETTINGS_SAFETY_CHECK_RUN_COUNTER,
|
||||
SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP,
|
||||
TWA_DISCLOSURE_SEEN_PACKAGES,
|
||||
|
@ -1005,7 +909,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav
|
|||
*/
|
||||
void setIsTabStateDirty(boolean isTabStateDirty);
|
||||
|
||||
+ void SetOverrideUserAgent(boolean usingDesktopUserAgent);
|
||||
+ void SetOverrideUserAgent(boolean usingDesktopUserAgent, boolean forcedByUser);
|
||||
+
|
||||
/**
|
||||
* If set to true, any future navigations in the tab automatically get
|
||||
|
@ -1013,19 +917,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav
|
|||
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
|
||||
--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
|
||||
+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
|
||||
@@ -10,6 +10,11 @@ import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tabmodel.NextTabPolicy.NextTabPolicySupplier;
|
||||
import org.chromium.ui.base.WindowAndroid;
|
||||
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
|
||||
+
|
||||
+import java.util.List;
|
||||
+
|
||||
/**
|
||||
* Manages multiple {@link TabModelSelector} instances, each owned by different {@link Activity}s.
|
||||
*
|
||||
@@ -76,4 +81,7 @@ public interface TabWindowManager {
|
||||
@@ -79,4 +79,7 @@ public interface TabWindowManager {
|
||||
* @return Specified {@link Tab} or {@code null} if the {@link Tab} is not found.
|
||||
*/
|
||||
Tab getTabById(int tabId);
|
||||
|
@ -1036,7 +928,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
|
|||
diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
|
||||
--- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
|
||||
+++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
|
||||
@@ -119,6 +119,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
|
||||
@@ -128,6 +128,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -1051,7 +943,7 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro
|
|||
+
|
||||
+ for (int tabIdex = 0; tabIdex < model.getCount(); tabIdex++) {
|
||||
+ Tab theTab = model.getTabAt(tabIdex);
|
||||
+ theTab.SetOverrideUserAgent(usingDesktopUserAgent);
|
||||
+ theTab.SetOverrideUserAgent(usingDesktopUserAgent, /*forcedByUser*/ true);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
@ -1109,7 +1001,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
||||
--- a/chrome/common/pref_names.cc
|
||||
+++ b/chrome/common/pref_names.cc
|
||||
@@ -418,6 +418,19 @@ const char kAllowJavascriptAppleEvents[] =
|
||||
@@ -417,6 +417,19 @@ const char kAllowJavascriptAppleEvents[] =
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1132,7 +1024,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
|||
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||
--- a/chrome/common/pref_names.h
|
||||
+++ b/chrome/common/pref_names.h
|
||||
@@ -1120,6 +1120,14 @@ extern const char kCartModuleWelcomeSurfaceShownTimes[];
|
||||
@@ -1135,6 +1135,14 @@ extern const char kSuppressDifferentOriginSubframeJSDialogs[];
|
||||
extern const char kIncognitoTabHistoryEnabled[];
|
||||
#endif
|
||||
|
||||
|
@ -1168,6 +1060,23 @@ diff --git a/components/browser_ui/widget/android/java/src/org/chromium/componen
|
|||
}
|
||||
|
||||
/**
|
||||
diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc
|
||||
--- a/components/embedder_support/user_agent_utils.cc
|
||||
+++ b/components/embedder_support/user_agent_utils.cc
|
||||
@@ -134,6 +134,13 @@ std::string GetPlatformForUAMetadata() {
|
||||
blink::UserAgentMetadata GetUserAgentMetadata() {
|
||||
blink::UserAgentMetadata metadata;
|
||||
|
||||
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||
+ if (command_line->HasSwitch(kUserAgent)) {
|
||||
+ std::string ua = command_line->GetSwitchValueASCII(kUserAgent);
|
||||
+
|
||||
+ return metadata;
|
||||
+ }
|
||||
+
|
||||
metadata.brand_version_list = GetBrandVersionList();
|
||||
metadata.full_version = version_info::GetVersionNumber();
|
||||
metadata.platform = GetPlatformForUAMetadata();
|
||||
diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/content/browser/renderer_host/navigation_controller_android.cc
|
||||
--- a/content/browser/renderer_host/navigation_controller_android.cc
|
||||
+++ b/content/browser/renderer_host/navigation_controller_android.cc
|
||||
|
@ -1207,7 +1116,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con
|
|||
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
|
||||
--- a/content/browser/renderer_host/render_process_host_impl.cc
|
||||
+++ b/content/browser/renderer_host/render_process_host_impl.cc
|
||||
@@ -3366,6 +3366,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
|
||||
@@ -3430,6 +3430,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
|
||||
#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||
switches::kSchedulerBoostUrgent,
|
||||
#endif
|
||||
|
@ -1226,16 +1135,18 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser
|
|||
#include "base/threading/thread_task_runner_handle.h"
|
||||
#include "base/time/time.h"
|
||||
#include "base/trace_event/optional_trace_event.h"
|
||||
@@ -2447,7 +2448,8 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
|
||||
prefs.threaded_scrolling_enabled =
|
||||
!command_line.HasSwitch(blink::switches::kDisableThreadedScrolling);
|
||||
@@ -2510,6 +2511,11 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
|
||||
prefs.viewport_meta_enabled = false;
|
||||
}
|
||||
|
||||
- if (IsOverridingUserAgent())
|
||||
+ if (IsOverridingUserAgent() &&
|
||||
+ !command_line.HasSwitch(switches::kDesktopModeViewportMetaEnabled))
|
||||
prefs.viewport_meta_enabled = false;
|
||||
|
||||
+ !command_line.HasSwitch(switches::kDesktopModeViewportMetaEnabled)) {
|
||||
+ prefs.viewport_meta_enabled = false;
|
||||
+ }
|
||||
+
|
||||
prefs.main_frame_resizes_are_orientation_changes =
|
||||
command_line.HasSwitch(switches::kMainFrameResizesAreOrientationChanges);
|
||||
|
||||
diff --git a/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java
|
||||
--- a/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java
|
||||
+++ b/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java
|
||||
|
@ -1262,7 +1173,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh
|
|||
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
|
||||
--- a/content/renderer/render_thread_impl.cc
|
||||
+++ b/content/renderer/render_thread_impl.cc
|
||||
@@ -1673,7 +1673,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
|
||||
@@ -1636,7 +1636,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
|
||||
}
|
||||
|
||||
void RenderThreadImpl::SetUserAgent(const std::string& user_agent) {
|
||||
|
|
Loading…
Add table
Reference in a new issue