Patches for 144 (need some checks)

This commit is contained in:
Carmelo Messina
2026-01-15 12:59:32 +01:00
parent 558348760f
commit 0f2a45495e
15 changed files with 996 additions and 1117 deletions
@@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../AppMenuPropertiesDelegateImpl.java | 7 +-
.../ChromeContextMenuPopulator.java | 6 +-
.../CustomTabActivityLifecycleUmaTracker.java | 31 ----
.../CustomTabAppMenuPropertiesDelegate.java | 4 +
.../CustomTabAppMenuPropertiesDelegate.java | 5 +
.../CustomTabIntentDataProvider.java | 10 +
.../browser/download/DownloadUtils.java | 13 +-
.../history/HistoryContentManager.java | 9 +-
@@ -88,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../add-an-always-incognito-mode.inc | 1 +
.../add-an-always-incognito-mode.inc | 3 +
.../add-an-always-incognito-mode.inc | 1 +
69 files changed, 806 insertions(+), 106 deletions(-)
69 files changed, 807 insertions(+), 106 deletions(-)
create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java
@@ -101,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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
@@ -650,6 +650,7 @@ chrome_java_resources = [
@@ -669,6 +669,7 @@ chrome_java_resources = [
"java/res/xml/main_preferences.xml",
"java/res/xml/manage_sync_preferences.xml",
"java/res/xml/personalize_google_services_preferences.xml",
@@ -120,7 +120,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
"java/src/org/chromium/chrome/browser/ActivityTabProvider.java",
"java/src/org/chromium/chrome/browser/ActivityUtils.java",
@@ -936,6 +937,7 @@ chrome_java_sources = [
@@ -949,6 +950,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/privacy/settings/PasswordEchoSettingHandlerFactory.java",
"java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java",
"java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java",
@@ -173,7 +173,7 @@ new file mode 100644
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -90,6 +90,11 @@ found in the LICENSE file.
@@ -84,6 +84,11 @@ found in the LICENSE file.
android:key="secure_dns"
android:title="@string/settings_secure_dns_title"
android:fragment="org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings" />
@@ -258,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.IntentHandler.ExternalAppId;
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
import org.chromium.chrome.browser.accessibility.settings.CaretBrowsingDialog;
@@ -825,15 +829,20 @@ public class ChromeTabbedActivity extends ChromeActivity {
@@ -819,15 +823,20 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
BrowserWindowType.NORMAL, currentTabModel, mMultiInstanceManager);
// For saving non-incognito tab closures for Recent Tabs.
@@ -286,7 +286,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
// Defer creation of this helper so it triggers after TabGroupModelFilter observers.
mUndoRefocusHelper =
new UndoRefocusHelper(
@@ -3274,7 +3283,7 @@ public class ChromeTabbedActivity extends ChromeActivity {
@@ -3282,7 +3291,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
// We determine SupportedProfileType in onPreCreate().
// We determine the model as soon as possible so every systems get initialized coherently.
@@ -298,15 +298,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
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
@@ -101,6 +101,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
@@ -106,6 +106,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
import org.chromium.chrome.browser.desktop_site.DesktopSiteUtils;
import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.devtools.DevToolsWindowAndroid;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.dom_distiller.DomDistillerUiUtils;
import org.chromium.chrome.browser.dom_distiller.ReaderModeManager;
import org.chromium.chrome.browser.download.DownloadManagerService;
@@ -2144,6 +2145,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2189,6 +2190,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
@@ -319,7 +319,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -92,6 +92,8 @@ import java.util.Iterator;
@@ -93,6 +93,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;
@@ -328,7 +328,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
/**
* Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu
* items based on activity state.
@@ -633,8 +635,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
@@ -669,8 +671,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
&& !isNativePage
&& !isFileScheme
&& !isContentScheme
@@ -343,7 +343,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -41,6 +41,7 @@ import org.chromium.base.shared_preferences.SharedPreferencesManager;
@@ -43,6 +43,7 @@ import org.chromium.base.shared_preferences.SharedPreferencesManager;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.R;
@@ -351,7 +351,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ContextMenuItemType;
@@ -437,6 +438,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
@@ -452,6 +453,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
mShowEphemeralTabNewLabel = null;
mCustomActionMap.clear();
@@ -361,7 +361,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
List<ModelList> groupedItems = new ArrayList<>();
if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) {
@@ -508,7 +512,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
@@ -523,7 +527,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
}
}
if (FirstRunStatus.getFirstRunFlowComplete()) {
@@ -422,20 +422,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
import org.chromium.chrome.browser.DefaultBrowserInfo;
import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
@@ -248,6 +249,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
openInChromeItemVisible = false;
@@ -240,6 +241,10 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
tryAddingReadAloud = false;
}
+ if (AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) {
+ downloadItemVisible = true;
+ }
boolean isNativePage =
url.getScheme().equals(UrlConstants.CHROME_SCHEME)
+ if (AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) {
+ downloadItemVisible = true;
+ }
+
if (CustomTabIntentDataProvider.isOpenInBrowserDisallowed(mUiType, mIsIncognitoBranded)) {
openInChromeItemVisible = false;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -105,6 +105,9 @@ import org.chromium.components.embedder_support.util.UrlConstants;
@@ -106,6 +106,9 @@ import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.device.mojom.ScreenOrientationLockType;
import org.chromium.net.NetId;
@@ -445,7 +446,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -1328,6 +1331,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
@@ -1362,6 +1365,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
return getInitialActivityWidth() > 0;
}
@@ -549,7 +550,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
mSelectableListLayout = null;
mRootView = getIncognitoHistoryPlaceholderView();
return;
@@ -451,9 +459,22 @@ public class HistoryManager
@@ -458,9 +466,22 @@ public class HistoryManager
onBackPressStateChanged();
}
@@ -573,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
// If Incognito placeholder is shown no need to call any destroy method.
return;
}
@@ -514,7 +535,7 @@ public class HistoryManager
@@ -521,7 +542,7 @@ public class HistoryManager
* @return True if manager handles this event, false if it decides to ignore.
*/
private boolean onBackPressed() {
@@ -618,7 +619,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -25,6 +25,7 @@ import org.chromium.base.supplier.OneshotSupplier;
@@ -26,6 +26,7 @@ import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.R;
@@ -626,7 +627,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.app.download.home.DownloadPage;
import org.chromium.chrome.browser.back_press.BackPressManager;
@@ -411,7 +412,8 @@ public class NativePageFactory {
@@ -425,7 +426,8 @@ public class NativePageFactory {
NativePage page;
@@ -879,7 +880,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
import org.chromium.components.browser_ui.accessibility.AccessibilitySettings;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.settings.FragmentSettingsNavigation;
@@ -229,6 +230,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -211,6 +212,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
SigninAndHistorySyncActivityLauncherImpl.get(),
new SettingsCustomTabLauncherImpl()));
}
@@ -998,7 +999,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -26,6 +26,7 @@ import org.chromium.base.supplier.OneshotSupplier;
@@ -27,6 +27,7 @@ import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.R;
@@ -1006,7 +1007,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.ai.AiAssistantService;
import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
@@ -241,7 +242,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
@@ -245,7 +246,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
// When the feature is enabled, show either "New Incognito tab" in incognito mode
// or "New tab" in normal mode. When the feature is disabled, show both.
@@ -1019,7 +1020,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -209,6 +209,8 @@ import org.chromium.content_public.common.ContentSwitches;
@@ -216,6 +216,8 @@ import org.chromium.content_public.common.ContentSwitches;
import org.chromium.ui.UiUtils;
import org.chromium.ui.base.ActivityWindowAndroid;
import org.chromium.ui.base.DeviceFormFactor;
@@ -1028,7 +1029,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
import org.chromium.ui.base.IntentRequestTracker;
import org.chromium.ui.base.UiAndroidFeatureList;
import org.chromium.ui.display.DisplayUtil;
@@ -1257,7 +1259,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -1309,7 +1311,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
() -> {
mTabCreatorManagerSupplier
.get()
@@ -1040,7 +1041,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -55,6 +55,10 @@ import org.chromium.url.GURL;
@@ -56,6 +56,10 @@ import org.chromium.url.GURL;
import java.util.Collections;
import java.util.function.Supplier;
@@ -1051,7 +1052,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
/** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */
public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabModelOrderController {
/**
@@ -594,7 +598,6 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode
@@ -598,7 +602,6 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode
// TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome.
public @Nullable Tab launchUrlFromExternalApp(
LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) {
@@ -1062,7 +1063,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
@@ -20,6 +20,7 @@ import org.chromium.build.annotations.Initializer;
@@ -20,6 +20,7 @@ import org.chromium.build.annotations.MonotonicNonNull;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton;
@@ -1070,7 +1071,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
import org.chromium.chrome.browser.flags.ActivityType;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.multiwindow.MultiInstanceManager;
@@ -139,6 +140,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
@@ -138,6 +139,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
ProfileProvider profileProvider = mProfileProviderSupplier.get();
assert profileProvider != null;
@@ -1090,7 +1091,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
import org.chromium.chrome.browser.crypto.CipherFactory;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -750,6 +751,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore {
@@ -723,6 +724,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore {
}
}
}
@@ -1229,7 +1230,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -461,6 +461,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const {
@@ -462,6 +462,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const {
return AimEligibilityServiceFactory::GetForProfile(profile_);
}
@@ -1284,7 +1285,7 @@ diff --git a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc b
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc
--- a/chrome/browser/bookmarks/android/bookmark_bridge.cc
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc
@@ -37,6 +37,7 @@
@@ -33,6 +33,7 @@
#include "base/strings/strcat.h"
#include "base/strings/utf_string_conversions.h"
#include "base/uuid.h"
@@ -1292,7 +1293,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
#include "chrome/browser/commerce/shopping_service_factory.h"
@@ -214,6 +215,12 @@ ScopedJavaLocalRef<jobject> JNI_BookmarkBridge_NativeGetForProfile(
@@ -210,6 +211,12 @@ static ScopedJavaLocalRef<jobject> JNI_BookmarkBridge_NativeGetForProfile(
if (!profile)
return nullptr;
@@ -1356,7 +1357,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
@@ -83,6 +83,12 @@
@@ -80,6 +80,12 @@
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#endif
@@ -1369,7 +1370,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
using safe_browsing::SafeBrowsingNavigationObserverManager;
@@ -223,6 +229,16 @@ const int kExtensionReferrerUserGestureLimit = 2;
@@ -220,6 +226,16 @@ const int kExtensionReferrerUserGestureLimit = 2;
WebstorePrivateApi::Delegate* test_delegate = nullptr;
@@ -1386,7 +1387,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
// We allow the web store to set a string containing login information when a
// purchase is made, so that when a user logs into sync with a different
// account we can recognize the situation. The Get function returns the login if
@@ -429,7 +445,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() {
@@ -426,7 +442,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() {
params_ = Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params_);
@@ -1395,7 +1396,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
if (!crx_file::id_util::IdIsValid(details().id)) {
return RespondNow(BuildResponse(api::webstore_private::Result::kInvalidId,
@@ -965,7 +981,7 @@ void WebstorePrivateBeginInstallWithManifest3Function::
@@ -948,7 +964,7 @@ void WebstorePrivateBeginInstallWithManifest3Function::
DCHECK(extension);
DCHECK(contents);
@@ -1404,7 +1405,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
std::string message_from_admin =
ExtensionManagementFactory::GetForBrowserContext(profile)
@@ -1001,7 +1017,7 @@ WebstorePrivateCompleteInstallFunction::Run() {
@@ -984,7 +1000,7 @@ WebstorePrivateCompleteInstallFunction::Run() {
std::optional<CompleteInstall::Params> params =
CompleteInstall::Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params);
@@ -1413,7 +1414,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
if (profile->IsGuestSession() || profile->IsOffTheRecord()) {
return RespondNow(Error(kIncognitoError));
}
@@ -1319,7 +1335,7 @@ ExtensionFunction::ResponseValue
@@ -1302,7 +1318,7 @@ ExtensionFunction::ResponseValue
WebstorePrivateGetExtensionStatusFunction::BuildResponseWithoutManifest(
const ExtensionId& extension_id) {
ExtensionInstallStatus status = GetWebstoreExtensionInstallStatus(
@@ -1422,7 +1423,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
api::webstore_private::ExtensionInstallStatus api_status =
ConvertExtensionInstallStatusForAPI(status);
return ArgumentList(GetExtensionStatus::Results::Create(api_status));
@@ -1333,7 +1349,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed(
@@ -1316,7 +1332,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed(
return;
}
@@ -1478,7 +1479,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h
--- a/chrome/browser/history/history_tab_helper.h
+++ b/chrome/browser/history/history_tab_helper.h
@@ -17,6 +17,8 @@
@@ -18,6 +18,8 @@
#include "components/translate/core/browser/translate_driver.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
@@ -1487,7 +1488,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor
namespace history {
struct HistoryAddPageArgs;
@@ -59,6 +61,11 @@ class HistoryTabHelper
@@ -60,6 +62,11 @@ class HistoryTabHelper
std::optional<std::string> GetAppId() { return app_id_; }
#endif
@@ -1807,7 +1808,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -261,6 +261,7 @@
@@ -262,6 +262,7 @@
#if BUILDFLAG(IS_ANDROID)
#include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h"
@@ -1815,7 +1816,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
#include "chrome/browser/android/ntp/recent_tabs_page_prefs.h"
#include "chrome/browser/android/oom_intervention/oom_intervention_decider.h"
#include "chrome/browser/android/preferences/browser_prefs_android.h"
@@ -2022,6 +2023,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
@@ -1774,6 +1775,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
variations::VariationsService::RegisterProfilePrefs(registry);
webapps::InstallPromptPrefs::RegisterProfilePrefs(registry);
@@ -1880,7 +1881,7 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi
diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn
--- a/chrome/browser/ui/android/native_page/BUILD.gn
+++ b/chrome/browser/ui/android/native_page/BUILD.gn
@@ -33,6 +33,8 @@ robolectric_library("junit") {
@@ -34,6 +34,8 @@ robolectric_library("junit") {
deps = [
":java",
@@ -1901,7 +1902,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
/** An interface for pages that will be using Android views instead of html/rendered Web content. */
@NullMarked
public interface NativePage {
@@ -192,7 +194,8 @@ public interface NativePage {
@@ -201,7 +203,8 @@ public interface NativePage {
*/
static boolean isNativePageUrl(GURL url, boolean isIncognito, boolean hasPdfDownload) {
return url != null
@@ -1911,7 +1912,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
}
/**
@@ -202,7 +205,7 @@ public interface NativePage {
@@ -211,7 +214,7 @@ public interface NativePage {
* not have chrome or chrome-native scheme.
*/
static boolean isChromePageUrl(GURL url, boolean isIncognito) {
@@ -1920,7 +1921,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
}
/**
@@ -216,7 +219,8 @@ public interface NativePage {
@@ -225,7 +228,8 @@ public interface NativePage {
GURL url,
@Nullable NativePage candidatePage,
boolean isIncognito,
@@ -1930,7 +1931,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
if (hasPdfDownload) {
// For navigation with associated pdf download (e.g. open a pdf link), pdf page should
// be created.
@@ -234,7 +238,7 @@ public interface NativePage {
@@ -243,7 +247,7 @@ public interface NativePage {
// created after the pdf document is re-downloaded in other parts of the code.
return NativePageType.NONE;
} else {
@@ -1939,7 +1940,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
}
}
@@ -246,7 +250,7 @@ public interface NativePage {
@@ -255,7 +259,7 @@ public interface NativePage {
* which do not have chrome or chrome-native scheme.
*/
private static @NativePageType int chromePageType(
@@ -1948,7 +1949,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
String host = url.getHost();
String scheme = url.getScheme();
if (!UrlConstants.CHROME_NATIVE_SCHEME.equals(scheme)
@@ -266,7 +270,8 @@ public interface NativePage {
@@ -275,7 +279,8 @@ public interface NativePage {
return NativePageType.DOWNLOADS;
} else if (UrlConstants.HISTORY_HOST.equals(host)) {
return NativePageType.HISTORY;
@@ -1961,7 +1962,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -101,6 +101,11 @@ import org.chromium.ui.interpolators.Interpolators;
@@ -108,6 +108,11 @@ import org.chromium.ui.interpolators.Interpolators;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.url.GURL;
@@ -1973,7 +1974,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -497,6 +502,9 @@ class LocationBarMediator
@@ -528,6 +533,9 @@ class LocationBarMediator
if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return;
Tab tab = mLocationBarDataProvider.getTab();
if (tab == null) return;
@@ -1986,7 +1987,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
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
@@ -6900,6 +6900,31 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -6990,6 +6990,31 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_QUICK_DELETE_DIALOG_COOKIES_CACHE_AND_OTHER_SITE_DATA_TEXT" desc="Text indicating that browsing data like cookies, cache, and other site data would be deleted.">
Cookies, cache, and other site data
</message>
@@ -2073,7 +2074,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro
#include "chrome/common/url_constants.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_fetcher.h"
@@ -165,6 +166,11 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument(
@@ -166,6 +167,11 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument(
// Download the OpenSearch description document. If this is successful, a
// new keyword will be created when done.
@@ -2088,7 +2089,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro
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
@@ -4116,6 +4116,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] =
@@ -4153,6 +4153,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] =
"net.out_of_process_system_dns_resolution_enabled";
#endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
@@ -2104,7 +2105,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc
--- a/components/content_settings/core/browser/content_settings_pref_provider.cc
+++ b/components/content_settings/core/browser/content_settings_pref_provider.cc
@@ -122,10 +122,12 @@ void PrefProvider::RegisterProfilePrefs(
@@ -129,10 +129,12 @@ void PrefProvider::RegisterProfilePrefs(
PrefProvider::PrefProvider(PrefService* prefs,
bool off_the_record,
@@ -2117,7 +2118,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
store_last_modified_(store_last_modified),
clock_(base::DefaultClock::GetInstance()) {
TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider");
@@ -148,10 +150,12 @@ PrefProvider::PrefProvider(PrefService* prefs,
@@ -155,10 +157,12 @@ PrefProvider::PrefProvider(PrefService* prefs,
WebsiteSettingsRegistry* website_settings =
WebsiteSettingsRegistry::GetInstance();
for (const WebsiteSettingsInfo* info : *website_settings) {
@@ -2189,7 +2190,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
bool store_last_modified,
bool restore_session,
bool should_record_metrics);
@@ -551,6 +552,8 @@ class HostContentSettingsMap : public content_settings::Observer,
@@ -556,6 +557,8 @@ class HostContentSettingsMap : public content_settings::Observer,
// Whether this settings map is for an incognito or guest session.
bool is_off_the_record_;
@@ -2201,10 +2202,10 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/components/omnibox/browser/autocomplete_provider_client.cc
--- a/components/omnibox/browser/autocomplete_provider_client.cc
+++ b/components/omnibox/browser/autocomplete_provider_client.cc
@@ -81,3 +81,7 @@ AutocompleteProviderClient::GetGeminiPrototypeOmniboxService() const {
@@ -77,3 +77,7 @@ base::WeakPtr<AutocompleteProviderClient>
AutocompleteProviderClient::GetWeakPtr() {
return nullptr;
}
#endif // BUILDFLAG(IS_IOS)
+
+bool AutocompleteProviderClient::IsAlwaysIncognitoEnabled() const {
+ return false;
@@ -2212,7 +2213,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/compon
diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h
--- a/components/omnibox/browser/autocomplete_provider_client.h
+++ b/components/omnibox/browser/autocomplete_provider_client.h
@@ -161,6 +161,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client {
@@ -154,6 +154,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client {
virtual bool IsOffTheRecord() const = 0;
virtual bool IsIncognitoProfile() const = 0;
virtual bool IsGuestSession() const = 0;
@@ -2223,7 +2224,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone
diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc
--- a/components/omnibox/browser/base_search_provider.cc
+++ b/components/omnibox/browser/base_search_provider.cc
@@ -401,7 +401,7 @@ bool BaseSearchProvider::CanSendSuggestRequest(
@@ -403,7 +403,7 @@ bool BaseSearchProvider::CanSendSuggestRequest(
// Don't make a suggest request if in incognito mode; unless for the Lens
// searchboxes.
@@ -2235,7 +2236,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
--- a/components/omnibox/browser/search_provider.cc
+++ b/components/omnibox/browser/search_provider.cc
@@ -922,7 +922,8 @@ std::unique_ptr<network::SimpleURLLoader> SearchProvider::CreateSuggestLoader(
@@ -948,7 +948,8 @@ std::unique_ptr<network::SimpleURLLoader> SearchProvider::CreateSuggestLoader(
// is required.
// Request for suggestions in OTR contexts is not allowed; except for the Lens
// searchboxes.
@@ -66,7 +66,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/browser/content_settings_utils.h | 6 ++
.../core/common/content_settings_enums.mojom | 9 ++
.../page_info/PageInfoController.java | 4 +-
.../PermissionParamsListBuilder.java | 13 ++-
.../PermissionParamsListBuilder.java | 12 ++-
.../android/page_info_controller_android.cc | 10 ++-
components/page_info/page_info.cc | 2 +
components/page_info/page_info.h | 1 +
@@ -89,7 +89,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/permissions/permission_request.h | 18 +++-
.../permissions/permission_request_manager.cc | 49 ++++++-----
.../permissions/permission_request_manager.h | 11 ++-
37 files changed, 509 insertions(+), 75 deletions(-)
37 files changed, 508 insertions(+), 75 deletions(-)
diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc
--- a/chrome/browser/permissions/last_tab_standing_tracker.cc
@@ -178,7 +178,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome
OneTimePermissionsTracker::~OneTimePermissionsTracker() = default;
OneTimePermissionsTracker::OriginTrackEntry::OriginTrackEntry() = default;
@@ -255,6 +281,12 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed(
@@ -260,6 +286,12 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed(
for (auto& observer : observer_list_) {
observer.OnLastPageFromOriginClosed(origin);
}
@@ -202,7 +202,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/keyed_service/core/keyed_service.h"
#include "content/public/browser/visibility.h"
@@ -24,7 +25,7 @@ class OneTimePermissionsTracker : public KeyedService {
@@ -26,7 +27,7 @@ class OneTimePermissionsTracker : public KeyedService {
void (OneTimePermissionsTracker::*)(const url::Origin&);
public:
@@ -211,7 +211,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/
~OneTimePermissionsTracker() override;
OneTimePermissionsTracker(const OneTimePermissionsTracker&) = delete;
@@ -138,7 +139,7 @@ class OneTimePermissionsTracker : public KeyedService {
@@ -147,7 +148,7 @@ class OneTimePermissionsTracker : public KeyedService {
base::ObserverList<OneTimePermissionsTrackerObserver> observer_list_;
std::map<url::Origin, OriginTrackEntry> origin_tracker_;
@@ -233,7 +233,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc
diff --git a/chrome/browser/ui/views/permissions/chip/chip_controller.cc b/chrome/browser/ui/views/permissions/chip/chip_controller.cc
--- a/chrome/browser/ui/views/permissions/chip/chip_controller.cc
+++ b/chrome/browser/ui/views/permissions/chip/chip_controller.cc
@@ -228,7 +228,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) {
@@ -227,7 +227,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) {
active_chip_permission_request_manager_.value()->Accept();
break;
case permissions::PermissionAction::GRANTED_ONCE:
@@ -269,7 +269,7 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
@@ -696,6 +696,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -715,6 +715,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
}
@RequiresNonNull({"mSite"})
@@ -281,7 +281,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
private void setUpClearDataPreference() {
ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA);
long usage = mSite.getTotalUsage();
@@ -1313,6 +1318,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -1407,6 +1412,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
.getDefaultColor());
}
}
@@ -425,33 +425,33 @@ diff --git a/components/content_settings/core/common/content_settings_enums.mojo
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java
@@ -376,8 +376,8 @@ public class PageInfoController
@@ -387,9 +387,9 @@ public class PageInfoController
*/
@CalledByNative
private void addPermissionSection(
- String name, String nameMidSentence, int type, boolean allowed) {
- mPermissionParamsListBuilder.addPermissionEntry(name, nameMidSentence, type, allowed);
+ String name, String nameMidSentence, int type, boolean allowed, boolean is_user_session) {
+ mPermissionParamsListBuilder.addPermissionEntry(name, nameMidSentence, type, allowed, is_user_session);
- String name, String nameMidSentence, int type, boolean allowed, boolean requested) {
+ String name, String nameMidSentence, int type, boolean allowed, boolean requested, boolean is_user_session) {
mPermissionParamsListBuilder.addPermissionEntry(
- name, nameMidSentence, type, allowed, requested);
+ name, nameMidSentence, type, allowed, requested, is_user_session);
}
/** Update the permissions view based on the contents of mDisplayedPermissions. */
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
@@ -46,8 +46,9 @@ public class PermissionParamsListBuilder {
mEntries = new ArrayList<>();
@@ -47,8 +47,8 @@ public class PermissionParamsListBuilder {
}
- public void addPermissionEntry(String name, String nameMidSentence, int type, boolean allowed) {
- mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, allowed));
+ public void addPermissionEntry(String name, String nameMidSentence, int type, boolean allowed,
+ boolean is_user_session) {
+ mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, allowed, is_user_session));
public void addPermissionEntry(
- String name, String nameMidSentence, int type, boolean allowed, boolean requested) {
- mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, allowed, requested));
+ String name, String nameMidSentence, int type, boolean allowed, boolean requested, boolean is_user_session) {
+ mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, allowed, requested, is_user_session));
}
public void clearPermissionEntries() {
@@ -84,6 +85,10 @@ public class PermissionParamsListBuilder {
@@ -85,6 +85,10 @@ public class PermissionParamsListBuilder {
} else {
warningTextResource = R.string.page_info_android_permission_blocked;
}
@@ -462,18 +462,20 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_
}
}
@@ -112,12 +117,14 @@ public class PermissionParamsListBuilder {
public final String nameMidSentence;
@@ -115,14 +119,16 @@ public class PermissionParamsListBuilder {
public final int type;
public final boolean allowed;
public final boolean requested;
+ public final boolean is_user_session;
- PageInfoPermissionEntry(String name, String nameMidSentence, int type, boolean allowed) {
+ PageInfoPermissionEntry(String name, String nameMidSentence, int type, boolean allowed, boolean is_user_session) {
PageInfoPermissionEntry(
- String name, String nameMidSentence, int type, boolean allowed, boolean requested) {
+ String name, String nameMidSentence, int type, boolean allowed, boolean requested, boolean is_user_session) {
this.name = name;
this.nameMidSentence = nameMidSentence;
this.type = type;
this.allowed = allowed;
this.requested = requested;
+ this.is_user_session = is_user_session;
}
@@ -481,40 +483,40 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_
diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc
--- a/components/page_info/android/page_info_controller_android.cc
+++ b/components/page_info/android/page_info_controller_android.cc
@@ -207,6 +207,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
std::map<ContentSettingsType, /*allowed*/ bool>
user_specified_settings_to_display;
@@ -214,6 +214,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
// being requested. This is needed for the Loud Clapper experiment
// (crbug.com/458351800).
bool requested_notifications = false;
+ std::map<ContentSettingsType, bool>
+ user_specified_settings_is_user_session;
for (const auto& permission : permission_info_list) {
if (base::Contains(permissions_to_display, permission.type)) {
@@ -219,6 +221,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
@@ -226,6 +228,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
user_specified_settings_to_display[permission.type] =
info->delegate().IsAnyPermissionAllowed(*setting_to_display);
+ user_specified_settings_is_user_session[permission.type] =
+ permission.is_user_session;
}
}
}
@@ -235,7 +239,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
ConvertUTF16ToJavaString(env, setting_title),
// Notifications permission can have the setting to display as DEFAULT
@@ -252,7 +256,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
ConvertUTF16ToJavaString(env, setting_title_mid_sentence),
static_cast<jint>(permission),
- user_specified_settings_to_display[permission]);
+ user_specified_settings_to_display[permission],
user_specified_settings_to_display[permission],
- requested_notifications);
+ requested_notifications,
+ user_specified_settings_is_user_session[permission]);
}
}
@@ -248,7 +253,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
@@ -265,7 +270,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title),
ConvertUTF16ToJavaString(env, object_title),
static_cast<jint>(chosen_object->ui_info->content_settings_type),
- static_cast<jint>(CONTENT_SETTING_ALLOW));
+ static_cast<jint>(CONTENT_SETTING_ALLOW),
- static_cast<jint>(CONTENT_SETTING_ALLOW), requested_notifications);
+ static_cast<jint>(CONTENT_SETTING_ALLOW), requested_notifications,
+ /* is_user_session */ false);
}
@@ -522,7 +524,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc
--- a/components/page_info/page_info.cc
+++ b/components/page_info/page_info.cc
@@ -1331,6 +1331,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
@@ -1296,6 +1296,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
permission_info.is_one_time =
(info.metadata.session_model() ==
content_settings::mojom::SessionModel::ONE_TIME);
@@ -545,9 +547,9 @@ diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java
--- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java
@@ -16,6 +16,7 @@ import org.jni_zero.NativeMethods;
import org.chromium.build.annotations.NullMarked;
@@ -16,6 +16,7 @@ import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.WindowAndroid;
+import org.chromium.components.content_settings.LifetimeMode;
@@ -682,7 +684,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per
diff --git a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc
--- a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc
+++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc
@@ -118,7 +118,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() {
@@ -123,7 +123,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() {
delegate()->FinalizeCurrentRequests();
}
@@ -707,7 +709,7 @@ diff --git a/components/permissions/android/permission_prompt/embedded_permissio
diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
--- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
+++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
@@ -137,6 +137,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() {
@@ -138,6 +138,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() {
static_cast<int>(permission_prompt_->GetEmbeddedPromptVariant()));
}
@@ -719,7 +721,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
// static
std::unique_ptr<PermissionDialogDelegate> PermissionDialogDelegate::Create(
content::WebContents* web_contents,
@@ -165,12 +170,22 @@ PermissionDialogDelegate::CreateForTesting(
@@ -166,12 +171,22 @@ PermissionDialogDelegate::CreateForTesting(
void PermissionDialogDelegate::Accept(JNIEnv* env) {
CHECK(permission_prompt_);
@@ -743,7 +745,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
}
void PermissionDialogDelegate::Acknowledge(JNIEnv* env) {
@@ -180,6 +195,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) {
@@ -181,6 +196,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) {
void PermissionDialogDelegate::Deny(JNIEnv* env) {
CHECK(permission_prompt_);
@@ -760,7 +762,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.h b/components/permissions/android/permission_prompt/permission_dialog_delegate.h
--- a/components/permissions/android/permission_prompt/permission_dialog_delegate.h
+++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.h
@@ -42,6 +42,7 @@ class PermissionDialogJavaDelegate {
@@ -43,6 +43,7 @@ class PermissionDialogJavaDelegate {
const favicon_base::FaviconRawBitmapResult& favicon_result);
virtual void DismissDialog();
@@ -789,7 +791,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_prompt_
diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.h b/components/permissions/android/permission_prompt/permission_prompt_android.h
--- a/components/permissions/android/permission_prompt/permission_prompt_android.h
+++ b/components/permissions/android/permission_prompt/permission_prompt_android.h
@@ -56,9 +56,10 @@ class PermissionPromptAndroid : public PermissionPrompt {
@@ -57,9 +57,10 @@ class PermissionPromptAndroid : public PermissionPrompt {
const;
virtual void Closing();
virtual void Accept();
@@ -851,24 +853,24 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
IsRequestingOriginDSE(request_data.requesting_origin);
if (decision == PermissionDecision::kAllow &&
@@ -210,7 +221,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin,
std::move(callback), false /* persist */,
- PermissionDecision::kDeny,
+ PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options);
FinishNotifyPermissionSet(
request_data.id, request_data.requesting_origin,
request_data.embedding_origin, std::move(callback),
- false /* persist */, PermissionDecision::kDeny,
+ false /* persist */, PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options,
request_data.embedded_permission_request_descriptor.Clone());
return;
}
@@ -231,7 +242,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin,
std::move(callback), false /* persist */,
- PermissionDecision::kDeny,
+ PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options);
@@ -232,7 +243,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(
request_data.id, request_data.requesting_origin,
request_data.embedding_origin, std::move(callback),
- false /* persist */, PermissionDecision::kDeny,
+ false /* persist */, PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options,
request_data.embedded_permission_request_descriptor.Clone());
return;
}
@@ -244,14 +255,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -246,14 +257,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
base::BindOnce(
&GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown,
weak_factory_.GetWeakPtr(), request_data.requesting_origin,
@@ -878,14 +880,14 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
return;
}
FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin, std::move(callback),
- persist, decision, request_data.prompt_options);
+ persist, decision, lifetime_option, request_data.prompt_options);
FinishNotifyPermissionSet(
request_data.id, request_data.requesting_origin,
- request_data.embedding_origin, std::move(callback), persist, decision,
+ request_data.embedding_origin, std::move(callback), persist, decision, lifetime_option,
request_data.prompt_options,
request_data.embedded_permission_request_descriptor.Clone());
}
content::PermissionResult
@@ -428,7 +439,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
@@ -432,7 +443,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
const GURL& requesting_origin,
const GURL& embedding_origin,
bool persist,
@@ -894,7 +896,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
std::optional<PromptOptions> prompt_options,
LocationSettingsDialogOutcome prompt_outcome) {
bool is_default_search = IsRequestingOriginDSE(requesting_origin);
@@ -448,7 +459,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
@@ -452,7 +463,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
FinishNotifyPermissionSet(location_settings_dialog_request_id_,
requesting_origin, embedding_origin,
std::move(location_settings_dialog_callback_),
@@ -903,18 +905,18 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
location_settings_dialog_request_id_ =
PermissionRequestID(content::GlobalRenderFrameHostId(0, 0),
@@ -461,7 +472,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
@@ -465,7 +476,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
const GURL& embedding_origin,
BrowserPermissionCallback callback,
bool persist,
- PermissionDecision decision,
+ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options) {
PermissionRequestData request_data(
this, id,
@@ -470,9 +481,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
blink::PermissionType::GEOLOCATION)),
requesting_origin, embedding_origin);
std::optional<PromptOptions> prompt_options,
blink::mojom::EmbeddedPermissionRequestDescriptorPtr
embedded_permission_request_descriptor) {
@@ -478,9 +489,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
request_data.embedded_permission_request_descriptor =
std::move(embedded_permission_request_descriptor);
request_data.prompt_options = prompt_options.value_or(std::monostate());
- GeolocationPermissionContext::NotifyPermissionSet(
+ GeolocationPermissionContext::NotifyPermissionSetImpl(
@@ -949,14 +951,14 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
std::optional<PromptOptions> prompt_options,
LocationSettingsDialogOutcome prompt_outcome);
@@ -145,6 +152,7 @@ class GeolocationPermissionContextAndroid
BrowserPermissionCallback callback,
bool persist,
PermissionDecision decision,
+ content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options);
std::unique_ptr<LocationSettings> location_settings_;
@@ -146,6 +153,7 @@ class GeolocationPermissionContextAndroid
BrowserPermissionCallback callback,
bool persist,
PermissionDecision decision,
+ content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options,
blink::mojom::EmbeddedPermissionRequestDescriptorPtr
embedded_permission_request_descriptor = nullptr);
diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/components/permissions/embedded_permission_prompt_flow_model.cc
--- a/components/permissions/embedded_permission_prompt_flow_model.cc
+++ b/components/permissions/embedded_permission_prompt_flow_model.cc
@@ -972,7 +974,7 @@ diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/c
diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc
--- a/components/permissions/permission_context_base.cc
+++ b/components/permissions/permission_context_base.cc
@@ -282,6 +282,17 @@ PermissionContextBase::CreatePermissionRequest(
@@ -281,6 +281,17 @@ PermissionContextBase::CreatePermissionRequest(
std::move(request_finished_callback), UsesAutomaticEmbargo());
}
@@ -990,7 +992,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
bool PermissionContextBase::UsesAutomaticEmbargo() const {
return true;
}
@@ -626,7 +637,8 @@ void PermissionContextBase::DecidePermission(
@@ -624,7 +635,8 @@ void PermissionContextBase::DecidePermission(
void PermissionContextBase::PermissionDecided(
PermissionDecision decision,
bool is_final_decision,
@@ -1000,7 +1002,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
UserMadePermissionDecision(request_data.id, request_data.requesting_origin,
request_data.embedding_origin, decision);
// If a permission request originates from an embedded element, its
@@ -650,11 +662,12 @@ void PermissionContextBase::PermissionDecided(
@@ -648,11 +660,12 @@ void PermissionContextBase::PermissionDecided(
// missing if a permission prompt was preignored and we already notified an
// origin about it.
if (request->second.second) {
@@ -1017,7 +1019,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
}
}
@@ -739,6 +752,30 @@ void PermissionContextBase::NotifyPermissionSet(
@@ -737,6 +750,30 @@ void PermissionContextBase::NotifyPermissionSet(
bool persist,
PermissionDecision decision,
bool is_final_decision) {
@@ -1048,7 +1050,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
// Note that rfh may be null, see crbug.com/426909787.
@@ -754,8 +791,8 @@ void PermissionContextBase::NotifyPermissionSet(
@@ -752,8 +789,8 @@ void PermissionContextBase::NotifyPermissionSet(
if (persist) {
// Clone new value, because we need it again for the callback.
@@ -1059,7 +1061,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
}
if (is_final_decision) {
@@ -794,6 +831,17 @@ void PermissionContextBase::UpdateSetting(
@@ -811,6 +848,17 @@ void PermissionContextBase::UpdateSetting(
const PermissionRequestData& request_data,
PermissionSetting setting,
bool is_one_time) {
@@ -1077,7 +1079,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
DCHECK_EQ(request_data.requesting_origin,
request_data.requesting_origin.DeprecatedGetOriginAsURL());
DCHECK_EQ(request_data.embedding_origin,
@@ -803,6 +851,8 @@ void PermissionContextBase::UpdateSetting(
@@ -820,6 +868,8 @@ void PermissionContextBase::UpdateSetting(
constraints.set_session_model(
is_one_time ? content_settings::mojom::SessionModel::ONE_TIME
: content_settings::mojom::SessionModel::DURABLE);
@@ -1133,7 +1135,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
// Implementors can override this method to avoid using automatic embargo.
virtual bool UsesAutomaticEmbargo() const;
@@ -281,7 +304,8 @@ class PermissionContextBase : public content_settings::Observer {
@@ -285,7 +308,8 @@ class PermissionContextBase : public content_settings::Observer {
// allows/blocks/dismisses a permission prompt.
void PermissionDecided(PermissionDecision decision,
bool is_final_decision,
@@ -1177,7 +1179,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
PermissionRequest::~PermissionRequest() {
std::move(request_finished_callback_).Run();
}
@@ -431,20 +441,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const {
@@ -433,20 +443,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const {
return request_type() == RequestType::kStorageAccess;
}
@@ -1261,7 +1263,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission
// Called when the user has cancelled the permission request. This
// corresponds to a denial, but is segregated in case the context needs to
@@ -242,6 +253,9 @@ class PermissionRequest {
@@ -247,6 +258,9 @@ class PermissionRequest {
// Called once a decision is made about the permission.
PermissionDecidedCallback permission_decided_callback_;
@@ -1274,7 +1276,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission
diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc
--- a/components/permissions/permission_request_manager.cc
+++ b/components/permissions/permission_request_manager.cc
@@ -206,12 +206,12 @@ void PermissionRequestManager::AddRequest(
@@ -208,12 +208,12 @@ void PermissionRequestManager::AddRequest(
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDenyPermissionPrompts)) {
@@ -1289,7 +1291,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
return;
}
@@ -282,9 +282,9 @@ void PermissionRequestManager::AddRequest(
@@ -284,9 +284,9 @@ void PermissionRequestManager::AddRequest(
if (should_auto_approve_request) {
if (should_auto_approve_request == PermissionAction::GRANTED) {
@@ -1301,7 +1303,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
return;
}
@@ -611,7 +611,8 @@ void PermissionRequestManager::Accept() {
@@ -615,7 +615,8 @@ void PermissionRequestManager::Accept() {
StorePermissionActionForUMA(request->requesting_origin(),
request->request_type(), action);
PermissionGrantedIncludingDuplicates(request.get(),
@@ -1309,9 +1311,9 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
+ /*is_one_time=*/false,
+ content_settings::mojom::LifetimeMode::ALWAYS);
#if !BUILDFLAG(IS_ANDROID)
#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
std::optional<ContentSettingsType> content_settings_type =
@@ -629,7 +630,7 @@ void PermissionRequestManager::Accept() {
@@ -633,7 +634,7 @@ void PermissionRequestManager::Accept() {
CurrentRequestsDecided(action);
}
@@ -1320,7 +1322,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
if (ignore_callbacks_from_prompt_) {
return;
}
@@ -641,7 +642,8 @@ void PermissionRequestManager::AcceptThisTime() {
@@ -645,7 +646,8 @@ void PermissionRequestManager::AcceptThisTime() {
StorePermissionActionForUMA(request->requesting_origin(),
request->request_type(), action);
PermissionGrantedIncludingDuplicates(request.get(),
@@ -1330,7 +1332,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
NotifyRequestDecided(action);
@@ -649,6 +651,15 @@ void PermissionRequestManager::AcceptThisTime() {
@@ -653,6 +655,15 @@ void PermissionRequestManager::AcceptThisTime() {
}
void PermissionRequestManager::Deny() {
@@ -1346,7 +1348,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
if (ignore_callbacks_from_prompt_) {
return;
}
@@ -669,7 +680,7 @@ void PermissionRequestManager::Deny() {
@@ -673,7 +684,7 @@ void PermissionRequestManager::Deny() {
for (const auto& request : requests_) {
StorePermissionActionForUMA(request->requesting_origin(),
request->request_type(), action);
@@ -1355,7 +1357,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
NotifyRequestDecided(action);
@@ -1306,32 +1317,32 @@ PermissionRequestManager::VisitDuplicateRequests(
@@ -1366,32 +1377,32 @@ PermissionRequestManager::VisitDuplicateRequests(
void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
PermissionRequest* request,
@@ -1398,7 +1400,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
request);
}
@@ -1608,7 +1619,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() {
@@ -1679,7 +1690,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() {
}
switch (auto_response_for_test_) {
case ACCEPT_ONCE:
@@ -1422,7 +1424,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe
void Dismiss() override;
void Ignore() override;
void FinalizeCurrentRequests() override;
@@ -426,9 +428,12 @@ class PermissionRequestManager
@@ -441,9 +443,12 @@ class PermissionRequestManager
// Calls PermissionGranted on a request and all its duplicates.
void PermissionGrantedIncludingDuplicates(PermissionRequest* request,
@@ -18,8 +18,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bookmark_ui_operations_helper.cc | 2 +
.../bookmark_bar_page_handler.cc | 2 +
components/bookmark_bar_strings.grdp | 6 +++
.../bookmarks/browser/bookmark_codec.cc | 20 +++++++--
components/bookmarks/browser/bookmark_codec.h | 7 ++-
.../bookmarks/browser/bookmark_codec.cc | 15 ++++++-
components/bookmarks/browser/bookmark_codec.h | 4 ++
.../browser/bookmark_load_details.cc | 15 +++++--
.../bookmarks/browser/bookmark_load_details.h | 2 +
.../bookmarks/browser/bookmark_model.cc | 3 +-
@@ -31,15 +31,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/bookmarks/browser/bookmark_uuids.h | 1 +
components/bookmarks/browser/model_loader.cc | 9 +++-
.../bookmark_specifics_conversions.cc | 1 +
27 files changed, 257 insertions(+), 14 deletions(-)
27 files changed, 252 insertions(+), 11 deletions(-)
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
--- a/chrome/android/java/res/values/ids.xml
+++ b/chrome/android/java/res/values/ids.xml
@@ -194,6 +194,7 @@ found in the LICENSE file.
<item type="id" name="menu_select_tabs" />
@@ -197,6 +197,7 @@ found in the LICENSE file.
<item type="id" name="menu_item_content_filter_divider_line_id" />
<item type="id" name="menu_item_content_filter_help_center_id" />
<item type="id" name="duplicate_tab_menu_id" />
+ <item type="id" name="bookmark_all_tabs_menu_id" />
<!-- Custom Tabs -->
@@ -55,7 +55,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.compositor.layouts.Layout;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
@@ -294,6 +295,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate;
@@ -299,6 +300,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate;
import org.chromium.chrome.browser.ui.browser_window.BrowserWindowType;
import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
@@ -65,16 +65,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient;
import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityExtras.IntentOrigin;
import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig;
@@ -308,6 +312,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService;
import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
@@ -314,6 +318,8 @@ import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionInitializerImpl;
import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionManagerImpl;
import org.chromium.components.browser_ui.accessibility.AccessibilityFeatureMap;
+import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.share.ShareParams;
import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate;
@@ -3886,6 +3892,8 @@ public class ChromeTabbedActivity extends ChromeActivity {
@@ -3929,6 +3935,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
CloseAllTabsDialog.show(
this, getModalDialogManagerSupplier(), tabModelSelector, closeAllTabsRunnable);
RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -83,7 +83,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
} else if (id == R.id.close_all_incognito_tabs_menu_id) {
boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion);
@@ -4013,6 +4021,41 @@ public class ChromeTabbedActivity extends ChromeActivity {
@@ -4058,6 +4066,41 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus);
}
@@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -288,6 +288,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
@@ -292,6 +292,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
// Bookmarks
modelList.add(buildBookmarksItem());
@@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
// Recent Tabs
if (shouldShowRecentTabsItem()) modelList.add(buildRecentTabsItem());
@@ -468,6 +476,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
@@ -478,6 +486,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
}
modelList.add(buildCloseAllTabsItem());
if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem());
@@ -160,7 +160,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc
--- a/chrome/browser/bookmarks/android/bookmark_bridge.cc
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc
@@ -340,6 +340,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) {
@@ -336,6 +336,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) {
return bookmark_model_->account_mobile_node() != nullptr;
}
@@ -194,7 +194,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
base::android::ScopedJavaLocalRef<jobject>
BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env,
const GURL& url) {
@@ -452,6 +479,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
@@ -448,6 +475,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
// Vector to temporarily contain all child bookmarks at same level for sorting
std::vector<const BookmarkNode*> bookmarks = {
bookmark_model_->mobile_node(),
@@ -202,7 +202,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
bookmark_model_->bookmark_bar_node(),
bookmark_model_->other_node(),
};
@@ -560,6 +588,9 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
@@ -556,6 +584,9 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
top_level_folders.push_back(other_node);
}
@@ -212,7 +212,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
const BookmarkNode* reading_list_node =
local_or_syncable_reading_list_manager_->GetRoot();
if (IsPermanentFolderVisible(
@@ -1232,6 +1263,17 @@ void BookmarkBridge::GetBookmarksOfType(
@@ -1228,6 +1259,17 @@ void BookmarkBridge::GetBookmarksOfType(
AddBookmarkNodesToBookmarkIdList(env, j_list, results);
}
@@ -460,7 +460,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
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
@@ -4505,6 +4505,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -4562,6 +4562,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_MENU_SELECT_TABS" desc="Menu item for bulk editing tabs. [CHAR_LIMIT=27]">
Select tabs
</message>
@@ -545,15 +545,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
} else {
// No permanent node should have been provided.
CHECK(!other_folder_node);
@@ -148,6 +152,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
@@ -144,6 +148,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
+ BookmarkNode* tabs_folder_node,
int64_t* max_id,
std::string* sync_metadata_str) {
const int64_t max_already_assigned_id =
@@ -162,7 +167,8 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
if (sync_metadata_str) {
@@ -156,13 +161,15 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
base::Uuid::ParseLowercase(kBookmarkBarNodeUuid),
base::Uuid::ParseLowercase(kOtherBookmarksNodeUuid),
base::Uuid::ParseLowercase(kMobileBookmarksNodeUuid),
@@ -562,25 +562,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
+ base::Uuid::ParseLowercase(kTabsCollectionBookmarksNodeUuid)};
ids_reassigned_ = false;
uuids_reassigned_ = false;
ids_valid_ = true;
@@ -171,6 +177,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
stored_sha256_checksum_.clear();
InitializeChecksum();
nodes_requiring_id_reassignment_.clear();
reassigned_ids_per_old_id_.clear();
bool success = DecodeHelper(bb_node, other_folder_node, mobile_folder_node,
+ tabs_folder_node,
value, sync_metadata_str);
FinalizeChecksum();
ReassignIDsIfRequired();
@@ -180,7 +187,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
if (!ids_valid_ || (computed_checksum_ != stored_checksum_) ||
(use_sha256 && computed_sha256_checksum_ != stored_sha256_checksum_)) {
maximum_id_ = max_already_assigned_id;
- ReassignIDs(bb_node, other_folder_node, mobile_folder_node);
+ ReassignIDs(bb_node, other_folder_node, mobile_folder_node, tabs_folder_node);
}
*max_id = maximum_id_ + 1;
return success;
@@ -239,6 +246,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo(
@@ -220,6 +227,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo(
bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
@@ -588,7 +578,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
const base::Value::Dict& value,
std::string* sync_metadata_str) {
std::optional<int> version = value.FindInt(kVersionKey);
@@ -284,6 +292,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
@@ -243,6 +251,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
roots->FindDict(kOtherBookmarkFolderNameKey);
const base::Value::Dict* mobile_folder_value =
roots->FindDict(kMobileBookmarkFolderNameKey);
@@ -597,7 +587,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
if (!bb_value || !other_folder_value || !mobile_folder_value)
return false;
@@ -291,6 +301,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
@@ -250,6 +260,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
DecodeNode(*bb_value, nullptr, bb_node);
DecodeNode(*other_folder_value, nullptr, other_folder_node);
DecodeNode(*mobile_folder_value, nullptr, mobile_folder_node);
@@ -606,18 +596,10 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
// Need to reset the title as the title is persisted and restored from
// the file.
@@ -499,12 +511,14 @@ void BookmarkCodec::DecodeMetaInfoHelper(
@@ -461,6 +473,7 @@ void BookmarkCodec::ReassignIDsIfRequired() {
}
void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node,
BookmarkNode* other_node,
- BookmarkNode* mobile_node) {
+ BookmarkNode* mobile_node,
+ BookmarkNode* tabs_folder_node) {
ids_.clear();
reassigned_ids_per_old_id_.clear();
ReassignIDsHelper(bb_node);
ReassignIDsHelper(other_node);
ReassignIDsHelper(mobile_node);
nodes_requiring_id_reassignment_.clear();
+ ReassignIDsHelper(tabs_folder_node);
ids_reassigned_ = true;
}
@@ -641,7 +623,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
int64_t* max_node_id,
std::string* sync_metadata_str);
@@ -100,6 +102,7 @@ class BookmarkCodec {
@@ -95,6 +97,7 @@ class BookmarkCodec {
static const char kBookmarkBarFolderNameKey[];
static const char kOtherBookmarkFolderNameKey[];
static const char kMobileBookmarkFolderNameKey[];
@@ -649,7 +631,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
static const char kVersionKey[];
static const char kChecksumKey[];
static const char kChecksumSHA256Key[];
@@ -133,6 +136,7 @@ class BookmarkCodec {
@@ -128,6 +131,7 @@ class BookmarkCodec {
bool DecodeHelper(BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
@@ -657,16 +639,6 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
const base::Value::Dict& value,
std::string* sync_metadata_str);
@@ -143,7 +147,8 @@ class BookmarkCodec {
// Reassigns bookmark IDs for all nodes.
void ReassignIDs(BookmarkNode* bb_node,
BookmarkNode* other_node,
- BookmarkNode* mobile_node);
+ BookmarkNode* mobile_node,
+ BookmarkNode* tabs_folder_node);
// Helper to recursively reassign IDs.
void ReassignIDsHelper(BookmarkNode* node);
diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc
--- a/components/bookmarks/browser/bookmark_load_details.cc
+++ b/components/bookmarks/browser/bookmark_load_details.cc
@@ -749,7 +721,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b
diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc
--- a/components/bookmarks/browser/bookmark_model.cc
+++ b/components/bookmarks/browser/bookmark_model.cc
@@ -909,7 +909,7 @@ bool BookmarkModel::HasUserCreatedBookmarksOrFolders() const {
@@ -908,7 +908,7 @@ bool BookmarkModel::HasUserCreatedBookmarksOrFolders() const {
(account_bookmark_bar_node_ &&
!account_bookmark_bar_node_->children().empty()) ||
(account_other_node_ && !account_other_node_->children().empty()) ||
@@ -758,7 +730,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
}
bool BookmarkModel::IsBookmarked(const GURL& url) const {
@@ -1241,6 +1241,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
@@ -1240,6 +1240,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
bookmark_bar_node_ = details->bb_node();
other_node_ = details->other_folder_node();
mobile_node_ = details->mobile_folder_node();
@@ -907,7 +879,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks
&sync_metadata_str)) {
ids_assigned_to_account_nodes = codec.release_assigned_ids();
@@ -118,7 +122,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
@@ -123,7 +127,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
if (root_dict.has_value() &&
codec.Decode(*root_dict, std::move(ids_assigned_to_account_nodes),
details->bb_node(), details->other_folder_node(),
@@ -22,7 +22,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../preferences/ChromePreferenceKeys.java | 1 +
.../preferences/ChromeSharedPreferences.java | 12 ++++++++++++
.../LegacyChromePreferenceKeys.java | 1 +
.../AppHeaderCoordinator.java | 2 ++
.../ui/desktop_windowing/AppHeaderUtils.java | 2 ++
.../omnibox/LocationBarCoordinator.java | 2 +-
.../strings/android_chrome_strings.grd | 7 +++++++
.../java/res/layout/control_container.xml | 8 ++++----
@@ -80,8 +80,8 @@ diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -119,9 +119,13 @@ found in the LICENSE file.
<dimen name="tab_modal_scrim_vertical_margin">16dp</dimen>
@@ -116,9 +116,13 @@ found in the LICENSE file.
<dimen name="signin_screen_top_padding">50dp</dimen>
<!-- Should match toolbar_height_no_shadow -->
- <dimen name="control_container_height">@dimen/default_action_bar_height</dimen>
@@ -98,7 +98,7 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
@@ -64,6 +64,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController;
@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerCreator;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeFieldTrialImpl;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
@@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCo
import org.chromium.chrome.browser.ui.edge_to_edge.SimpleEdgeToEdgeController;
import org.chromium.components.browser_ui.styles.SemanticColorUtils;
import org.chromium.components.browser_ui.util.AutomotiveUtils;
@@ -146,6 +147,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
@@ -145,6 +146,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
@@ -171,7 +171,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
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
@@ -818,7 +818,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -830,7 +830,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
// Inflate the correct toolbar layout for the device.
int toolbarLayoutId = getToolbarLayoutId();
if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) {
@@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -136,6 +136,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService;
@@ -137,6 +137,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService;
import org.chromium.components.tab_group_sync.TriggerSource;
import org.chromium.components.tab_groups.TabGroupColorId;
import org.chromium.ui.accessibility.AccessibilityState;
@@ -194,7 +194,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.util.ColorUtils;
@@ -5308,8 +5309,13 @@ public class StripLayoutHelper
@@ -5317,8 +5318,13 @@ public class StripLayoutHelper
mCloseButtonMenu.setAnchorView(tabView);
// 3. Set the vertical offset to align the close button menu with bottom of the tab strip
int tabHeight = mManagerHost.getHeight();
@@ -213,7 +213,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -101,6 +101,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa
@@ -105,6 +105,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa
import org.chromium.components.browser_ui.styles.SemanticColorUtils;
import org.chromium.components.browser_ui.widget.scrim.ScrimProperties;
import org.chromium.content_public.browser.LoadUrlParams;
@@ -221,9 +221,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.base.WindowAndroid;
@@ -491,7 +492,10 @@ public class StripLayoutHelperManager
mIsLayoutOptimizationsEnabled =
ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled(
@@ -498,7 +499,10 @@ public class StripLayoutHelperManager
mIsHeaderCustomizationSupported =
ToolbarFeatures.isAppHeaderCustomizationSupported(
/* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext));
- mScrollableStripHeight = res.getDimension(R.dimen.tab_strip_height) / mDensity;
+ mScrollableStripHeight =
@@ -231,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
+ ? res.getDimension(R.dimen.tab_strip_height_tabletui)
+ : res.getDimension(R.dimen.tab_strip_height_cromite)) / mDensity;
mHeight =
mIsLayoutOptimizationsEnabled
mIsHeaderCustomizationSupported
? toolbarManager.getTabStripHeightSupplier().get() / mDensity
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java
@@ -273,7 +273,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -766,7 +766,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -807,7 +807,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@Override
public int getControlContainerHeightResource() {
@@ -296,9 +296,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.quick_delete.QuickDeleteController;
import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl;
@@ -1877,7 +1879,9 @@ public class RootUiCoordinator
if (!mSupportsFindInPageSupplier.getAsBoolean()) return;
@@ -1947,7 +1949,9 @@ public class RootUiCoordinator
protected int getFindToolbarStub() {
int stubId = R.id.find_toolbar_stub;
- if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
+ if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity) &&
@@ -306,7 +306,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false)) {
stubId = R.id.find_toolbar_tablet_stub;
}
mFindToolbarManager =
return stubId;
diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn
--- a/chrome/browser/preferences/BUILD.gn
+++ b/chrome/browser/preferences/BUILD.gn
@@ -321,7 +321,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU
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
@@ -348,6 +348,7 @@ public final class ChromePreferenceKeys {
@@ -358,6 +358,7 @@ public final class ChromePreferenceKeys {
/** Whether the app-specific history info text was already seen by users. */
public static final String HISTORY_APP_SPECIFIC_INFO_SEEN =
"Chrome.History.AppSpecificInfoSeen";
@@ -369,29 +369,29 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
ChromePreferenceKeys.FIRST_RUN_SKIP_WELCOME_PAGE,
ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
ChromePreferenceKeys.HOMEPAGE_ENABLED,
diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
--- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
+++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
@@ -43,6 +43,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa
import org.chromium.ui.display.DisplayUtil;
import org.chromium.ui.edge_to_edge.EdgeToEdgeStateProvider;
import org.chromium.ui.insets.CaptionBarInsetsRectProvider;
diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java
--- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java
+++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java
@@ -26,6 +26,7 @@ import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher.Activit
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.insets.InsetObserver;
import org.chromium.ui.insets.InsetObserver.WindowInsetsConsumer;
import org.chromium.ui.display.DisplayUtil;
import org.chromium.ui.insets.InsetsRectProvider;
@@ -304,6 +305,7 @@ public class AppHeaderCoordinator
InsetsRectProvider insetsRectProvider,
@DesktopWindowHeuristicResult int currentResult,
boolean isOnExternalDisplay) {
@@ -245,6 +246,7 @@ public class AppHeaderUtils {
*/
static @DesktopWindowHeuristicResult int checkIsInDesktopWindow(
InsetsRectProvider insetsRectProvider, Context context) {
+ if (DeviceFormFactor.isForceTabletUI()) return DesktopWindowHeuristicResult.IN_DESKTOP_WINDOW;
@DesktopWindowHeuristicResult int newResult;
Insets captionBarInset = insetsRectProvider.getCachedInset();
boolean isOnExternalDisplay = !DisplayUtil.isContextInDefaultDisplay(context);
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -903,7 +903,7 @@ public class LocationBarCoordinator
@@ -1008,7 +1008,7 @@ public class LocationBarCoordinator
}
private boolean isTabletWindow() {
@@ -403,7 +403,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
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
@@ -1498,6 +1498,13 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1507,6 +1507,13 @@ Your Google account may have other forms of browsing history like searches and a
Privacy guide explanation closed
</message>
@@ -438,9 +438,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container
android:layout_marginBottom="@dimen/toolbar_hairline_height"
android:layout_height="@dimen/toolbar_height_no_shadow" />
@@ -29,13 +29,13 @@ found in the LICENSE file.
android:layout_width="match_parent"
@@ -30,13 +30,13 @@ found in the LICENSE file.
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_anchorGravity="bottom"
- />
+ android:layout_marginTop="@dimen/control_container_height_cromite" />
@@ -506,7 +506,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PorterDuff;
@@ -165,6 +166,24 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
@@ -172,6 +173,24 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
@Initializer
public void initWithToolbar(int toolbarLayoutId, int toolbarLayoutHeightResId) {
try (TraceEvent te = TraceEvent.scoped("ToolbarControlContainer.initWithToolbar")) {
@@ -534,7 +534,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
@@ -64,6 +64,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp;
@@ -65,6 +65,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.ui.base.ViewUtils;
import org.chromium.ui.util.MotionEventUtils;
@@ -542,7 +542,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
import org.chromium.ui.util.TokenHolder;
import org.chromium.url.GURL;
@@ -582,7 +583,9 @@ public abstract class ToolbarLayout extends FrameLayout
@@ -588,7 +589,9 @@ public abstract class ToolbarLayout extends FrameLayout
* not have a tab strip.
*/
protected int getTabStripHeightFromResource() {
@@ -556,15 +556,15 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java
@@ -32,6 +32,7 @@ import org.chromium.chrome.browser.toolbar.top.ToolbarLayout;
import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripHeightObserver;
@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer;
import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionDelegate;
import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionHandler;
import org.chromium.ui.base.ViewUtils;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.resources.dynamics.DynamicResourceReadyOnceCallback;
import org.chromium.ui.util.TokenHolder;
@@ -561,6 +562,7 @@ class HeightTransitionHandler {
@@ -492,6 +493,7 @@ class HeightTransitionHandler {
/** Get the min screen width (in dp) required for the tab strip to become visible. */
private static int getScreenWidthThresholdDp() {
@@ -575,15 +575,15 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
@@ -29,6 +29,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
import org.chromium.components.browser_ui.desktop_windowing.AppHeaderState;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager.AppHeaderObserver;
+import org.chromium.ui.base.DeviceFormFactor;
/** Class used to manage tab strip visibility and height updates. */
@NullMarked
@@ -148,7 +149,10 @@ public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHea
/**
* Class used to manage tab strip visibility and height updates.
@@ -170,7 +171,10 @@ public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHea
mTabStripReservedTopPadding =
controlContainerView()
.getResources()
@@ -613,17 +613,17 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -29,6 +29,7 @@ import org.chromium.content_public.browser.ContentFeatureList;
import org.chromium.content_public.browser.ContentFeatureMap;
@@ -31,6 +31,7 @@ import org.chromium.content_public.browser.ContentFeatureMap;
import org.chromium.ui.base.UiAndroidFeatureList;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
+import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate.BooleanPreferenceDelegate;
/** Fragment to keep track of all the accessibility related preferences. */
@NullMarked
@@ -45,6 +46,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
public static final String PREF_CARET_BROWSING = "caret_browsing";
@@ -51,6 +52,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public static final String PREF_TOUCHPAD_OVERSCROLL_HISTORY_NAVIGATION =
"touchpad_overscroll_history_navigation";
+ private BooleanPreferenceDelegate mForceTabletUIDelegate;
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
@@ -631,7 +631,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -119,6 +123,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -126,6 +130,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.getReaderAccessibilityDelegate().getValue());
readerForAccessibilityPref.setOnPreferenceChangeListener(this);
@@ -644,7 +644,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -191,6 +201,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -212,6 +222,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
mDelegate.getForceEnableZoomAccessibilityDelegate().setValue((Boolean) newValue);
@@ -669,7 +669,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
--- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
+++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
@@ -79,6 +79,14 @@ public class DeviceFormFactor {
@@ -87,6 +87,14 @@ public class DeviceFormFactor {
/** See {@link #setIsTabletForTesting(boolean)}. */
private static @Nullable Boolean sIsTabletForTesting;
@@ -684,7 +684,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
/**
* Each activity could be on a different display, and this will just tell you whether the
* display associated with the application context is "tablet sized". Use {@link
@@ -87,6 +95,7 @@ public class DeviceFormFactor {
@@ -95,6 +103,7 @@ public class DeviceFormFactor {
@CalledByNative
@Deprecated
public static boolean isTablet() {
@@ -692,7 +692,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
if (sIsTabletForTesting != null) {
return sIsTabletForTesting;
}
@@ -117,6 +126,7 @@ public class DeviceFormFactor {
@@ -125,6 +134,7 @@ public class DeviceFormFactor {
* E.g. http://developer.samsung.com/samsung-dex/testing
*/
public static boolean isNonMultiDisplayContextOnTablet(Context context) {
@@ -700,7 +700,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET;
}
@@ -151,6 +161,7 @@ public class DeviceFormFactor {
@@ -159,6 +169,7 @@ public class DeviceFormFactor {
* @return The screen width bucket the device is in (see constants at the top of this class).
*/
private static int detectScreenWidthBucket(Context context) {
@@ -708,7 +708,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return context.getResources().getInteger(R.integer.min_screen_width_bucket);
}
@@ -158,6 +169,7 @@ public class DeviceFormFactor {
@@ -166,6 +177,7 @@ public class DeviceFormFactor {
ThreadUtils.assertOnUiThread();
Context context = windowAndroid.getContext().get();
if (context == null) return 0;
@@ -716,7 +716,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return context.getResources().getInteger(R.integer.min_screen_width_bucket);
}
@@ -167,6 +179,7 @@ public class DeviceFormFactor {
@@ -175,6 +187,7 @@ public class DeviceFormFactor {
*/
@UiThread
public static int getNonMultiDisplayMinimumTabletWidthPx(Context context) {
@@ -724,7 +724,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return getMinimumTabletWidthPx(DisplayAndroid.getNonMultiDisplay(context));
}
@@ -175,6 +188,7 @@ public class DeviceFormFactor {
@@ -183,6 +196,7 @@ public class DeviceFormFactor {
* layout.
*/
public static int getMinimumTabletWidthPx(DisplayAndroid display) {
@@ -14,13 +14,13 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
...etting-to-enable-Credman-for-passkeys.grdp | 12 ++++++++
.../webauthn/AuthenticatorImpl.java | 29 +++++++------------
.../components/webauthn/WebauthnFeatures.java | 2 ++
.../cred_man/CredManSupportProvider.java | 27 +++++------------
.../cred_man/CredManSupportProvider.java | 25 ++++------------
.../webauthn/android/webauthn_feature_map.cc | 1 +
components/webauthn/features.cc | 4 +++
components/webauthn/features.h | 3 ++
device/fido/features.cc | 2 ++
.../authentication_credentials_container.cc | 5 ++++
10 files changed, 75 insertions(+), 37 deletions(-)
10 files changed, 73 insertions(+), 37 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-enable-Credman-for-passkeys.grdp
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
@@ -174,36 +174,36 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
- .WEBAUTHN_IMMEDIATE_GET)
- && isUvpaa));
+ false));
boolean signal_supported =
boolean signalSupported =
isUvpaa
&& DeviceFeatureMap.isEnabled(
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java
--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java
+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java
@@ -16,4 +16,6 @@ import org.chromium.build.annotations.NullMarked;
public abstract class WebauthnFeatures {
@@ -17,4 +17,6 @@ public abstract class WebauthnFeatures {
public static final String WEBAUTHN_ANDROID_PASSKEY_CACHE_MIGRATION =
"WebAuthenticationAndroidPasskeyCacheMigration";
public static final String WEBAUTHN_ANDROID_CRED_MAN_FOR_DEV = "WebAuthnAndroidCredManForDev";
+ public static final String WEBAUTHN_ANDROID_PASSKEY =
+ "WebAuthenticationAndroidPasskey";
}
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java
--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java
+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java
@@ -19,9 +19,11 @@ import org.chromium.base.version_info.VersionInfo;
@@ -19,11 +19,11 @@ import org.chromium.base.version_info.VersionInfo;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.components.webauthn.CredManSupport;
-import org.chromium.components.webauthn.GmsCoreUtils;
import org.chromium.components.webauthn.WebauthnFeatureMap;
import org.chromium.components.webauthn.WebauthnFeatures;
import org.chromium.components.webauthn.WebauthnMode;
import org.chromium.components.webauthn.WebauthnModeProvider;
+import org.chromium.components.webauthn.WebauthnFeatureMap;
+import org.chromium.components.webauthn.WebauthnFeatures;
+import org.chromium.components.webauthn.WebauthnLogger;
@NullMarked
public class CredManSupportProvider {
@@ -57,12 +59,12 @@ public class CredManSupportProvider {
@@ -79,12 +79,12 @@ public class CredManSupportProvider {
}
if (getAndroidVersion() < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
sCredManSupport = CredManSupport.DISABLED;
@@ -219,15 +219,15 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
return sCredManSupport;
}
if (notSkippedBecauseInTests()
@@ -70,14 +72,14 @@ public class CredManSupportProvider {
@@ -92,14 +92,14 @@ public class CredManSupportProvider {
== null) {
sCredManSupport = CredManSupport.DISABLED;
recordCredManAvailability(/*available*/ false);
recordCredManAvailability(/* available= */ false);
- log(TAG, "Disabled because CredentialManager is not available.");
+ WebauthnLogger.logError(TAG, "Disabled because CredentialManager is not available.");
return sCredManSupport;
}
recordCredManAvailability(/*available*/ true);
recordCredManAvailability(/* available= */ true);
final CredManUiRecommender recommender =
ServiceLoaderUtil.maybeCreate(CredManUiRecommender.class);
@@ -236,7 +236,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
boolean gpmInCredMan =
sOverrideForcesGpm != null ? sOverrideForcesGpm : customUiRecommended;
boolean isChrome3pPwmMode =
@@ -116,13 +118,6 @@ public class CredManSupportProvider {
@@ -138,13 +138,6 @@ public class CredManSupportProvider {
"WebAuthentication.Android.CredManAvailability", available);
}
@@ -250,7 +250,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
private static int getAndroidVersion() {
return sOverrideAndroidVersion == null ? Build.VERSION.SDK_INT : sOverrideAndroidVersion;
}
@@ -130,10 +125,4 @@ public class CredManSupportProvider {
@@ -152,10 +145,4 @@ public class CredManSupportProvider {
private static boolean notSkippedBecauseInTests() {
return sOverrideForcesGpm == null && sOverrideAndroidVersion == null;
}
@@ -264,10 +264,10 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
diff --git a/components/webauthn/android/webauthn_feature_map.cc b/components/webauthn/android/webauthn_feature_map.cc
--- a/components/webauthn/android/webauthn_feature_map.cc
+++ b/components/webauthn/android/webauthn_feature_map.cc
@@ -16,6 +16,7 @@ namespace {
// Array of features exposed through the Java WebauthnFeatureMap API.
@@ -17,6 +17,7 @@ namespace {
const base::Feature* const kFeaturesExposedToJava[] = {
&kWebAuthnAndroidPasskeyCacheMigration,
&kWebAuthnAndroidCredManForDev,
+ &kWebAuthnAndroidPasskey,
};
@@ -275,9 +275,9 @@ diff --git a/components/webauthn/android/webauthn_feature_map.cc b/components/we
diff --git a/components/webauthn/features.cc b/components/webauthn/features.cc
--- a/components/webauthn/features.cc
+++ b/components/webauthn/features.cc
@@ -16,6 +16,10 @@ BASE_FEATURE(kWebAuthnAndroidPasskeyCacheMigration,
"WebAuthenticationAndroidPasskeyCacheMigration",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -25,6 +25,10 @@ BASE_FEATURE(kWebAuthnAndroidCredManForDev, base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<std::string> kWebAuthnAndroidCredManForDevMode{
&kWebAuthnAndroidCredManForDev, "mode", ""};
+CROMITE_FEATURE(kWebAuthnAndroidPasskey,
+ "WebAuthenticationAndroidPasskey",
@@ -289,9 +289,9 @@ diff --git a/components/webauthn/features.cc b/components/webauthn/features.cc
diff --git a/components/webauthn/features.h b/components/webauthn/features.h
--- a/components/webauthn/features.h
+++ b/components/webauthn/features.h
@@ -20,6 +20,9 @@ namespace webauthn::features {
@@ -27,6 +27,9 @@ BASE_DECLARE_FEATURE(kWebAuthnAndroidCredManForDev);
COMPONENT_EXPORT(WEBAUTHN)
BASE_DECLARE_FEATURE(kWebAuthnAndroidPasskeyCacheMigration);
extern const base::FeatureParam<std::string> kWebAuthnAndroidCredManForDevMode;
+COMPONENT_EXPORT(WEBAUTHN)
+BASE_DECLARE_FEATURE(kWebAuthnAndroidPasskey);
@@ -302,7 +302,7 @@ diff --git a/components/webauthn/features.h b/components/webauthn/features.h
diff --git a/device/fido/features.cc b/device/fido/features.cc
--- a/device/fido/features.cc
+++ b/device/fido/features.cc
@@ -171,6 +171,7 @@ BASE_FEATURE(kWebAuthnImmediateGet,
@@ -188,6 +188,7 @@ BASE_FEATURE(kWebAuthnImmediateGet,
#else
base::FEATURE_ENABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_ANDROID)
@@ -310,7 +310,7 @@ diff --git a/device/fido/features.cc b/device/fido/features.cc
BASE_FEATURE_PARAM(int,
kWebAuthnImmediateMediationTimeoutMilliseconds,
@@ -183,6 +184,7 @@ BASE_FEATURE_PARAM(int,
@@ -200,6 +201,7 @@ BASE_FEATURE_PARAM(int,
BASE_FEATURE(kWebAuthnImmediateGetAutoselect,
"WebAuthenticationImmediateGetAutoselect",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -321,7 +321,7 @@ diff --git a/device/fido/features.cc b/device/fido/features.cc
diff --git a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc
--- a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc
+++ b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc
@@ -1076,6 +1076,11 @@ DOMException* AuthenticatorStatusToDOMException(
@@ -1090,6 +1090,11 @@ DOMException* AuthenticatorStatusToDOMException(
const WebAuthnDOMExceptionDetailsPtr& dom_exception_details) {
DCHECK_EQ(status != AuthenticatorStatus::ERROR_WITH_DOM_EXCEPTION_DETAILS,
dom_exception_details.is_null());
@@ -284,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -1441,7 +1441,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -1525,7 +1525,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
mActivity,
mStatusIndicatorCoordinator,
isUrlBarFocusedSupplier,
@@ -299,7 +299,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
@@ -201,6 +201,13 @@ public abstract class TabModelSelectorBase
@@ -200,6 +200,13 @@ public abstract class TabModelSelectorBase
return null;
}
@@ -407,7 +407,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
--- a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
+++ b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
@@ -135,6 +135,8 @@ public interface TabWindowManager {
@@ -138,6 +138,8 @@ public interface TabWindowManager {
/** Returns the total number of incognito tabs across all tab model selectors. */
int getIncognitoTabCount();
@@ -419,7 +419,7 @@ diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/brows
diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
--- a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
+++ b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
@@ -566,6 +566,16 @@ public class TabWindowManagerImpl implements TabWindowManager {
@@ -568,6 +568,16 @@ public class TabWindowManagerImpl implements TabWindowManager {
return tabGroupModelFilter.getTabsInGroup(tabGroupId);
}
@@ -497,7 +497,7 @@ diff --git a/chrome/browser/ui/messages/android/java/res/layout/snackbar.xml b/c
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java
+++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java
@@ -137,6 +137,8 @@ public class Snackbar {
@@ -140,6 +140,8 @@ public class Snackbar {
private @Nullable String mTemplateText;
private @Nullable String mActionText;
private @Nullable Object mActionData;
@@ -506,7 +506,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
private int mBackgroundColor;
private int mTextApperanceResId;
private boolean mDefaultLines = true;
@@ -243,6 +245,20 @@ public class Snackbar {
@@ -246,6 +248,20 @@ public class Snackbar {
return this;
}
@@ -530,7 +530,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java
+++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java
@@ -340,6 +340,12 @@ public class SnackbarManager
@@ -348,6 +348,12 @@ public class SnackbarManager
new SnackbarView(
mActivity,
this,
@@ -546,7 +546,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
+++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
@@ -56,6 +56,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -55,6 +55,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
protected final ViewGroup mSnackbarView;
protected final TemplatePreservingTextView mMessageView;
private final TextView mActionButtonView;
@@ -554,38 +554,38 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
private final ImageView mProfileImageView;
private final int mAnimationDuration;
private final boolean mIsTablet;
@@ -102,11 +103,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -100,11 +101,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
public SnackbarView(
Activity activity,
OnClickListener listener,
SnackbarManager manager,
+ OnClickListener dismissListener,
Snackbar snackbar,
ViewGroup parentView,
@Nullable WindowAndroid windowAndroid,
boolean isTablet) {
- this(activity, listener, snackbar, parentView, windowAndroid, null, isTablet);
+ this(activity, listener, dismissListener, snackbar, parentView, windowAndroid, null, isTablet);
- this(activity, manager, snackbar, parentView, windowAndroid, null, isTablet);
+ this(activity, manager, dismissListener, snackbar, parentView, windowAndroid, null, isTablet);
}
/**
@@ -125,6 +127,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -122,6 +124,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
public SnackbarView(
Activity activity,
OnClickListener listener,
SnackbarManager manager,
+ OnClickListener dismissListener,
Snackbar snackbar,
ViewGroup parentView,
@Nullable WindowAndroid windowAndroid,
@@ -155,6 +158,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -158,6 +161,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
(TemplatePreservingTextView) mContainerView.findViewById(R.id.snackbar_message);
mActionButtonView = (TextView) mContainerView.findViewById(R.id.snackbar_button);
mActionButtonView.setOnClickListener(listener);
mActionButtonView.setOnClickListener(manager);
+ mDismissButtonView = (TextView) mContainerView.findViewById(R.id.snackbar_dismiss);
+ mDismissButtonView.setOnClickListener(dismissListener);
mProfileImageView = (ImageView) mContainerView.findViewById(R.id.snackbar_profile_image);
mEdgeToEdgeSupplier = edgeToEdgeSupplier;
// TODO(crbug/com/451807932): Replace with a custom pad adjuster to account for inset
@@ -431,6 +436,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
// TODO(crbug.com/451807932): Replace with a custom pad adjuster to account for inset
@@ -434,6 +439,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
mActionButtonView.setVisibility(View.VISIBLE);
mActionButtonView.setContentDescription(snackbar.getActionText());
setViewText(mActionButtonView, snackbar.getActionText(), animate);
@@ -638,7 +638,7 @@ diff --git a/content/browser/web_contents/web_contents_android.h b/content/brows
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
@@ -4151,8 +4151,10 @@ void WebContentsImpl::Stop() {
@@ -4096,8 +4096,10 @@ void WebContentsImpl::Stop() {
void WebContentsImpl::SetPageFrozen(bool frozen) {
TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen);
@@ -665,7 +665,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon
@Override
public void setDisplayCutoutSafeArea(Rect insets) {
if (mNativeWebContentsAndroid == 0) return;
@@ -1480,6 +1486,8 @@ public class WebContentsImpl
@@ -1486,6 +1492,8 @@ public class WebContentsImpl
void setFocus(long nativeWebContentsAndroid, boolean focused);
@@ -734,7 +734,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -4655,6 +4655,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) {
@@ -4665,6 +4665,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) {
}
void Document::DispatchFreezeEvent() {
@@ -745,7 +745,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -3306,6 +3306,7 @@ void LocalFrame::DidFreeze() {
@@ -3321,6 +3321,7 @@ void LocalFrame::DidFreeze() {
LoaderFreezeMode freeze_mode = GetLoaderFreezeMode();
GetDocument()->Fetcher()->SetDefersLoading(freeze_mode);
Loader().SetDefersLoading(freeze_mode);
@@ -753,7 +753,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
}
void LocalFrame::DidResume() {
@@ -3320,6 +3321,7 @@ void LocalFrame::DidResume() {
@@ -3335,6 +3336,7 @@ void LocalFrame::DidResume() {
GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone);
Loader().SetDefersLoading(LoaderFreezeMode::kNone);
@@ -47,7 +47,7 @@ Require: bromite-build-utils.patch
...tomTriStateSiteSettingsPreferenceImpl.java | 24 +
.../ContentSettingsResources.java | 32 +-
.../site_settings/SingleCategorySettings.java | 57 ++-
.../site_settings/SingleWebsiteSettings.java | 50 ++-
.../site_settings/SingleWebsiteSettings.java | 48 +-
.../site_settings/SiteSettings.java | 33 +-
.../site_settings/SiteSettingsCategory.java | 18 +-
.../site_settings/SiteSettingsDelegate.java | 2 +
@@ -85,7 +85,7 @@ Require: bromite-build-utils.patch
.../platform/web_content_settings_client.h | 13 +
.../execution_context/execution_context.cc | 16 +
.../execution_context/execution_context.h | 5 +
74 files changed, 1964 insertions(+), 106 deletions(-)
74 files changed, 1962 insertions(+), 106 deletions(-)
create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java
@@ -99,7 +99,7 @@ Require: bromite-build-utils.patch
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
@@ -70,6 +70,10 @@ import org.chromium.url.GURL;
@@ -71,6 +71,10 @@ import org.chromium.url.GURL;
import java.util.List;
import java.util.Set;
@@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C
/** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */
@NullMarked
public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
@@ -239,7 +243,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
@@ -240,7 +244,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
@Override
public boolean isHelpAndFeedbackEnabled() {
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C
}
@Override
@@ -377,6 +381,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
@@ -378,6 +382,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin);
}
@@ -152,7 +152,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
--- a/chrome/browser/resources/settings/BUILD.gn
+++ b/chrome/browser/resources/settings/BUILD.gn
@@ -358,6 +358,7 @@ build_webui("build") {
@@ -360,6 +360,7 @@ build_webui("build") {
"privacy_sandbox/privacy_sandbox_browser_proxy.ts",
"relaunch_mixin.ts",
"reset_page/reset_browser_proxy.ts",
@@ -160,7 +160,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc
"route.ts",
"router.ts",
"safety_hub/safety_hub_browser_proxy.ts",
@@ -371,7 +372,6 @@ build_webui("build") {
@@ -373,7 +374,6 @@ build_webui("build") {
"site_settings/constants.ts",
"site_settings/site_settings_mixin.ts",
"site_settings/site_settings_browser_proxy.ts",
@@ -171,7 +171,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.html b/chrome/browser/resources/settings/privacy_page/privacy_page_index.html
--- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.html
@@ -623,4 +623,5 @@
@@ -609,4 +609,5 @@
</zoom-levels>
</template>
@@ -288,7 +288,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc
/**
* Add all of the child routes that originate from the privacy route,
@@ -155,6 +156,7 @@ function addPrivacyChildRoutes(r: Partial<SettingsRoutes>) {
@@ -150,6 +151,7 @@ function addPrivacyChildRoutes(r: Partial<SettingsRoutes>) {
r.SITE_SETTINGS_LOCAL_NETWORK_ACCESS =
r.SITE_SETTINGS.createChild('localNetworkAccess');
}
@@ -395,7 +395,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d
diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html
--- a/chrome/browser/resources/settings/site_settings/site_details.html
+++ b/chrome/browser/resources/settings/site_settings/site_details.html
@@ -334,5 +334,6 @@
@@ -332,5 +332,6 @@
label="$i18n{siteSettingsLocalNetworkAccess}">
</site-details-permission>
</template>
@@ -405,7 +405,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b
diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts
--- a/chrome/browser/resources/settings/site_settings/site_details.ts
+++ b/chrome/browser/resources/settings/site_settings/site_details.ts
@@ -71,8 +71,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase {
@@ -73,8 +73,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase {
return 'site-details';
}
@@ -609,7 +609,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_mixin
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_page.ts b/chrome/browser/resources/settings/site_settings/site_settings_page.ts
--- a/chrome/browser/resources/settings/site_settings/site_settings_page.ts
+++ b/chrome/browser/resources/settings/site_settings/site_settings_page.ts
@@ -51,7 +51,7 @@ function getCategoryItemMap(): Map<ContentSettingsTypes, CategoryListItem> {
@@ -52,7 +52,7 @@ function getCategoryItemMap(): Map<ContentSettingsTypes, CategoryListItem> {
}
// The following list is ordered alphabetically by |id|. The order in which
// these appear in the UI is determined elsewhere in this file.
@@ -739,7 +739,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_util.
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1606,6 +1606,7 @@ static_library("ui") {
@@ -1620,6 +1620,7 @@ static_library("ui") {
"//components/commerce/core/webui",
"//components/contextual_search:public",
"//components/endpoint_fetcher",
@@ -747,7 +747,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
"//components/enterprise/common:files_scan_data",
"//components/feedback/proto",
"//components/headless/console_message_logger",
@@ -4761,6 +4762,7 @@ static_library("ui") {
@@ -4790,6 +4791,7 @@ static_library("ui") {
"//components/power_bookmarks/core",
"//components/power_bookmarks/storage",
"//components/prefs",
@@ -787,7 +787,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc b/chrome
diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc
--- a/chrome/browser/ui/views/page_info/page_info_main_view.cc
+++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc
@@ -58,6 +58,7 @@
@@ -55,6 +55,7 @@
#include "ui/views/layout/box_layout.h"
#include "ui/views/layout/flex_layout.h"
#include "ui/views/vector_icons.h"
@@ -795,7 +795,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b
#include "ui/views/view_class_properties.h"
#if BUILDFLAG(FULL_SAFE_BROWSING)
@@ -284,8 +285,20 @@ void PageInfoMainView::SetPermissionInfo(
@@ -259,8 +260,20 @@ void PageInfoMainView::SetPermissionInfo(
scroll_view->SetDrawOverflowIndicator(false);
auto* content_view =
scroll_view->SetContents(std::make_unique<views::View>());
@@ -818,7 +818,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b
content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW);
content_view->SetProperty(views::kElementIdentifierKey,
kPermissionsElementId);
@@ -300,11 +313,16 @@ void PageInfoMainView::SetPermissionInfo(
@@ -275,11 +288,16 @@ void PageInfoMainView::SetPermissionInfo(
}
}
@@ -835,7 +835,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b
toggle_row->SetProperty(views::kCrossAxisAlignmentKey,
views::LayoutAlignment::kStretch);
syncable_permission_rows_.emplace(permission.type, toggle_row);
@@ -312,6 +330,8 @@ void PageInfoMainView::SetPermissionInfo(
@@ -287,6 +305,8 @@ void PageInfoMainView::SetPermissionInfo(
}
for (auto& object : chosen_object_info_list) {
@@ -844,7 +844,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b
// The view takes ownership of the object info.
auto object_view = std::make_unique<ChosenObjectView>(
std::move(object),
@@ -322,6 +342,10 @@ void PageInfoMainView::SetPermissionInfo(
@@ -297,6 +317,10 @@ void PageInfoMainView::SetPermissionInfo(
content_view->AddChildView(std::move(object_view)));
}
@@ -867,7 +867,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom
#include "components/page_info/core/features.h"
#include "components/page_info/core/proto/about_this_site_metadata.pb.h"
#include "components/page_info/page_info.h"
@@ -291,7 +293,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon(
@@ -280,7 +282,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon(
bool blocked_on_system_level) {
PermissionSetting setting =
permission.setting.value_or(permission.default_setting);
@@ -882,7 +882,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom
auto* info = content_settings::PermissionSettingsRegistry::GetInstance()->Get(
permission.type);
// For guard content settings and Automatic Picture-in-Picture, ASK is treated
@@ -595,6 +604,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon(
@@ -584,6 +593,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon(
icon = &vector_icons::kPrinterIcon;
break;
default:
@@ -903,7 +903,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom
diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome/browser/ui/views/page_info/page_info_view_factory.h
--- a/chrome/browser/ui/views/page_info/page_info_view_factory.h
+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.h
@@ -97,6 +97,11 @@ class PageInfoViewFactory {
@@ -95,6 +95,11 @@ class PageInfoViewFactory {
const PageInfo::PermissionInfo& info,
bool blocked_on_system_level = false);
@@ -1236,7 +1236,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
#include "components/password_manager/core/browser/leak_detection_dialog_utils.h"
#include "components/password_manager/core/browser/manage_passwords_referrer.h"
#include "components/password_manager/core/common/password_manager_features.h"
@@ -4048,6 +4052,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
@@ -4111,6 +4115,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
policy_indicator::AddLocalizedStrings(html_source);
AddSecurityKeysStrings(html_source);
@@ -1296,7 +1296,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc
--- a/chrome/browser/ui/webui/settings/site_settings_helper.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc
@@ -46,6 +46,8 @@
@@ -47,6 +47,8 @@
#include "chrome/grit/generated_resources.h"
#include "components/content_settings/core/browser/content_settings_provider.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -1374,7 +1374,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b
NOTREACHED() << static_cast<int32_t>(type)
<< " is not a recognized content settings type.";
}
@@ -668,6 +689,13 @@ std::vector<ContentSettingsType> GetVisiblePermissionCategories(
@@ -664,6 +685,13 @@ std::vector<ContentSettingsType> GetVisiblePermissionCategories(
base_types->push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS);
}
@@ -1391,8 +1391,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b
diff --git a/components/browser_ui/settings/android/BUILD.gn b/components/browser_ui/settings/android/BUILD.gn
--- a/components/browser_ui/settings/android/BUILD.gn
+++ b/components/browser_ui/settings/android/BUILD.gn
@@ -90,6 +90,7 @@ android_resources("java_resources") {
"java/res/layout/managed_disclaimer_preference_for_radio_groups.xml",
@@ -92,6 +92,7 @@ android_resources("java_resources") {
"java/res/layout/preference_chrome_button.xml",
"java/res/layout/preference_chrome_image_view.xml",
"java/res/layout/preference_spinner.xml",
+ "java/res/layout/preference_spinner_single_widget.xml",
@@ -1579,7 +1579,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
}
android_library("javatests") {
@@ -205,6 +222,7 @@ robolectric_library("junit") {
@@ -208,6 +225,7 @@ robolectric_library("junit") {
}
android_resources("java_resources") {
@@ -2306,7 +2306,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
@@ -360,6 +360,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -361,6 +361,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
} else {
@ContentSetting
Integer contentSetting = website.site().getContentSetting(browserContextHandle, type);
@@ -2317,7 +2317,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
if (contentSetting != null) {
return ContentSetting.BLOCK == contentSetting;
}
@@ -551,6 +555,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -552,6 +556,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS))
: null;
@@ -2325,7 +2325,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
configureGlobalToggles();
if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) {
RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered");
@@ -586,7 +591,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -587,7 +592,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
if (queryHasChanged) getInfoForOrigins();
});
@@ -2335,7 +2335,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
MenuItem help =
menu.add(
Menu.NONE,
@@ -598,12 +604,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -599,12 +605,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
getResources(),
R.drawable.ic_help_and_feedback,
getContext().getTheme()));
@@ -2356,7 +2356,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) {
getSiteSettingsDelegate()
.launchProtectedContentHelpAndFeedbackActivity(getActivity());
@@ -681,6 +695,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -682,6 +696,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
public boolean onPreferenceChange(Preference preference, Object newValue) {
BrowserContextHandle browserContextHandle = getBrowserContextHandle();
PrefService prefService = UserPrefs.get(browserContextHandle);
@@ -2368,7 +2368,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
if (BINARY_RADIO_BUTTON_KEY.equals(preference.getKey())
|| BINARY_TOGGLE_KEY.equals(preference.getKey())) {
assert !mCategory.isManaged();
@@ -855,7 +874,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -856,7 +875,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
? R.string.website_settings_add_site_description_javascript_optimizer_block
: R.string.website_settings_add_site_description_javascript_optimizer_allow;
}
@@ -2377,7 +2377,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
}
// OnPreferenceClickListener:
@@ -973,17 +992,15 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -974,17 +993,15 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
break;
}
@@ -2398,7 +2398,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
String exceptionDialogMessage =
exceptionDialogMessageResourceId != 0
? getString(exceptionDialogMessageResourceId)
@@ -994,7 +1011,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -995,7 +1012,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
getStyledContext(),
ADD_EXCEPTION_KEY,
exceptionDialogMessage,
@@ -2407,7 +2407,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
mCategory,
this));
@@ -1178,8 +1195,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -1179,8 +1196,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
private boolean isBlocked() {
switch (mGlobalToggleLayout) {
case GlobalToggleLayout.TRI_STATE_TOGGLE:
@@ -2424,7 +2424,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
return (triStateToggle.getCheckedSetting() == ContentSetting.BLOCK);
case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE:
TriStateCookieSettingsPreference triStateCookieToggle =
@@ -1332,7 +1357,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -1333,7 +1358,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
} else if (res_id != -1) {
infoText.setSummary(res_id);
} else {
@@ -2437,7 +2437,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
}
// Hide the anti-abuse text preferences, as needed.
@@ -1371,6 +1400,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -1372,6 +1401,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
} else {
screen.removePreference(mLocationTriStatePref);
}
@@ -2445,7 +2445,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
maybeShowReasonToggleDisabled(screen);
@@ -1579,6 +1609,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
@@ -1580,6 +1610,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
iconIds = ContentSettingsResources.getTriStateSettingIconIDs(contentType);
}
triStateToggle.initialize(
@@ -2453,8 +2453,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
setting,
descriptionIds,
iconIds,
@@ -1867,6 +1898,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
selectedButton.setChecked(true);
@@ -1891,6 +1922,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment
setLocationAccessEnabled.accept(allowButton.isChecked());
}
+ AlertDialog.Builder alertDialogBuilder =
@@ -2471,7 +2471,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
@@ -57,6 +57,7 @@ import java.util.Collection;
@@ -58,6 +58,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -2479,7 +2479,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
/** Shows the permissions and other settings for a particular website. */
@NullMarked
@@ -200,7 +201,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -204,7 +205,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
case ContentSettingsType.WINDOW_MANAGEMENT:
return "window_management_permission_list";
default:
@@ -2488,7 +2488,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
}
}
@@ -631,7 +632,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -650,7 +651,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
private void setupContentSettingsPreferences() {
Preference permissionsHeaderPref = findPreference(PREF_PERMISSIONS_HEADER);
mMaxPermissionOrder = permissionsHeaderPref.getOrder();
@@ -2498,7 +2498,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
Preference preference = getPermissionPreference(type);
preference.setKey(getPreferenceKey(type));
@@ -663,6 +665,19 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -682,6 +684,19 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
}
private Preference getPermissionPreference(@ContentSettingsType.EnumType int type) {
@@ -2518,25 +2518,23 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
boolean isOneTime = isOneTime(type);
if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS && !isOneTime) {
return createTwoActionLocationSwitchPreference();
@@ -1258,7 +1273,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@ContentSetting @Nullable Integer value,
boolean isEmbargoed,
boolean isOneTime) {
@@ -1354,7 +1369,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
value = ContentSetting.BLOCK;
}
- if (value == null) return;
+ @ContentSettingsType.EnumType
+ int content_type = getContentSettingsTypeFromPreferenceKey(preference.getKey());
+ BromiteCustomContentSetting cs =
+ BromiteCustomContentSettingImpl.getContentSetting(content_type);
+ BromiteCustomContentSettingImpl.getContentSetting(contentType);
+ if (value == null && cs == null) return;
+ if (value == null) {
+ if (cs.showIntoInfoPage() == false) return;
+ value = WebsitePreferenceBridge.getDefaultContentSetting(
+ getSiteSettingsDelegate().getBrowserContextHandle(), content_type);
+ getSiteSettingsDelegate().getBrowserContextHandle(), contentType);
+ }
setUpPreferenceCommon(preference, value);
preference.setOnPreferenceChangeListener(this);
@ContentSettingsType.EnumType
@@ -1310,10 +1334,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -1404,10 +1426,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
oneTimePreference.setBackgroundColor(mHighlightColor);
}
} else {
@@ -2555,7 +2553,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
AppCompatResources.getColorStateList(getContext(), mHighlightColor)
.getDefaultColor());
}
@@ -1619,7 +1647,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -1713,7 +1739,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
if (newValue instanceof Boolean) {
permission = (Boolean) newValue ? getEnabledValue(type) : ContentSetting.BLOCK;
} else {
@@ -2769,7 +2767,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
@@ -361,7 +361,11 @@ public final class Website implements WebsiteEntry {
@@ -368,7 +368,11 @@ public final class Website implements WebsiteEntry {
RecordUserAction.record("SoundContentSetting.UnmuteBy.SiteSettings");
}
}
@@ -2924,7 +2922,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
namespace content_settings {
@@ -858,6 +859,7 @@ void ContentSettingsRegistry::Init() {
@@ -848,6 +849,7 @@ void ContentSettingsRegistry::Init() {
WebsiteSettingsRegistry::PLATFORM_CHROMEOS,
ContentSettingsInfo::INHERIT_IN_INCOGNITO,
PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
@@ -3271,7 +3269,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai
diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom
--- a/components/content_settings/core/common/content_settings_types.mojom
+++ b/components/content_settings/core/common/content_settings_types.mojom
@@ -495,5 +495,7 @@ enum ContentSettingsType {
@@ -492,5 +492,7 @@ enum ContentSettingsType {
// when suspicious warning is shown. If the user has selected this, the
// notification permission will not be revoked based on suspicious verdict.
SUSPICIOUS_NOTIFICATION_SHOW_ORIGINAL,
@@ -3392,7 +3390,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h
diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java
--- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java
+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java
@@ -203,6 +203,15 @@ public class PageInfoPermissionsController extends PageInfoPreferenceSubpageCont
@@ -241,6 +241,15 @@ public class PageInfoPermissionsController extends PageInfoPreferenceSubpageCont
: perm1.nameMidSentence.toString());
}
@@ -3419,7 +3417,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/content_settings/core/common/features.h"
@@ -205,6 +206,15 @@ void PageInfoControllerAndroid::SetPermissionInfo(
@@ -206,6 +207,15 @@ void PageInfoControllerAndroid::SetPermissionInfo(
permissions_to_display.push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS);
}
@@ -3434,8 +3432,8 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
+
std::map<ContentSettingsType, /*allowed*/ bool>
user_specified_settings_to_display;
std::map<ContentSettingsType, bool>
@@ -267,6 +277,14 @@ std::optional<PermissionSetting> PageInfoControllerAndroid::GetSettingToDisplay(
@@ -284,6 +294,14 @@ std::optional<PermissionSetting> PageInfoControllerAndroid::GetSettingToDisplay(
return permission.setting;
}
@@ -3461,10 +3459,10 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
#include "components/content_settings/browser/ui/cookie_controls_controller.h"
#include "components/content_settings/core/browser/content_settings_registry.h"
#include "components/content_settings/core/browser/content_settings_uma_util.h"
@@ -1405,6 +1406,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
// via `HasContentSettingChangedViaPageInfo(type)`.
bool PageInfo::ShouldShowPermission(
const PageInfo::PermissionInfo& info) const {
@@ -1391,6 +1392,14 @@ bool PageInfo::ShouldShowPermission(
}
#endif // BUILDFLAG(IS_ANDROID)
+ content_settings::WebsiteSettingsRegistry* website_settings =
+ content_settings::WebsiteSettingsRegistry::GetInstance();
+ for (const content_settings::WebsiteSettingsInfo* winfo : *website_settings) {
@@ -3476,7 +3474,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
// Note |ContentSettingsType::ADS| will show up regardless of its default
// value when it has been activated on the current origin.
if (info.type == ContentSettingsType::ADS) {
@@ -1532,7 +1541,19 @@ void PageInfo::PresentSitePermissions() {
@@ -1514,7 +1523,19 @@ void PageInfo::PresentSitePermissions() {
HostContentSettingsMap* content_settings = GetContentSettings();
DCHECK(web_contents_);
@@ -3603,7 +3601,7 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
+++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -70,6 +70,22 @@
@@ -77,6 +77,22 @@
namespace blink {
@@ -3629,18 +3627,18 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
+++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -43,6 +43,7 @@
#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink-forward.h"
@@ -44,6 +44,7 @@
#include "third_party/blink/public/mojom/origin_trials/origin_trial_feature.mojom-blink-forward.h"
#include "third_party/blink/public/mojom/permissions_policy/policy_disposition.mojom-blink-forward.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom-blink-forward.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
#include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/execution_context/security_context.h"
@@ -101,6 +102,10 @@ class SecurityOrigin;
class ScriptState;
class ScriptWrappable;
class TrustedTypePolicyFactory;
@@ -135,6 +136,10 @@ class TrustedTypePolicyFactory;
class WebCodecsLogger;
class WebPrintingManager;
class WebViewAndroid;
+class WebContentSettingsClient;
+
+CORE_EXPORT WebContentSettingsClient* GetContentSettingsClientFor(
@@ -6,9 +6,12 @@ Do not expose the user's preferred font scale to CSS.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../blink/common/features_cc/Disable-CSSPreferredTextScale.inc | 1 +
.../blink/renderer/platform/runtime_enabled_features.json5 | 3 +--
2 files changed, 2 insertions(+), 2 deletions(-)
.../common/features_cc/Disable-CSSPreferredTextScale.inc | 1 +
.../core/css/document_style_environment_variables.cc | 6 ++++--
.../blink/renderer/core/css/style_environment_variables.cc | 4 +++-
third_party/blink/renderer/core/page/page.cc | 4 +++-
.../blink/renderer/platform/runtime_enabled_features.json5 | 3 +++
5 files changed, 14 insertions(+), 4 deletions(-)
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-CSSPreferredTextScale.inc
diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-CSSPreferredTextScale.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-CSSPreferredTextScale.inc
@@ -17,17 +20,61 @@ new file mode 100644
+++ b/cromite_flags/third_party/blink/common/features_cc/Disable-CSSPreferredTextScale.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kCSSPreferredTextScale);
diff --git a/third_party/blink/renderer/core/css/document_style_environment_variables.cc b/third_party/blink/renderer/core/css/document_style_environment_variables.cc
--- a/third_party/blink/renderer/core/css/document_style_environment_variables.cc
+++ b/third_party/blink/renderer/core/css/document_style_environment_variables.cc
@@ -55,8 +55,10 @@ DocumentStyleEnvironmentVariables::DocumentStyleEnvironmentVariables(
StyleEnvironmentVariables& parent,
Document& document)
: StyleEnvironmentVariables(parent), document_(&document) {
- SetPreferredTextScale(
- document_->GetSettings()->GetAccessibilityFontScaleFactor());
+ if (RuntimeEnabledFeatures::CSSPreferredTextScaleEnabled()) {
+ SetPreferredTextScale(
+ document_->GetSettings()->GetAccessibilityFontScaleFactor());
+ }
}
void DocumentStyleEnvironmentVariables::RecordVariableUsage(
diff --git a/third_party/blink/renderer/core/css/style_environment_variables.cc b/third_party/blink/renderer/core/css/style_environment_variables.cc
--- a/third_party/blink/renderer/core/css/style_environment_variables.cc
+++ b/third_party/blink/renderer/core/css/style_environment_variables.cc
@@ -49,7 +49,9 @@ void SetDefaultEnvironmentVariables(StyleEnvironmentVariables* instance) {
instance->SetVariable(UADefinedVariable::kKeyboardInsetHeight,
kKeyboardInsetDefault);
- instance->SetVariable(UADefinedVariable::kPreferredTextScale, "1");
+ if (RuntimeEnabledFeatures::CSSPreferredTextScaleEnabled()) {
+ instance->SetVariable(UADefinedVariable::kPreferredTextScale, "1");
+ }
}
} // namespace.
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -1056,7 +1056,9 @@ void Page::SettingsChanged(ChangeType change_type) {
}
break;
case ChangeType::kFontScaleFactor:
-
+ if (!RuntimeEnabledFeatures::CSSPreferredTextScaleEnabled()) {
+ break;
+ }
for (Frame* frame = MainFrame(); frame;
frame = frame->Tree().TraverseNext()) {
LocalFrame* local_frame = DynamicTo<LocalFrame>(frame);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1548,8 +1548,7 @@
@@ -1582,6 +1582,9 @@
name: "CSSPositionStickyStaticScrollPosition",
status: "test",
},
{
- name: "CSSPreferredTextScale",
- status: "stable",
+ {
+ name: "CSSPreferredTextScale", status: "test", public: true
},
+ },
// https://drafts.csswg.org/css-values-5/#progress
// progress()
{
--
@@ -20,7 +20,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../settings/privacy_page/gpc_toggle.ts | 112 ++++++++++++++++++
.../Enable-Global-Privacy-Control.grdp | 15 +++
chrome/browser/ui/prefs/pref_watcher.cc | 4 +
chrome/browser/ui/prefs/pref_watcher.h | 1 +
chrome/browser/ui/prefs/pref_watcher.h | 2 +
.../settings_localized_strings_provider.cc | 3 +
.../tracking_protection_prefs.cc | 1 +
.../tracking_protection_prefs.h | 2 +
@@ -46,7 +46,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../web_service_worker_fetch_context_impl.cc | 3 +
...shared_worker_global_scope_context_impl.cc | 3 +
.../platform/runtime_enabled_features.json5 | 5 +
42 files changed, 390 insertions(+)
42 files changed, 391 insertions(+)
create mode 100644 chrome/android/java/res/xml/gpc_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java
create mode 100644 chrome/browser/resources/settings/privacy_page/gpc_toggle.html
@@ -61,7 +61,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
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
@@ -656,6 +656,7 @@ chrome_java_resources = [
@@ -675,6 +675,7 @@ chrome_java_resources = [
"java/res/xml/contextual_search_preferences.xml",
"java/res/xml/developer_preferences.xml",
"java/res/xml/do_not_track_preferences.xml",
@@ -72,7 +72,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
@@ -940,6 +940,7 @@ chrome_java_sources = [
@@ -953,6 +953,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
"java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java",
"java/src/org/chromium/chrome/browser/policy/PolicyAuditorBridge.java",
@@ -103,7 +103,7 @@ new file mode 100644
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -54,6 +54,10 @@ found in the LICENSE file.
@@ -48,6 +48,10 @@ found in the LICENSE file.
android:key="do_not_track"
android:title="@string/do_not_track_title"
android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings" />
@@ -178,7 +178,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -127,6 +127,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -128,6 +128,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
private static final String PREF_HTTPS_FIRST_MODE_LEGACY = "https_first_mode_legacy";
private static final String PREF_SECURE_DNS = "secure_dns";
private static final String PREF_USAGE_STATS = "usage_stats_reporting";
@@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection";
private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
@@ -575,6 +576,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -567,6 +568,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
: R.string.text_off);
}
@@ -204,7 +204,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1928,6 +1928,21 @@
@@ -1943,6 +1943,21 @@
<message name="IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL" desc="The accessibility label for a link to learn more about Do Not Track">
Learn more about Do Not Track
</message>
@@ -229,7 +229,7 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -415,6 +415,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
@@ -419,6 +419,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
(*s_allowlist)[::prefs::kTrackingProtectionLevel] =
settings_api::PrefType::kNumber;
(*s_allowlist)[::prefs::kEnableDoNotTrack] = settings_api::PrefType::kBoolean;
@@ -240,10 +240,10 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro
diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc
--- a/chrome/browser/renderer_preferences_util.cc
+++ b/chrome/browser/renderer_preferences_util.cc
@@ -146,6 +146,9 @@ void UpdateFromSystemSettings(blink::RendererPreferences* prefs,
@@ -152,6 +152,9 @@ void UpdateFromSystemSettings(blink::RendererPreferences* prefs,
prefs->referrers_policy = pref_service->GetInteger(prefs::kReferrersPolicy);
prefs->enable_do_not_track =
TrackingProtectionSettingsFactory::GetForProfile(profile)
->IsDoNotTrackEnabled();
pref_service->GetBoolean(prefs::kEnableDoNotTrack);
+ prefs->enable_gpc =
+ TrackingProtectionSettingsFactory::GetForProfile(profile)
+ ->IsGPCEnabled();
@@ -253,10 +253,10 @@ diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/render
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
--- a/chrome/browser/resources/settings/BUILD.gn
+++ b/chrome/browser/resources/settings/BUILD.gn
@@ -130,6 +130,7 @@ build_webui("build") {
@@ -129,6 +129,7 @@ build_webui("build") {
"performance_page/tab_discard/exception_tabbed_add_dialog.ts",
"privacy_page/cookies_page.ts",
"privacy_page/do_not_track_toggle.ts",
"privacy_page/incognito_tracking_protections_page.ts",
+ "privacy_page/gpc_toggle.ts",
"privacy_page/personalization_options.ts",
"privacy_page/privacy_guide/privacy_guide_ad_topics_fragment.ts",
@@ -264,7 +264,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc
diff --git a/chrome/browser/resources/settings/privacy_page/cookies_page.html b/chrome/browser/resources/settings/privacy_page/cookies_page.html
--- a/chrome/browser/resources/settings/privacy_page/cookies_page.html
+++ b/chrome/browser/resources/settings/privacy_page/cookies_page.html
@@ -205,6 +205,8 @@
@@ -206,6 +206,8 @@
</template>
<settings-do-not-track-toggle id="doNotTrack" prefs="{{prefs}}">
</settings-do-not-track-toggle>
@@ -276,7 +276,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/cookies_page.html b/
diff --git a/chrome/browser/resources/settings/privacy_page/cookies_page.ts b/chrome/browser/resources/settings/privacy_page/cookies_page.ts
--- a/chrome/browser/resources/settings/privacy_page/cookies_page.ts
+++ b/chrome/browser/resources/settings/privacy_page/cookies_page.ts
@@ -20,6 +20,7 @@ import '../privacy_icons.html.js';
@@ -22,6 +22,7 @@ import '../privacy_icons.html.js';
import '../settings_page/settings_subpage.js';
import '../settings_shared.css.js';
import '../site_settings/site_list.js';
@@ -461,7 +461,7 @@ new file mode 100644
diff --git a/chrome/browser/ui/prefs/pref_watcher.cc b/chrome/browser/ui/prefs/pref_watcher.cc
--- a/chrome/browser/ui/prefs/pref_watcher.cc
+++ b/chrome/browser/ui/prefs/pref_watcher.cc
@@ -175,6 +175,10 @@ void PrefWatcher::OnDoNotTrackEnabledChanged() {
@@ -199,6 +199,10 @@ void PrefWatcher::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) {
UpdateRendererPreferences();
}
@@ -475,18 +475,19 @@ diff --git a/chrome/browser/ui/prefs/pref_watcher.cc b/chrome/browser/ui/prefs/p
diff --git a/chrome/browser/ui/prefs/pref_watcher.h b/chrome/browser/ui/prefs/pref_watcher.h
--- a/chrome/browser/ui/prefs/pref_watcher.h
+++ b/chrome/browser/ui/prefs/pref_watcher.h
@@ -44,6 +44,7 @@ class PrefWatcher : public KeyedService,
@@ -41,6 +41,8 @@ class PrefWatcher : public KeyedService,
// ui::NativeThemeObserver:
void OnNativeThemeUpdated(ui::NativeTheme* observed_theme) override;
void OnDoNotTrackEnabledChanged() override;
+ void OnGPCEnabledChanged() override;
+
void UpdateRendererPreferences();
void OnWebPrefChanged(const std::string& pref_name);
void OnLiveCaptionEnabledPrefChanged(const std::string& pref_name);
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2140,6 +2140,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -2166,6 +2166,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"doNotTrackDialogMessage", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT},
{"doNotTrackDialogLearnMoreA11yLabel",
IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL},
@@ -499,7 +500,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc
--- a/components/privacy_sandbox/tracking_protection_prefs.cc
+++ b/components/privacy_sandbox/tracking_protection_prefs.cc
@@ -17,6 +17,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -16,6 +16,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kFingerprintingProtectionEnabled, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
@@ -510,9 +511,9 @@ diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/component
diff --git a/components/privacy_sandbox/tracking_protection_prefs.h b/components/privacy_sandbox/tracking_protection_prefs.h
--- a/components/privacy_sandbox/tracking_protection_prefs.h
+++ b/components/privacy_sandbox/tracking_protection_prefs.h
@@ -108,6 +108,8 @@ inline constexpr char kFingerprintingProtectionEnabled[] =
// Whether to send the DNT header.
inline constexpr char kEnableDoNotTrack[] = "enable_do_not_track";
@@ -101,6 +101,8 @@ inline constexpr char kIpProtectionInitializedByDogfood[] =
inline constexpr char kFingerprintingProtectionEnabled[] =
"tracking_protection.fingerprinting_protection_enabled";
+inline constexpr char kEnableGPC[] = "enable_gpc";
+
@@ -524,7 +525,7 @@ diff --git a/components/privacy_sandbox/tracking_protection_settings.cc b/compon
+++ b/components/privacy_sandbox/tracking_protection_settings.cc
@@ -48,6 +48,11 @@ TrackingProtectionSettings::TrackingProtectionSettings(
base::BindRepeating(
&TrackingProtectionSettings::OnDoNotTrackEnabledPrefChanged,
&TrackingProtectionSettings::OnIpProtectionPrefChanged,
base::Unretained(this)));
+ pref_change_registrar_.Add(
+ prefs::kEnableGPC,
@@ -532,9 +533,9 @@ diff --git a/components/privacy_sandbox/tracking_protection_settings.cc b/compon
+ &TrackingProtectionSettings::OnGPCEnabledPrefChanged,
+ base::Unretained(this)));
pref_change_registrar_.Add(
prefs::kIpProtectionEnabled,
prefs::kBlockAll3pcToggleEnabled,
base::BindRepeating(
@@ -218,6 +223,16 @@ void TrackingProtectionSettings::OnDoNotTrackEnabledPrefChanged() {
@@ -135,6 +140,16 @@ void TrackingProtectionSettings::OnEnterpriseControlForPrefsChanged() {
}
}
@@ -554,19 +555,19 @@ diff --git a/components/privacy_sandbox/tracking_protection_settings.cc b/compon
diff --git a/components/privacy_sandbox/tracking_protection_settings.h b/components/privacy_sandbox/tracking_protection_settings.h
--- a/components/privacy_sandbox/tracking_protection_settings.h
+++ b/components/privacy_sandbox/tracking_protection_settings.h
@@ -65,6 +65,8 @@ class TrackingProtectionSettings : public KeyedService,
// Returns whether "do not track" is enabled.
bool IsDoNotTrackEnabled() const;
@@ -49,6 +49,8 @@ class TrackingProtectionSettings : public KeyedService {
void AddObserver(TrackingProtectionSettingsObserver* observer);
void RemoveObserver(TrackingProtectionSettingsObserver* observer);
+ bool IsGPCEnabled() const;
+
// Returns whether tracking protection for 3PCD (prefs + UX) is enabled.
bool IsTrackingProtection3pcdEnabled() const;
@@ -111,6 +113,7 @@ class TrackingProtectionSettings : public KeyedService,
@@ -70,6 +72,7 @@ class TrackingProtectionSettings : public KeyedService {
void OnEnterpriseControlForPrefsChanged();
// Callbacks for pref observation.
void OnDoNotTrackEnabledPrefChanged();
+ void OnGPCEnabledPrefChanged();
void OnBlockAllThirdPartyCookiesPrefChanged();
void OnTrackingProtection3pcdPrefChanged();
@@ -574,9 +575,9 @@ diff --git a/components/privacy_sandbox/tracking_protection_settings.h b/compone
diff --git a/components/privacy_sandbox/tracking_protection_settings_observer.h b/components/privacy_sandbox/tracking_protection_settings_observer.h
--- a/components/privacy_sandbox/tracking_protection_settings_observer.h
+++ b/components/privacy_sandbox/tracking_protection_settings_observer.h
@@ -24,6 +24,8 @@ class TrackingProtectionSettingsObserver {
// For observation of DNT.
virtual void OnDoNotTrackEnabledChanged() {}
@@ -21,6 +21,8 @@ class TrackingProtectionSettingsObserver {
virtual ~TrackingProtectionSettingsObserver() = default;
+ virtual void OnGPCEnabledChanged() {}
+
@@ -602,7 +603,7 @@ diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/cont
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4403,6 +4403,10 @@ void RenderFrameImpl::FinalizeRequestInternal(
@@ -4458,6 +4458,10 @@ void RenderFrameImpl::FinalizeRequestInternal(
request.SetHttpHeaderField(
blink::WebString::FromUTF8(blink::kDoNotTrackHeader), "1");
}
@@ -686,7 +687,7 @@ diff --git a/third_party/blink/public/mojom/renderer_preferences.mojom b/third_p
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -1283,6 +1283,11 @@ static_idl_files_in_modules = [
@@ -1276,6 +1276,11 @@ static_idl_files_in_modules = [
"//third_party/blink/renderer/modules/xr/xr_webgl_sub_image.idl",
]
@@ -701,7 +702,7 @@ diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_part
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -3620,6 +3620,9 @@ void WebViewImpl::UpdateRendererPreferences(
@@ -3605,6 +3605,9 @@ void WebViewImpl::UpdateRendererPreferences(
GetSettings()->SetCaretBrowsingEnabled(
renderer_preferences_.caret_browsing_enabled);
@@ -714,7 +715,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn
--- a/third_party/blink/renderer/modules/BUILD.gn
+++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -169,6 +169,10 @@ component("modules") {
@@ -167,6 +167,10 @@ component("modules") {
"//third_party/blink/renderer/modules/xr",
]
@@ -826,7 +827,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicat
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -3267,6 +3267,11 @@
@@ -3374,6 +3374,11 @@
status: "stable",
base_feature: "none",
},
@@ -16,7 +16,7 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../settings/PasswordSettings.java | 84 ++++++++++++++++++-
.../chrome/browser/settings/MainSettings.java | 16 +---
.../chrome/browser/settings/MainSettings.java | 17 +---
.../chromium/chrome/browser/tab/TabImpl.java | 42 ++++++++--
chrome/browser/android/tab_android.cc | 4 +-
chrome/browser/autofill/android/BUILD.gn | 2 +-
@@ -42,10 +42,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/foundations/autofill_manager.h | 2 +
.../foundations/browser_autofill_manager.cc | 2 +
.../foundations/browser_autofill_manager.h | 2 +
.../autofill/core/common/autofill_features.cc | 1 -
.../autofill/core/common/autofill_prefs.cc | 4 +-
.../autofill/core/common/autofill_prefs.h | 5 ++
30 files changed, 238 insertions(+), 121 deletions(-)
29 files changed, 238 insertions(+), 121 deletions(-)
create mode 100644 components/android_autofill/browser/java/src/org/chromium/components/autofill/BrowserSelectionActionMenuDelegate.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
@@ -187,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
@@ -465,20 +465,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
@@ -579,21 +579,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
}
private void updateAutofillPreferences() {
@@ -196,7 +195,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
- Preference autofillOptionsPreference = findPreference(PREF_AUTOFILL_OPTIONS);
- autofillOptionsPreference.setFragment(null);
- autofillOptionsPreference.setOnPreferenceClickListener(
- unused -> {
- preference -> {
- onPreferenceSelected(preference);
- SettingsNavigationFactory.createSettingsNavigation()
- .startSettings(
- getContext(),
@@ -209,7 +209,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
+ removePreferenceIfPresent(PREF_AUTOFILL_OPTIONS);
findPreference(PREF_AUTOFILL_PAYMENTS)
.setOnPreferenceClickListener(
preference ->
preference -> {
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
@@ -227,19 +227,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
/**
* Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This
* class is not intended to be extended.
@@ -1269,6 +1276,11 @@ class TabImpl implements Tab {
for (TabObserver observer : mObservers) observer.onDestroyed(this);
mObservers.clear();
@@ -1286,6 +1293,11 @@ class TabImpl implements Tab {
}
mObservers.clear();
+ if (mAutofillProvider != null) {
+ mAutofillProvider.destroy();
+ mAutofillProvider = null;
+ }
+
mUserDataHost.destroy();
if (!abortNavigationsFromTabClosures) mUserDataHost.destroy();
mTabViewManager.destroy();
hideNativePage(false, null);
@@ -1612,7 +1624,7 @@ class TabImpl implements Tab {
@@ -1636,7 +1648,7 @@ class TabImpl implements Tab {
* @return iff the AutofillProvider should provide a ViewStructure when prompted.
*/
boolean providesAutofillStructure() {
@@ -248,7 +248,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
if (mProfile == null || !mProfile.isNativeInitialized()) {
return false;
}
@@ -2378,16 +2390,21 @@ class TabImpl implements Tab {
@@ -2402,16 +2414,21 @@ class TabImpl implements Tab {
* @return true if the the provider is available for the given WebContents.
*/
private boolean prepareAutofillProvider(WebContents newWebContents) {
@@ -276,7 +276,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
// TODO: crbug.com/432447902 — Provide only an activity context and push changes.
mAutofillProvider =
new AutofillProvider(
@@ -2397,7 +2414,16 @@ class TabImpl implements Tab {
@@ -2421,7 +2438,16 @@ class TabImpl implements Tab {
getContext().getString(R.string.app_name));
TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid);
}
@@ -305,7 +305,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
#include "chrome/browser/ui/android/context_menu_helper.h"
#include "chrome/browser/ui/android/tab_model/tab_model.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
@@ -447,8 +448,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) {
@@ -451,8 +452,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) {
->MaybeInitKeyboardSuppressor();
return;
}
@@ -318,7 +318,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
diff --git a/chrome/browser/autofill/android/BUILD.gn b/chrome/browser/autofill/android/BUILD.gn
--- a/chrome/browser/autofill/android/BUILD.gn
+++ b/chrome/browser/autofill/android/BUILD.gn
@@ -161,7 +161,7 @@ android_library("bottom_sheet_utils_java") {
@@ -164,7 +164,7 @@ android_library("bottom_sheet_utils_java") {
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/autofill/AddressNormalizerFactory.java",
@@ -355,7 +355,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse
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
@@ -317,6 +317,12 @@ CHAR_LIMIT guidelines:
@@ -329,6 +329,12 @@ CHAR_LIMIT guidelines:
<message name="IDS_PREFS_SECTION_ACCOUNT_AND_GOOGLE_SERVICES" desc="Title for the group of account-related entries and google services in Settings. [CHAR_LIMIT=32]">
You and Google
</message>
@@ -382,8 +382,9 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro
namespace autofill {
-namespace {
-
-#if BUILDFLAG(IS_ANDROID)
+AutofillClientProvider::AutofillClientProvider(PrefService* prefs) {
#if BUILDFLAG(IS_ANDROID)
-void RecordAvailabilityStatus(AndroidAutofillAvailabilityStatus availability) {
- base::UmaHistogramEnumeration("Autofill.AndroidAutofillAvailabilityStatus",
- availability);
@@ -441,14 +442,13 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro
- return false;
-#endif // BUILDFLAG(IS_ANDROID)
-}
-
-} // namespace
-
-AutofillClientProvider::AutofillClientProvider(PrefService* prefs)
- : uses_platform_autofill_(
- UsesVirtualViewStructureForAutofill(CHECK_DEREF(prefs))) {
+AutofillClientProvider::AutofillClientProvider(PrefService* prefs) {
#if BUILDFLAG(IS_ANDROID)
-#if BUILDFLAG(IS_ANDROID)
- RecordWhetherAndroidPrefResets(*prefs, uses_platform_autofill_);
- // Ensure the pref is reset if platform autofill is restricted.
prefs->SetBoolean(prefs::kAutofillUsingVirtualViewStructure,
@@ -495,7 +495,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.h b/chrome/brow
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -406,9 +406,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
@@ -375,9 +375,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
web_contents);
ChainedBackNavigationTracker::CreateForWebContents(web_contents);
chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents);
@@ -649,7 +649,7 @@ new file mode 100644
diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc
--- a/components/autofill/content/browser/content_autofill_driver.cc
+++ b/components/autofill/content/browser/content_autofill_driver.cc
@@ -275,6 +275,13 @@ void RouteToManager(ContentAutofillDriver& source,
@@ -277,6 +277,13 @@ void RouteToManager(ContentAutofillDriver& source,
AutofillManager& manager = target.GetAutofillManager();
(manager.*
manager_fun)(WithNewVersion(std::forward<ManagerArgs>(args))...);
@@ -663,7 +663,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
},
source, Lift(source, std::forward<ActualArgs>(args))...);
}
@@ -665,6 +672,10 @@ ContentAutofillDriver::GetAutofillAgent() {
@@ -679,6 +686,10 @@ ContentAutofillDriver::GetAutofillAgent() {
return autofill_agent_;
}
@@ -690,7 +690,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.h b/com
content::RenderFrameHost* render_frame_host() { return &*render_frame_host_; }
const content::RenderFrameHost* render_frame_host() const {
return &*render_frame_host_;
@@ -310,6 +316,10 @@ class ContentAutofillDriver : public AutofillDriver,
@@ -312,6 +318,10 @@ class ContentAutofillDriver : public AutofillDriver,
// The factory that created this driver. Outlives `this`.
const raw_ref<ContentAutofillDriverFactory> owner_;
@@ -733,7 +733,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory
diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc
--- a/components/autofill/content/renderer/autofill_agent.cc
+++ b/components/autofill/content/renderer/autofill_agent.cc
@@ -1547,14 +1547,19 @@ void AutofillAgent::ShowSuggestions(
@@ -1403,14 +1403,19 @@ void AutofillAgent::ShowSuggestions(
password_generation_agent_->ShowPasswordGenerationSuggestions(
input_element, form_cache)) {
is_popup_possibly_visible_ = true;
@@ -756,7 +756,7 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -851,7 +851,10 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange(
@@ -852,7 +852,10 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange(
void PasswordAutofillAgent::TrackAutofilledElement(
const WebFormControlElement& element) {
@@ -771,7 +771,7 @@ diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/c
diff --git a/components/autofill/core/browser/foundations/autofill_driver.h b/components/autofill/core/browser/foundations/autofill_driver.h
--- a/components/autofill/core/browser/foundations/autofill_driver.h
+++ b/components/autofill/core/browser/foundations/autofill_driver.h
@@ -151,6 +151,8 @@ class AutofillDriver {
@@ -172,6 +172,8 @@ class AutofillDriver {
// Returns the AutofillManager owned by the AutofillDriver.
virtual AutofillManager& GetAutofillManager() = 0;
@@ -797,7 +797,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_driver_factor
diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/components/autofill/core/browser/foundations/autofill_manager.h
--- a/components/autofill/core/browser/foundations/autofill_manager.h
+++ b/components/autofill/core/browser/foundations/autofill_manager.h
@@ -238,6 +238,8 @@ class AutofillManager
@@ -239,6 +239,8 @@ class AutofillManager
LifecycleState new_state,
base::PassKey<AutofillDriverFactory> pass_key);
@@ -809,15 +809,15 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/c
diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.cc b/components/autofill/core/browser/foundations/browser_autofill_manager.cc
--- a/components/autofill/core/browser/foundations/browser_autofill_manager.cc
+++ b/components/autofill/core/browser/foundations/browser_autofill_manager.cc
@@ -828,6 +828,8 @@ base::WeakPtr<AutofillManager> BrowserAutofillManager::GetWeakPtr() {
@@ -811,6 +811,8 @@ base::WeakPtr<AutofillManager> BrowserAutofillManager::GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
+bool BrowserAutofillManager::IsAndroidAutofill() const { return false; }
+
CreditCardAccessManager& BrowserAutofillManager::GetCreditCardAccessManager() {
CreditCardAccessManager* BrowserAutofillManager::GetCreditCardAccessManager() {
if (!credit_card_access_manager_) {
credit_card_access_manager_ = std::make_unique<CreditCardAccessManager>(
credit_card_access_manager_ =
diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.h b/components/autofill/core/browser/foundations/browser_autofill_manager.h
--- a/components/autofill/core/browser/foundations/browser_autofill_manager.h
+++ b/components/autofill/core/browser/foundations/browser_autofill_manager.h
@@ -830,21 +830,10 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag
// Whether the `trigger_field` should show an entry to scan a credit card.
bool ShouldShowScanCreditCard(const FormStructure& form,
const AutofillField& trigger_field);
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
--- a/components/autofill/core/common/autofill_features.cc
+++ b/components/autofill/core/common/autofill_features.cc
@@ -871,7 +871,6 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid,
// virtual view structures to third party providers.
BASE_FEATURE(kAutofillThirdPartyModeContentProvider,
base::FEATURE_ENABLED_BY_DEFAULT);
-
#endif // BUILDFLAG(IS_ANDROID)
// Defines if the "Your Saved Info" page is eligible to be shown in Chrome
diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
--- a/components/autofill/core/common/autofill_prefs.cc
+++ b/components/autofill/core/common/autofill_prefs.cc
@@ -75,6 +75,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -78,6 +78,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(kAutofillCreditCardFidoAuthOfferCheckboxState,
true);
#endif
@@ -853,7 +842,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
registry->RegisterIntegerPref(kAutocompleteLastVersionRetentionPolicy, 0);
registry->RegisterStringPref(kAutofillUploadEncodingSeed, "");
registry->RegisterDictionaryPref(kAutofillVoteUploadEvents);
@@ -114,7 +116,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -117,7 +119,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
#endif // BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(IS_ANDROID)
@@ -865,7 +854,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h
--- a/components/autofill/core/common/autofill_prefs.h
+++ b/components/autofill/core/common/autofill_prefs.h
@@ -140,6 +140,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] =
@@ -151,6 +151,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] =
// retention policy was run.
inline constexpr char kAutocompleteLastVersionRetentionPolicy[] =
"autocomplete.retention_policy_last_version";
@@ -875,6 +864,6 @@ diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autof
+inline constexpr char kAutofillAndroidIncognitoEnabled[] =
+ "autofill.android_autofill_incognito_enabled";
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || \
BUILDFLAG(IS_IOS)
BUILDFLAG(IS_IOS) || BUILDFLAG(IS_CHROMEOS)
// Boolean that is set when payment methods mandatory re-auth is enabled by the
--
+13 -7
View File
@@ -6,8 +6,8 @@ Allows swipe of snackbar notifications
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../ui/messages/snackbar/SnackbarView.java | 78 ++++++++++++++++++-
1 file changed, 76 insertions(+), 2 deletions(-)
.../ui/messages/snackbar/SnackbarView.java | 84 +++++++++++++++++--
1 file changed, 76 insertions(+), 8 deletions(-)
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
@@ -24,7 +24,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.SurfaceView;
@@ -34,6 +36,9 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController;
@@ -33,6 +35,9 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerFactory;
import org.chromium.chrome.ui.messages.R;
import org.chromium.components.browser_ui.styles.SemanticColorUtils;
@@ -34,7 +34,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
import org.chromium.components.browser_ui.widget.text.TemplatePreservingTextView;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.edge_to_edge.EdgeToEdgePadAdjuster;
@@ -47,7 +52,7 @@ import org.chromium.ui.interpolators.Interpolators;
@@ -46,7 +51,7 @@ import org.chromium.ui.interpolators.Interpolators;
// TODO (jianli): Change this class and its methods back to package protected after the offline
// indicator experiment is done.
@NullMarked
@@ -43,7 +43,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
private static final int MAX_LINES = 5;
private static final int DEFAULT_LINES = 2;
@@ -89,6 +94,16 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -88,6 +93,16 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
}
};
@@ -60,10 +60,16 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
/**
* Creates an instance of the {@link SnackbarView}.
*
@@ -150,7 +165,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -147,13 +162,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
// Make sure clicks are not consumed by content beneath the container view.
mContainerView.setClickable(true);
- mContainerView.setOnClickListener((event) -> manager.resetSnackbarTimeout());
- mContainerView.setOnTouchListener(
- (view, event) -> {
- mContainerView.performClick();
- return true;
- });
-
+ mSwipeGestureListener = new SwipeGestureListenerImpl(mContainerView.getContext(), this);
+ if (!snackbar.isTypePersistent()) {
@@ -74,7 +80,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
mSnackbarView = mContainerView.findViewById(R.id.snackbar);
mAnimationDuration =
mContainerView.getResources().getInteger(android.R.integer.config_mediumAnimTime);
@@ -505,4 +525,58 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -508,4 +522,58 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
public @Nullable EdgeToEdgePadAdjuster getEdgeToEdgePadAdjusterForTesting() {
return mEdgeToEdgePadAdjuster;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -7,38 +7,32 @@ granted by user
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../permissions/permission_service_impl.cc | 6 +++-
.../permissions/permission_service_impl.cc | 1 -
.../renderer_host/render_frame_host_impl.cc | 3 +-
.../core/frame/cached_permission_status.cc | 2 +-
.../core/frame/cached_permission_status.cc | 4 +--
.../core/frame/cached_permission_status.h | 1 +
.../blink/renderer/core/frame/screen.cc | 35 +++++++++++++++++--
.../blink/renderer/core/frame/screen.h | 16 +++++++++
6 files changed, 58 insertions(+), 5 deletions(-)
.../blink/renderer/core/frame/screen.h | 17 ++++++++-
6 files changed, 54 insertions(+), 7 deletions(-)
diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc
--- a/content/browser/permissions/permission_service_impl.cc
+++ b/content/browser/permissions/permission_service_impl.cc
@@ -388,8 +388,12 @@ void PermissionServiceImpl::AddPageEmbeddedPermissionObserver(
@@ -384,7 +384,6 @@ void PermissionServiceImpl::AddPermissionObserver(
ReceivedBadMessage();
return;
}
+ bool should_include_device_status =
+ PermissionUtil::IsDevicePermission(permission);
PermissionResult current_result =
- GetCombinedPermissionAndDeviceResult(permission);
+ should_include_device_status
+ ? GetCombinedPermissionAndDeviceResult(permission)
+ : GetPermissionResultForCurrentContext(permission);
-
PermissionResult current_result = GetPermissionResult(permission);
context_->CreateSubscription(
permission, origin_, current_result, PermissionResult(last_known_status),
/*should_include_device_status=*/true, std::move(observer));
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -19291,7 +19291,8 @@ RenderFrameHostImpl::GetCachedPermissionStatuses() {
std::to_array<std::pair<PermissionName, PermissionType>>(
{{PermissionName::VIDEO_CAPTURE, PermissionType::VIDEO_CAPTURE},
{PermissionName::AUDIO_CAPTURE, PermissionType::AUDIO_CAPTURE},
@@ -19186,7 +19186,8 @@ RenderFrameHostImpl::GetCachedPermissionStatuses() {
{PermissionName::WEB_APP_INSTALLATION,
PermissionType::WEB_APP_INSTALLATION},
#endif
- {PermissionName::GEOLOCATION, PermissionType::GEOLOCATION}});
+ {PermissionName::GEOLOCATION, PermissionType::GEOLOCATION},
+ {PermissionName::WINDOW_MANAGEMENT, PermissionType::WINDOW_MANAGEMENT}});
@@ -48,19 +42,22 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b
diff --git a/third_party/blink/renderer/core/frame/cached_permission_status.cc b/third_party/blink/renderer/core/frame/cached_permission_status.cc
--- a/third_party/blink/renderer/core/frame/cached_permission_status.cc
+++ b/third_party/blink/renderer/core/frame/cached_permission_status.cc
@@ -36,7 +36,7 @@ CachedPermissionStatus::CachedPermissionStatus(LocalDOMWindow* local_dom_window)
@@ -32,9 +32,9 @@ CachedPermissionStatus::CachedPermissionStatus(LocalDOMWindow* local_dom_window)
permission_service_(local_dom_window),
permission_observer_receivers_(this, local_dom_window) {
CHECK(local_dom_window);
- CHECK(RuntimeEnabledFeatures::PermissionElementEnabled(local_dom_window));
+ // CHECK(RuntimeEnabledFeatures::PermissionElementEnabled(local_dom_window)); see https://source.chromium.org/chromium/chromium/src/+/81a9e9b66a03e12cb438eef0834f5e5f7a0506ee
- CHECK(RuntimeEnabledFeatures::PermissionElementEnabled(local_dom_window) ||
+ // CHECK(RuntimeEnabledFeatures::PermissionElementEnabled(local_dom_window) ||
RuntimeEnabledFeatures::GeolocationElementEnabled(local_dom_window) ||
- RuntimeEnabledFeatures::UserMediaElementEnabled(local_dom_window));
+ RuntimeEnabledFeatures::UserMediaElementEnabled(local_dom_window)); see https://source.chromium.org/chromium/chromium/src/+/81a9e9b66a03e12cb438eef0834f5e5f7a0506ee
}
void CachedPermissionStatus::Trace(Visitor* visitor) const {
diff --git a/third_party/blink/renderer/core/frame/cached_permission_status.h b/third_party/blink/renderer/core/frame/cached_permission_status.h
--- a/third_party/blink/renderer/core/frame/cached_permission_status.h
+++ b/third_party/blink/renderer/core/frame/cached_permission_status.h
@@ -71,6 +71,7 @@ class CORE_EXPORT CachedPermissionStatus final
@@ -68,6 +68,7 @@ class CORE_EXPORT CachedPermissionStatus final
private:
friend class HTMLPermissionElement;
@@ -133,10 +130,10 @@ diff --git a/third_party/blink/renderer/core/frame/screen.h b/third_party/blink/
#include "third_party/blink/renderer/core/dom/events/event_target.h"
#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
+#include "third_party/blink/renderer/core/frame/cached_permission_status.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/forward_declared_member.h"
+#include "third_party/blink/public/mojom/permissions/permission.mojom-blink.h"
+#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
#include "third_party/blink/renderer/platform/supplementable.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
#include "ui/gfx/geometry/rect.h"
@@ -145,15 +142,16 @@ diff --git a/third_party/blink/renderer/core/frame/screen.h b/third_party/blink/
namespace display {
struct ScreenInfo;
}
@@ -47,6 +52,7 @@ class LocalDOMWindow;
@@ -46,7 +51,7 @@ namespace blink {
class LocalDOMWindow;
class ScreenScreenOrientation;
class CORE_EXPORT Screen : public EventTarget,
public ExecutionContextClient,
+ public CachedPermissionStatus::Client,
public Supplementable<Screen> {
-class CORE_EXPORT Screen : public EventTarget, public ExecutionContextClient {
+class CORE_EXPORT Screen : public EventTarget, public CachedPermissionStatus::Client, public ExecutionContextClient {
DEFINE_WRAPPERTYPEINFO();
@@ -89,8 +95,18 @@ class CORE_EXPORT Screen : public EventTarget,
public:
@@ -97,10 +102,20 @@ class CORE_EXPORT Screen : public EventTarget, public ExecutionContextClient {
gfx::Rect GetRect(bool available) const;
const display::ScreenInfo& GetScreenInfo() const;
@@ -166,6 +164,8 @@ diff --git a/third_party/blink/renderer/core/frame/screen.h b/third_party/blink/
+
// The internal id of the underlying display, to support multi-screen devices.
int64_t display_id_;
ForwardDeclaredMember<ScreenScreenOrientation> screen_screen_orientation_;
+
+ private:
+ bool window_management_permission_granted_ = false;
+55 -49
View File
@@ -18,13 +18,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../layout/custom_useragent_preferences.xml | 106 ++++++++++
.../android/java/res/xml/main_preferences.xml | 5 +
.../java/res/xml/useragent_preferences.xml | 25 +++
.../chrome/browser/app/ChromeActivity.java | 1 +
.../chrome/browser/app/ChromeActivity.java | 5 +-
.../init/ChromeBrowserInitializer.java | 3 +
.../PrivacyPreferencesManagerImpl.java | 42 ++++
.../settings/UserAgentPreferences.java | 189 ++++++++++++++++++
.../browser/tab/RequestDesktopUtils.java | 1 +
.../chromium/chrome/browser/tab/TabImpl.java | 64 +++++-
.../chromium/chrome/browser/tab/TabUtils.java | 7 +-
.../chromium/chrome/browser/tab/TabUtils.java | 8 +-
.../browser/android/content/content_utils.cc | 32 ++-
.../preferences/browser_prefs_android.cc | 7 +
.../privacy_preferences_manager_impl.cc | 126 ++++++++++++
@@ -35,6 +34,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../org/chromium/chrome/browser/tab/Tab.java | 2 +
.../browser/tabwindow/TabWindowManager.java | 2 +
.../tabwindow/TabWindowManagerImpl.java | 18 ++
.../desktop_site/DesktopSiteUtils.java | 1 +
.../strings/android_chrome_strings.grd | 26 +++
chrome/common/pref_names.h | 8 +
...omiteRequestDesktopSiteContentSetting.java | 76 +++++++
@@ -46,7 +46,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/web_contents/web_contents_impl.cc | 6 +-
.../framehost/NavigationControllerImpl.java | 3 +-
content/renderer/render_thread_impl.cc | 1 -
36 files changed, 800 insertions(+), 17 deletions(-)
36 files changed, 803 insertions(+), 19 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
@@ -92,7 +92,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
@@ -665,6 +665,8 @@ chrome_java_resources = [
@@ -684,6 +684,8 @@ chrome_java_resources = [
"java/res/xml/search_widget_info.xml",
"java/res/xml/tracing_preferences.xml",
"java/res/xml/unified_account_settings_preferences.xml",
@@ -104,7 +104,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
@@ -919,6 +919,7 @@ chrome_java_sources = [
@@ -932,6 +932,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",
@@ -271,14 +271,18 @@ new file mode 100644
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
@@ -2776,6 +2776,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
TabUtils.switchUserAgent(
currentTab,
usingDesktopUserAgent,
+ /* forcedByUser= */ true,
UseDesktopUserAgentCaller.ON_MENU_OR_KEYBOARD_ACTION);
@@ -2814,7 +2814,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
profile, currentTab.getUrl(), usingDesktopUserAgent);
// Use TabUtils.switchUserAgent() instead of Tab.reload(). Because we need to reload
// with LoadOriginalRequestURL. See http://crbug/1418587 for details.
- TabUtils.switchUserAgent(currentTab, usingDesktopUserAgent);
+ TabUtils.switchUserAgent(
+ currentTab,
+ usingDesktopUserAgent,
+ /* forcedByUser= */ true);
TrackerFactory.getTrackerForProfile(profile)
.notifyEvent(EventConstants.APP_MENU_DESKTOP_SITE_EXCEPTION_ADDED);
RequestDesktopUtils.recordUserChangeUserAgent(usingDesktopUserAgent, getActivityTab());
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
@@ -556,17 +560,6 @@ new file mode 100644
+ UpdateAllTabs();
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
@@ -142,6 +142,7 @@ public class RequestDesktopUtils {
*/
public static void setRequestDesktopSiteContentSettingsForUrl(
Profile profile, GURL url, boolean useDesktopUserAgent) {
+ if ((true)) return;
boolean isOffTheRecord = profile.isOffTheRecord();
String domainWildcardPattern =
WebsitePreferenceBridge.toDomainWildcardPattern(url.getSpec());
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
@@ -590,17 +583,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
/**
* Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This
* class is not intended to be extended.
@@ -2318,9 +2324,6 @@ class TabImpl implements Tab {
@@ -2342,9 +2348,6 @@ class TabImpl implements Tab {
}
if (mWebContents != null) {
- // Invoke switchUserAgentIfNeeded() from restoreIfNeeded() instead of loadIfNeeded()
- // to avoid reload without explicit user intent.
- switchUserAgentIfNeeded(UseDesktopUserAgentCaller.LOAD_IF_NEEDED + caller);
- switchUserAgentIfNeeded();
mWebContents.getNavigationController().loadIfNecessary();
}
mIsBeingRestored = true;
@@ -2720,6 +2723,11 @@ class TabImpl implements Tab {
@@ -2744,6 +2747,11 @@ class TabImpl implements Tab {
url = webContents.getVisibleUrl();
}
@@ -610,18 +603,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
+ return UserAgentOverrideOption.TRUE;
+
boolean shouldRequestDesktopSite =
RequestDesktopUtils.shouldOverrideDesktopSite(mProfile, url, getContext());
DesktopSiteUtils.shouldOverrideDesktopSite(mProfile, url, getContext());
@@ -2749,7 +2757,7 @@ class TabImpl implements Tab {
@@ -2773,7 +2781,7 @@ class TabImpl implements Tab {
}
boolean usingDesktopUserAgent =
getWebContents().getNavigationController().getUseDesktopUserAgent();
- TabUtils.switchUserAgent(this, /* switchToDesktop= */ !usingDesktopUserAgent, caller);
+ TabUtils.switchUserAgent(this, /* switchToDesktop= */ !usingDesktopUserAgent, /* forcedByUser= */ false, caller);
- TabUtils.switchUserAgent(this, /* switchToDesktop= */ !usingDesktopUserAgent);
+ TabUtils.switchUserAgent(this, /* switchToDesktop= */ !usingDesktopUserAgent, /* forcedByUser= */ false);
}
/** Sets the TabLaunchType for tabs launched with an unset launch type. */
@@ -2899,6 +2907,54 @@ class TabImpl implements Tab {
@@ -2923,6 +2931,54 @@ class TabImpl implements Tab {
/* allowDialog= */ false);
}
@@ -679,16 +672,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
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
@@ -130,11 +130,8 @@ public class TabUtils {
@@ -113,12 +113,8 @@ public class TabUtils {
* @param switchToDesktop Whether switching the user agent to desktop.
* @param caller The caller of this method.
*/
- public static void switchUserAgent(Tab tab, boolean switchToDesktop, int caller) {
- public static void switchUserAgent(Tab tab, boolean switchToDesktop) {
- final boolean reloadOnChange = !tab.isNativePage();
- assumeNonNull(tab.getWebContents())
- .getNavigationController()
- .setUseDesktopUserAgent(switchToDesktop, reloadOnChange, caller);
+ public static void switchUserAgent(Tab tab, boolean switchToDesktop, boolean forcedByUser, int caller) {
- .setUseDesktopUserAgent(
- switchToDesktop, reloadOnChange, /* skipOnInitialNavigation= */ true);
+ public static void switchUserAgent(Tab tab, boolean switchToDesktop, boolean forcedByUser) {
+ tab.SetOverrideUserAgent(switchToDesktop, forcedByUser);
}
@@ -815,11 +809,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
static jboolean JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingEnabled(
JNIEnv* env) {
PrefService* local_state = g_browser_process->local_state();
@@ -36,3 +62,103 @@ JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingDisabledByPolicy(
metrics::prefs::kMetricsReportingEnabled) &&
@@ -37,4 +63,104 @@ JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingDisabledByPolicy(
!local_state->GetBoolean(metrics::prefs::kMetricsReportingEnabled);
}
+
+static void UpdateOverrideUserAgent() {
+ bool overrideUserAgentEnabled =
+ g_browser_process->local_state()->GetBoolean(prefs::kOverrideUserAgentEnabled);
@@ -919,6 +912,8 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
+ enabled);
+ UpdateOverrideUserAgent();
+}
+
DEFINE_JNI(PrivacyPreferencesManagerImpl)
diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
--- a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
+++ b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
@@ -976,7 +971,7 @@ diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_o
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
@@ -1243,8 +1243,6 @@ public final class ChromePreferenceKeys {
@@ -1281,8 +1281,6 @@ public final class ChromePreferenceKeys {
SIGNIN_PROMO_NTP_LAST_SHOWN_TIME,
SYNC_PROMO_TOTAL_SHOW_COUNT,
SEARCH_RESUMPTION_MODULE_COLLAPSE_ON_NTP,
@@ -1006,7 +1001,7 @@ diff --git a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browse
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
@@ -388,6 +388,8 @@ public interface Tab extends TabLifecycle {
@@ -391,6 +391,8 @@ public interface Tab extends TabLifecycle {
/** Goes to the navigation entry after the current one. */
void goForward();
@@ -1018,7 +1013,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav
diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
--- a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
+++ b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
@@ -174,6 +174,8 @@ public interface TabWindowManager {
@@ -177,6 +177,8 @@ public interface TabWindowManager {
@Nullable List<Tab> getGroupedTabsByWindow(
@WindowId int windowId, Token tabGroupId, boolean isIncognito);
@@ -1030,7 +1025,7 @@ diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/brows
diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
--- a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
+++ b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
@@ -499,6 +499,24 @@ public class TabWindowManagerImpl implements TabWindowManager {
@@ -501,6 +501,24 @@ public class TabWindowManagerImpl implements TabWindowManager {
return null;
}
@@ -1055,10 +1050,21 @@ diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chr
@Override
public @Nullable Tab getTabById(@TabId int tabId) {
for (TabModelSelector selector : getAllTabModelSelectors()) {
diff --git a/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java b/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java
--- a/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java
+++ b/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteUtils.java
@@ -66,6 +66,7 @@ public class DesktopSiteUtils {
*/
public static void setRequestDesktopSiteContentSettingsForUrl(
Profile profile, GURL url, boolean useDesktopUserAgent) {
+ if ((true)) return;
boolean isOffTheRecord = profile.isOffTheRecord();
String domainWildcardPattern =
WebsitePreferenceBridge.toDomainWildcardPattern(url.getSpec());
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
@@ -238,6 +238,32 @@ CHAR_LIMIT guidelines:
@@ -250,6 +250,32 @@ CHAR_LIMIT guidelines:
Visit help page
</message>
@@ -1094,7 +1100,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
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
@@ -1899,6 +1899,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group";
@@ -1916,6 +1916,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group";
inline constexpr char kHadThreeConsecutiveNotificationPermissionDenies[] =
"profile.content_settings.had_three_consecutive_denies.notifications";
@@ -1269,7 +1275,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
@@ -3815,6 +3815,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
@@ -3842,6 +3842,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
#if BUILDFLAG(IS_CHROMEOS)
switches::kSchedulerBoostUrgent,
#endif
@@ -1288,7 +1294,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser
#include "base/check_op.h"
#include "base/command_line.h"
#include "base/containers/contains.h"
@@ -2449,8 +2450,6 @@ void WebContentsImpl::SetUserAgentOverride(
@@ -2375,8 +2376,6 @@ void WebContentsImpl::SetUserAgentOverride(
OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::SetUserAgentOverride",
"ua_override", ua_override.ua_string_override,
"override_in_new_tabs", override_in_new_tabs);
@@ -1297,7 +1303,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser
if (GetUserAgentOverride() == ua_override) {
return;
@@ -3818,6 +3817,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences(
@@ -3750,6 +3749,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences(
#else
prefs.viewport_meta_enabled = false;
#endif
@@ -1318,7 +1324,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh
params.getInitiatorOrigin(),
params.getHasUserGesture(),
params.getShouldClearHistoryList(),
@@ -445,7 +446,7 @@ import org.chromium.url.Origin;
@@ -447,7 +448,7 @@ import org.chromium.url.Origin;
@Nullable String dataUrlAsString,
boolean canLoadLocalResources,
boolean isRendererInitiated,
@@ -1330,7 +1336,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
@@ -850,7 +850,6 @@ void RenderThreadImpl::InitializeRenderer(
@@ -848,7 +848,6 @@ void RenderThreadImpl::InitializeRenderer(
uint64_t trace_id) {
TRACE_EVENT("navigation", "RenderThreadImpl::InitializeRenderer",
perfetto::TerminatingFlow::Global(trace_id));