Merge pull request #787 from uazo/fix-780

Add flag to always view the desktop site for all websites
This commit is contained in:
Carl 2020-11-02 22:04:00 +01:00 committed by GitHub
commit ed5a1533d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 472 additions and 0 deletions

View file

@ -150,3 +150,4 @@ Remove-weblayer-dependency-on-Play-Services.patch
Timezone-customization.patch
Move-some-account-settings-back-to-privacy-settings.patch
Automated-domain-substitution.patch
Add-a-flag-to-always-view-desktop-site-for-all-websites.patch

View file

@ -0,0 +1,471 @@
From: uazo <uazo@users.noreply.github.com>
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 | 59 +++++++++++++++++++
.../chromium/chrome/browser/tab/TabImpl.java | 51 +++++++++++++++-
.../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, 218 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
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 = [
"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",
]
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
@@ -1309,6 +1309,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java",
"java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
"java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
+ "java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.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/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
@@ -104,6 +104,11 @@
android:key="content_settings"
android:order="20"
android:title="@string/prefs_site_settings"/>
+ <Preference
+ android:fragment="org.chromium.chrome.browser.settings.UserAgentPreferences"
+ android:key="useragent_settings"
+ android:order="20"
+ android:title="@string/prefs_useragent_settings"/>
<Preference
android:fragment="org.chromium.chrome.browser.language.settings.LanguageSettings"
android:key="languages"
diff --git a/chrome/android/java/res/xml/useragent_preferences.xml b/chrome/android/java/res/xml/useragent_preferences.xml
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/xml/useragent_preferences.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is part of Bromite.
+
+ Bromite is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bromite is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bromite. If not, see <https://www.gnu.org/licenses/>.
+-->
+
+<!-- Layout used by the UserAgentPreferences. -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="desktop_mode_switch"
+ android:summaryOn="@string/option_desktop_flag_on"
+ 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
@@ -202,6 +202,9 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.widget.Toast;
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 java.util.ArrayList;
import java.util.List;
@@ -1987,11 +1990,19 @@ 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) {
+ TabWindowManager.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/settings/UserAgentPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
@@ -0,0 +1,59 @@
+/*
+ This file is part of Bromite.
+
+ Bromite is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bromite is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bromite. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+package org.chromium.chrome.browser.settings;
+
+import android.os.Bundle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
+
+import org.chromium.components.browser_ui.settings.SettingsUtils;
+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.R;
+
+/**
+ * Fragment that allows the user to configure User Agent related preferences.
+ */
+public class UserAgentPreferences extends PreferenceFragmentCompat {
+ private static final String PREF_STICK_DESKTOP_MODE_SWITCH = "desktop_mode_switch";
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ getActivity().setTitle(R.string.useragent_settings_title);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.useragent_preferences);
+
+ 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);
+
+ final boolean alwaysDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false);
+ TabWindowManager.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled);
+ return true;
+ });
+ }
+ }
+}
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;
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;
/**
* Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}.
@@ -446,6 +450,18 @@ 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(
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false);
+ if (alwaysDesktopModeEnabled) {
+ params.setOverrideUserAgent((int)UserAgentOverrideOption.TRUE);
+ } else {
+ params.setOverrideUserAgent((int)UserAgentOverrideOption.FALSE);
+ }
+ }
+
// 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 {
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);
@@ -1380,6 +1397,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);
+ }
} finally {
TraceEvent.end("Tab.restoreIfNeeded");
}
@@ -1497,6 +1518,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
}
}
+ int overrideUserAgentWhenUnFrozen = (int)UserAgentOverrideOption.INHERIT;
+
+ public void SetOverrideUserAgent(boolean usingDesktopUserAgent) {
+ overrideUserAgentWhenUnFrozen = UserAgentOverrideOption.INHERIT;
+
+ WebContents webContents = this.getWebContents();
+ if (webContents != null) {
+ NavigationController navigationController = webContents.getNavigationController();
+ navigationController.setUseDesktopUserAgent(
+ usingDesktopUserAgent, !this.isNativePage());
+ }
+ else if (this.getPendingLoadParams() != null) {
+ if (usingDesktopUserAgent) {
+ this.getPendingLoadParams().setOverrideUserAgent((int)UserAgentOverrideOption.TRUE);
+ }
+ else {
+ this.getPendingLoadParams().setOverrideUserAgent((int)UserAgentOverrideOption.FALSE);
+ }
+ }
+ else {
+ overrideUserAgentWhenUnFrozen = usingDesktopUserAgent ? UserAgentOverrideOption.TRUE :
+ UserAgentOverrideOption.FALSE;
+ }
+ }
+
@NativeMethods
interface Natives {
void init(TabImpl caller);
@@ -1517,7 +1563,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
String referrerUrl, int referrerPolicy, boolean isRendererInitiated,
boolean shoulReplaceCurrentEntry, boolean hasUserGesture,
boolean shouldClearHistoryList, long inputStartTimestamp,
- long intentReceivedTimestamp);
+ long intentReceivedTimestamp,
+ int userAgentOverrideOption);
void setActiveNavigationEntryTitleForUrl(
long nativeTabAndroid, TabImpl caller, String url, String title);
void loadOriginalImage(long nativeTabAndroid, TabImpl caller);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
@@ -248,4 +248,24 @@ public class TabWindowManager implements ActivityStateListener {
AsyncTabParamsManager.getInstance(), true, true, false);
}
}
+
+ public static void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent) {
+ TabWindowManager tabWindowManagerSingleton = TabWindowManager.getInstance();
+
+ List<TabModelSelector> mSelectors = tabWindowManagerSingleton.mSelectors;
+ for (int selectorIndex = 0; selectorIndex < mSelectors.size(); selectorIndex++) {
+ TabModelSelector selector = mSelectors.get(selectorIndex);
+ if (selector != null) {
+ List<TabModel> models = selector.getModels();
+ for (int modelIndex = 0; modelIndex < models.size(); modelIndex++) {
+ TabModel model = models.get(modelIndex);
+
+ for (int tabIdex = 0; tabIdex < model.getCount(); tabIdex++) {
+ Tab theTab = model.getTabAt(tabIdex);
+ theTab.SetOverrideUserAgent(usingDesktopUserAgent);
+ }
+ }
+ }
+ }
+ }
}
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
@@ -363,7 +363,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;
@@ -420,6 +421,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
@@ -148,7 +148,8 @@ class TabAndroid {
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<jobject>& obj,
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
@@ -778,6 +778,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*");
+ public static final String USERAGENT_STICKY_DESKTOP_MODE = "Chrome.UserAgent.StickyDesktopMode";
+ public static final String USERAGENT_ALWAYS_DESKTOP_MODE = "Chrome.UserAgent.AlwaysDesktopMode";
+
/**
* These values are currently used as SharedPreferences keys, along with the keys in
* {@link GrandfatheredChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys
@@ -820,7 +823,9 @@ public final class ChromePreferenceKeys {
PROMO_TIMES_SEEN.pattern(),
SETTINGS_SAFETY_CHECK_LAST_RUN_TIMESTAMP,
SETTINGS_SAFETY_CHECK_RUN_COUNTER,
- TWA_DISCLOSURE_SEEN_PACKAGES
+ TWA_DISCLOSURE_SEEN_PACKAGES,
+ USERAGENT_STICKY_DESKTOP_MODE,
+ USERAGENT_ALWAYS_DESKTOP_MODE
);
// clang-format on
}
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java
@@ -265,4 +265,6 @@ public interface Tab extends TabLifecycle {
* @param isDirty Whether the Tab's state has changed.
*/
void setIsTabStateDirty(boolean isTabStateDirty);
+
+ void SetOverrideUserAgent(boolean usingDesktopUserAgent);
}
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -228,6 +228,20 @@ CHAR-LIMIT guidelines:
Visit help page
</message>
+ <!-- User Agent settings -->
+ <message name="IDS_PREFS_USERAGENT_SETTINGS" desc="Title of the User Agent preference. [CHAR-LIMIT=32]">
+ User Agent
+ </message>
+ <message name="IDS_USERAGENT_SETTINGS_TITLE" desc="Title of the User Agent screen. [CHAR-LIMIT=32]">
+ Customize User Agent
+ </message>
+ <message name="IDS_OPTION_DESKTOP_FLAG_ON" desc="The label of the option that allows users to sticky desktop mode view flag under hambuger menu.">
+ Sticky flag for desktop mode view hambuger flag (for all tabs)
+ </message>
+ <message name="IDS_OPTION_DESKTOP_FLAG_OFF" desc="The label of the option that revert the hambuger menu flag to actual behaviour.">
+ Use hambuger flag for desktop view mode only for current tab
+ </message>
+
<!-- Notification channels -->
<message name="IDS_NOTIFICATION_CATEGORY_GROUP_GENERAL" desc='Subheading for "General" section of a list of notification categories. [CHAR-LIMIT=32]'>
General
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
@@ -235,7 +235,8 @@ void NavigationControllerAndroid::LoadUrl(
const JavaParamRef<jstring>& data_url_as_string,
jboolean can_load_local_resources,
jboolean is_renderer_initiated,
- jboolean should_replace_current_entry) {
+ jboolean should_replace_current_entry,
+ jint user_agent_override_option) {
DCHECK(url);
NavigationController::LoadURLParams params(
GURL(ConvertJavaStringToUTF8(env, url)));
@@ -289,6 +290,9 @@ void NavigationControllerAndroid::LoadUrl(
Referrer::ConvertToPolicy(referrer_policy));
}
+ params.override_user_agent = static_cast<NavigationController::UserAgentOverrideOption>(
+ user_agent_override_option);
+
navigation_controller_->LoadURLWithParams(params);
}
diff --git a/content/browser/frame_host/navigation_controller_android.h b/content/browser/frame_host/navigation_controller_android.h
--- a/content/browser/frame_host/navigation_controller_android.h
+++ b/content/browser/frame_host/navigation_controller_android.h
@@ -80,7 +80,8 @@ class CONTENT_EXPORT NavigationControllerAndroid {
const base::android::JavaParamRef<jstring>& data_url_as_string,
jboolean can_load_local_resources,
jboolean is_renderer_initiated,
- jboolean should_replace_current_entry);
+ jboolean should_replace_current_entry,
+ jint user_agent_override_option);
void ClearSslPreferences(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& /* obj */);
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
@@ -168,7 +168,8 @@ import org.chromium.content_public.common.ResourceRequestBody;
params.getUserAgentOverrideOption(), params.getExtraHeadersString(),
params.getPostData(), params.getBaseUrl(), params.getVirtualUrlForDataUrl(),
params.getDataUrlAsString(), params.getCanLoadLocalResources(),
- params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry());
+ params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(),
+ params.getUserAgentOverrideOption());
}
}
@@ -347,7 +348,8 @@ import org.chromium.content_public.common.ResourceRequestBody;
int referrerPolicy, int uaOverrideOption, String extraHeaders,
ResourceRequestBody postData, String baseUrlForDataUrl, String virtualUrlForDataUrl,
String dataUrlAsString, boolean canLoadLocalResources, boolean isRendererInitiated,
- boolean shouldReplaceCurrentEntry);
+ boolean shouldReplaceCurrentEntry,
+ int userAgentOverrideOption);
void clearHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller);
int getNavigationHistory(long nativeNavigationControllerAndroid,
NavigationControllerImpl caller, Object history);