Merge pull request #787 from uazo/fix-780
Add flag to always view the desktop site for all websites
This commit is contained in:
commit
ed5a1533d9
2 changed files with 472 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
Loading…
Add table
Reference in a new issue