diff --git a/build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch b/build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch index e1ab203b..2a1a9282 100644 --- a/build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch +++ b/build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch @@ -3,34 +3,70 @@ Date: Mon, 26 Oct 2020 16:50:15 +0000 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 | 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 +- - .../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, 243 insertions(+), 12 deletions(-) + base/base_switches.cc | 2 + + 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 ++++++++++ + .../android/java/res/xml/main_preferences.xml | 5 + + .../java/res/xml/useragent_preferences.xml | 31 +++ + .../chrome/browser/app/ChromeActivity.java | 17 +- + .../settings/PrivacyPreferencesManager.java | 30 +++ + .../settings/UserAgentPreferences.java | 186 ++++++++++++++++++ + .../chromium/chrome/browser/tab/TabImpl.java | 77 +++++++- + .../browser/tabmodel/TabWindowManager.java | 23 +++ + .../browser/android/content/content_utils.cc | 64 ++++-- + .../preferences/browser_prefs_android.cc | 7 + + .../privacy_preferences_manager.cc | 93 +++++++++ + chrome/browser/android/tab_android.cc | 5 +- + chrome/browser/android/tab_android.h | 3 +- + .../preferences/ChromePreferenceKeys.java | 7 +- + .../org/chromium/chrome/browser/tab/Tab.java | 2 + + .../strings/android_chrome_strings.grd | 35 ++++ + chrome/common/pref_names.cc | 13 ++ + chrome/common/pref_names.h | 8 + + .../android/browser_startup_controller.cc | 35 ++++ + .../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 +- + .../framehost/NavigationControllerImpl.java | 6 +- + 28 files changed, 746 insertions(+), 30 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 +diff --git a/base/base_switches.cc b/base/base_switches.cc +--- a/base/base_switches.cc ++++ b/base/base_switches.cc +@@ -160,4 +160,6 @@ const char kForceFieldTrialParams[] = "force-fieldtrial-params"; + const char kEnableThreadInstructionCount[] = "enable-thread-instruction-count"; + #endif + ++const char kDesktopModeViewportMetaEnabled[] = "dm-viewport-meta-enabled"; ++ + } // namespace switches +diff --git a/base/base_switches.h b/base/base_switches.h +--- a/base/base_switches.h ++++ b/base/base_switches.h +@@ -59,6 +59,8 @@ extern const char kForceFieldTrialParams[]; + extern const char kEnableThreadInstructionCount[]; + #endif + ++extern const char kDesktopModeViewportMetaEnabled[]; ++ + } // namespace switches + + #endif // 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 -@@ -1130,4 +1130,5 @@ chrome_java_resources = [ +@@ -1130,4 +1130,6 @@ chrome_java_resources = [ "java/res/xml/sync_and_services_preferences.xml", "java/res/xml/theme_preferences.xml", "java/res/xml/tracing_preferences.xml", + "java/res/xml/useragent_preferences.xml", ++ "java/res/layout/custom_useragent_preferences.xml", ] diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni @@ -43,6 +79,119 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/photo_picker/FileEnumWorkerTask.java", "java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialog.java", "java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerToolbar.java", +diff --git a/chrome/android/java/res/layout/custom_useragent_preferences.xml b/chrome/android/java/res/layout/custom_useragent_preferences.xml +new file mode 100644 +--- /dev/null ++++ b/chrome/android/java/res/layout/custom_useragent_preferences.xml +@@ -0,0 +1,108 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml @@ -62,7 +211,7 @@ diff --git a/chrome/android/java/res/xml/useragent_preferences.xml b/chrome/andr new file mode 100644 --- /dev/null +++ b/chrome/android/java/res/xml/useragent_preferences.xml -@@ -0,0 +1,30 @@ +@@ -0,0 +1,31 @@ + + General +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 +@@ -3105,4 +3105,17 @@ const char kIncognitoTabHistoryEnabled[] = + "incognito_tab_history_enabled"; + #endif + ++#if defined(OS_ANDROID) ++const char kOverrideUserAgentEnabled[] = ++ "override_user_agent_enabled"; ++const char kOverrideUserAgent[] = ++ "override_user_agent"; ++const char kOverrideUserAgentDesktopModeEnabled[] = ++ "override_user_agent_dm_enabled"; ++const char kOverrideUserAgentDesktopMode[] = ++ "override_user_agent_dm"; ++const char kDesktopModeViewportMetaEnabled[] = ++ "dm-viewport-meta-enabled"; ++#endif ++ + } // namespace prefs +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 +@@ -1091,6 +1091,14 @@ extern const char kShowCaretBrowsingDialog[]; + extern const char kIncognitoTabHistoryEnabled[]; + #endif + ++#if defined(OS_ANDROID) ++extern const char kOverrideUserAgentEnabled[]; ++extern const char kOverrideUserAgent[]; ++extern const char kOverrideUserAgentDesktopModeEnabled[]; ++extern const char kOverrideUserAgentDesktopMode[]; ++extern const char kDesktopModeViewportMetaEnabled[]; ++#endif ++ + } // namespace prefs + + #endif // CHROME_COMMON_PREF_NAMES_H_ +diff --git a/content/browser/android/browser_startup_controller.cc b/content/browser/android/browser_startup_controller.cc +--- a/content/browser/android/browser_startup_controller.cc ++++ b/content/browser/android/browser_startup_controller.cc +@@ -10,11 +10,46 @@ + #include "content/browser/browser_main_loop.h" + #include "content/public/android/content_jni_headers/BrowserStartupControllerImpl_jni.h" + ++#include "base/logging.h" ++#include "base/command_line.h" ++#include "base/base_switches.h" ++#include "components/prefs/pref_service.h" ++#include "chrome/browser/browser_process.h" ++#include "chrome/common/pref_names.h" ++#include "chrome/common/chrome_switches.h" ++#include "net/http/http_util.h" ++ + using base::android::JavaParamRef; + + namespace content { + + void BrowserStartupComplete(int result) { ++ ++ LOG(INFO) << "---Checking user agent override status"; ++ ++ base::CommandLine* parsed_command_line = ++ base::CommandLine::ForCurrentProcess(); ++ ++ parsed_command_line->RemoveSwitch(switches::kUserAgent); ++ ++ PrefService* local_state = g_browser_process->local_state(); ++ bool overrideUserAgentEnabled = ++ local_state->GetBoolean(prefs::kOverrideUserAgentEnabled); ++ if (overrideUserAgentEnabled) { ++ std::string ua = local_state->GetString(prefs::kOverrideUserAgent); ++ if (net::HttpUtil::IsValidHeaderValue(ua)) { ++ parsed_command_line->AppendSwitchASCII(switches::kUserAgent, ++ ua); ++ } ++ else { ++ LOG(INFO) << "Ignored invalid value for ua --" << ua; ++ } ++ ++ parsed_command_line->RemoveSwitch(switches::kDesktopModeViewportMetaEnabled); ++ if (local_state->GetBoolean(prefs::kDesktopModeViewportMetaEnabled)) ++ parsed_command_line->AppendSwitch(switches::kDesktopModeViewportMetaEnabled); ++ } ++ + JNIEnv* env = base::android::AttachCurrentThread(); + Java_BrowserStartupControllerImpl_browserStartupComplete(env, result); + } diff --git a/content/browser/frame_host/navigation_controller_android.cc b/content/browser/frame_host/navigation_controller_android.cc --- a/content/browser/frame_host/navigation_controller_android.cc +++ b/content/browser/frame_host/navigation_controller_android.cc @@ -471,6 +1123,38 @@ diff --git a/content/browser/frame_host/navigation_controller_android.h b/conten void ClearSslPreferences( JNIEnv* env, const base::android::JavaParamRef& /* obj */); +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 +@@ -3503,6 +3503,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( + switches::kIpcDumpDirectory, + switches::kIpcFuzzerTestcase, + #endif ++ switches::kDesktopModeViewportMetaEnabled, + }; + renderer_cmd->CopySwitchesFrom(browser_cmd, kSwitchNames, + base::size(kSwitchNames)); +diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc +--- a/content/browser/web_contents/web_contents_impl.cc ++++ b/content/browser/web_contents/web_contents_impl.cc +@@ -37,6 +37,7 @@ + #include "base/strings/string_util.h" + #include "base/strings/utf_string_conversions.h" + #include "base/system/sys_info.h" ++#include "base/base_switches.h" + #include "base/threading/thread_task_runner_handle.h" + #include "base/time/time.h" + #include "base/trace_event/trace_event.h" +@@ -2319,7 +2320,8 @@ const WebPreferences WebContentsImpl::ComputeWebPreferences() { + + prefs.viewport_enabled = command_line.HasSwitch(switches::kEnableViewport); + +- if (IsOverridingUserAgent()) ++ if (IsOverridingUserAgent() && ++ !command_line.HasSwitch(switches::kDesktopModeViewportMetaEnabled)) + prefs.viewport_meta_enabled = false; + + prefs.main_frame_resizes_are_orientation_changes = 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