updated patch for v90

This commit is contained in:
Carmelo Messina 2021-04-09 22:14:23 +02:00
parent b5a8dc1ebf
commit 1aef9679ae
2 changed files with 122 additions and 210 deletions

View file

@ -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

View file

@ -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) {