Patches for v146 (need some work)

This commit is contained in:
Carmelo Messina
2026-03-11 12:43:59 +01:00
parent ead22ceee7
commit 3d1185d594
20 changed files with 1256 additions and 5157 deletions
@@ -32,7 +32,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../CustomTabAppMenuPropertiesDelegate.java | 5 +
.../CustomTabIntentDataProvider.java | 10 +
.../browser/download/DownloadUtils.java | 13 +-
.../history/HistoryContentManager.java | 20 +-
.../history/HistoryContentManager.java | 10 +-
.../browser/history/HistoryManager.java | 27 ++-
.../chrome/browser/history/HistoryPage.java | 16 ++
.../native_page/NativePageFactory.java | 4 +-
@@ -68,7 +68,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/prefs/browser_prefs.cc | 5 +
chrome/browser/profiles/profile_selections.cc | 10 +
chrome/browser/profiles/profile_selections.h | 7 +-
.../signin/services/ProfileDataCache.java | 3 +-
.../signin/services/ProfileDataCache.java | 5 +-
.../browser/ui/android/native_page/BUILD.gn | 2 +
.../browser/ui/native_page/NativePage.java | 17 +-
.../browser/omnibox/LocationBarMediator.java | 8 +
@@ -89,7 +89,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 +
70 files changed, 808 insertions(+), 116 deletions(-)
70 files changed, 808 insertions(+), 108 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
@@ -102,7 +102,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
@@ -644,6 +644,7 @@ chrome_java_resources = [
@@ -653,6 +653,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",
@@ -121,7 +121,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",
@@ -958,6 +959,7 @@ chrome_java_sources = [
@@ -969,6 +970,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",
@@ -248,7 +248,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -80,6 +80,10 @@ import org.chromium.build.annotations.Nullable;
@@ -84,6 +84,10 @@ import org.chromium.build.annotations.Nullable;
import org.chromium.build.annotations.UsedByReflection;
import org.chromium.cc.input.BrowserControlsState;
import org.chromium.chrome.R;
@@ -259,14 +259,14 @@ 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;
@@ -813,12 +817,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
BrowserWindowType.NORMAL, currentTabModel, mMultiInstanceManager);
@@ -850,13 +854,18 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
mMultiInstanceManager);
// For saving non-incognito tab closures for Recent Tabs.
- mHistoricalTabModelObserver =
- new HistoricalTabModelObserver(mTabModelSelector.getTabGroupModelFilter(false));
- mHistoricalTabModelObserver.addSecondaryTabModelSupplier(
- ArchivedTabModelOrchestrator.getForProfile(currentTabModel.getProfile())
- ArchivedTabModelOrchestrator.getForProfile(
+ boolean alwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito();
+ PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile());
+ boolean historyEnabledInIncognito =
@@ -275,14 +275,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
+ mHistoricalTabModelObserver =
+ new HistoricalTabModelObserver(mTabModelSelector.getTabGroupModelFilter(alwaysIncognito));
+ mHistoricalTabModelObserver.addSecondaryTabModelSupplier(
+ ArchivedTabModelOrchestrator.getForProfile(currentTabModel.getProfile())
+ ArchivedTabModelOrchestrator.getForProfile(
mTabModelSelector.getCurrentModel().getProfile())
::getTabModel);
-
+ }
// Defer creation of this helper so it triggers after TabGroupModelFilter observers.
mUndoRefocusHelper =
new UndoRefocusHelper(
@@ -3306,7 +3315,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -3426,7 +3435,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
shouldPersistAcrossReboots()
&& persistentState != null
&& persistentState.getBoolean(IS_INCOGNITO_SELECTED, false);
@@ -294,7 +295,7 @@ 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
@@ -110,6 +110,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
@@ -107,6 +107,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;
@@ -302,7 +303,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
import org.chromium.chrome.browser.dom_distiller.DomDistillerUiUtils;
import org.chromium.chrome.browser.dom_distiller.ReaderModeManager;
import org.chromium.chrome.browser.download.DownloadManagerService;
@@ -2212,6 +2213,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2222,6 +2223,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
@@ -315,7 +316,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
@@ -94,6 +94,8 @@ import java.util.Iterator;
@@ -99,6 +99,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;
@@ -324,7 +325,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.
@@ -675,8 +677,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
@@ -686,8 +688,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
&& !isNativePage
&& !isFileScheme
&& !isContentScheme
@@ -442,7 +443,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;
@@ -1362,6 +1365,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
@@ -1373,6 +1376,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
return getInitialActivityWidth() > 0;
}
@@ -496,25 +497,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
@@ -240,16 +240,7 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
@@ -374,6 +374,7 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
};
mTabSupplier = tabSupplier;
- mHistorySyncPromoCoordinator =
- new SigninPromoCoordinator(
- mActivity,
- profile,
- new HistoryPageSigninPromoDelegate(
- mActivity,
- profile,
- SigninAndHistorySyncActivityLauncherImpl.get(),
- this::updateHistorySyncPromoVisibility,
- /* isCreatedInCct= */ launchedForApp));
+ mHistorySyncPromoCoordinator = null;
// History service is not keyed for Incognito profiles and {@link HistoryServiceFactory}
// explicitly redirects to use regular profile for Incognito case.
@@ -308,8 +299,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
+ canShowSigninPromo = false;
if (canShowSigninPromo) {
mHistorySyncPromoCoordinator =
new SigninPromoCoordinator(
@@ -453,8 +454,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
mHistoryAdapter.generateFooterItems();
// Listen to changes in sign in state.
@@ -526,7 +517,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
// Create PrefChangeRegistrar to receive notifications on preference changes.
mPrefChangeRegistrar = PrefServiceUtil.createFor(profile);
@@ -386,8 +378,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
@@ -531,8 +533,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
mHistoryAdapter.onDestroyed();
mLargeIconBridge.destroy();
mLargeIconBridge = null;
@@ -540,7 +531,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/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
@@ -63,6 +63,14 @@ import java.util.List;
@@ -66,6 +66,14 @@ import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -555,7 +546,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
/** Combines and manages the different UI components of browsing history. */
@NullMarked
public class HistoryManager
@@ -168,7 +176,7 @@ public class HistoryManager
@@ -177,7 +185,7 @@ public class HistoryManager
mUmaRecorder.recordOpenHistory();
// If incognito placeholder is shown, we don't need to create History UI elements.
@@ -564,7 +555,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
mSelectableListLayout = null;
mRootView = getIncognitoHistoryPlaceholderView();
return;
@@ -460,9 +468,22 @@ public class HistoryManager
@@ -472,9 +480,22 @@ public class HistoryManager
onBackPressStateChanged();
}
@@ -588,7 +579,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;
}
@@ -523,7 +544,7 @@ public class HistoryManager
@@ -542,7 +563,7 @@ public class HistoryManager
* @return True if manager handles this event, false if it decides to ignore.
*/
private boolean onBackPressed() {
@@ -600,7 +591,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/history/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
@@ -21,6 +21,14 @@ import org.chromium.components.embedder_support.util.UrlConstants;
@@ -25,6 +25,14 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import java.util.function.Supplier;
@@ -615,7 +606,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
/** Native page for managing browsing history. */
@NullMarked
public class HistoryPage extends BasicNativePage {
@@ -51,6 +59,14 @@ public class HistoryPage extends BasicNativePage {
@@ -61,6 +69,14 @@ public class HistoryPage extends BasicNativePage {
BackPressManager backPressManager) {
super(host);
@@ -641,7 +632,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;
@@ -457,7 +458,8 @@ public class NativePageFactory {
@@ -465,7 +466,8 @@ public class NativePageFactory {
NativePage page;
@@ -654,7 +645,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -48,6 +48,16 @@ import org.chromium.ui.base.WindowAndroid;
@@ -43,6 +43,16 @@ import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.url.GURL;
@@ -671,7 +662,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -120,7 +130,8 @@ public class RecentTabsManager
@@ -114,7 +124,8 @@ public class RecentTabsManager
SnackbarManager snackbarManager,
Runnable showHistoryManager,
RecentlyClosedEntriesManager recentlyClosedEntriesManager) {
@@ -681,7 +672,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
mActiveTab = tab;
mShowHistoryManager = showHistoryManager;
mForeignSessionHelper = new ForeignSessionHelper(profile);
@@ -310,6 +321,22 @@ public class RecentTabsManager
@@ -285,6 +296,22 @@ public class RecentTabsManager
*/
public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) {
if (mIsDestroyed) return;
@@ -895,7 +886,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;
@@ -223,6 +224,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -225,6 +226,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
SigninAndHistorySyncActivityLauncherImpl.get(),
new SettingsCustomTabLauncherImpl()));
}
@@ -944,7 +935,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/tab/tab_restore/HistoricalTabSaverImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java
@@ -30,6 +30,8 @@ import java.util.Collections;
@@ -27,6 +27,8 @@ import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;
@@ -953,7 +944,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
/** Creates historical entries in TabRestoreService. */
@NullMarked
@JNINamespace("historical_tab_saver")
@@ -87,10 +89,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@@ -75,10 +77,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
}
@Override
@@ -966,7 +957,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
}
@Override
@@ -151,7 +153,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@@ -139,7 +141,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
// If there is only a single valid tab remaining save it individually.
if (validEntries.size() == 1 && validEntries.get(0).isSingleTab()) {
@@ -975,7 +966,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
return;
}
@@ -191,7 +193,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@@ -179,7 +181,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
CollectionUtil.integerCollectionToIntArray(savedStateVersions));
}
@@ -984,7 +975,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
RecordHistogram.recordEnumeratedHistogram(
"Tabs.RecentlyClosed.HistoricalSaverCloseType",
HistoricalSaverCloseType.TAB,
@@ -204,7 +206,8 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@@ -192,7 +194,8 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
tab,
index,
getWebContentsState(tab).buffer(),
@@ -994,7 +985,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
}
/**
@@ -212,7 +215,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@@ -200,7 +203,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
* internal Chrome scheme, about:blank, or a native page and it cannot be incognito.
*/
private boolean shouldSave(Tab tab) {
@@ -1003,7 +994,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
// Check the secondary tab model to see if the tab was moved instead of deleted.
if (tabIdExistsInSecondaryModel(tab.getId())) return false;
@@ -300,7 +303,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@@ -280,7 +283,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
@NativeMethods
interface Natives {
@@ -1023,7 +1014,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;
@@ -247,7 +248,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
@@ -256,7 +257,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.
@@ -1036,7 +1027,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
@@ -219,6 +219,8 @@ import org.chromium.content_public.common.ContentSwitches;
@@ -236,6 +236,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;
@@ -1045,7 +1036,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;
@@ -1318,7 +1320,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -1401,7 +1403,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
() -> {
mTabCreatorManagerSupplier
.get()
@@ -1087,7 +1078,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
@@ -142,6 +143,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
ProfileProvider profileProvider = mProfileProviderSupplier.get();
assert profileProvider != null;
@@ -1107,7 +1098,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;
@@ -723,6 +724,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore {
@@ -727,6 +728,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore {
}
}
}
@@ -1123,7 +1114,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -59,6 +59,7 @@ import org.chromium.build.annotations.Nullable;
@@ -58,6 +58,7 @@ import org.chromium.build.annotations.Nullable;
import org.chromium.cc.input.BrowserControlsState;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
@@ -1230,10 +1221,10 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
DCHECK_EQ(tab_group_ids.size(), tab_group_ids.size());
@@ -281,12 +292,13 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab(
const JavaRef<jobject>& jtab_android,
jint index,
int32_t index,
const JavaRef<jobject>& state,
- jint saved_state_version) {
+ jint saved_state_version,
- int32_t saved_state_version) {
+ int32_t saved_state_version,
+ jboolean is_always_incognito) {
WebContentsStateByteBuffer web_contents_state =
WebContentsStateByteBuffer(ScopedJavaLocalRef<jobject>(state),
@@ -1328,7 +1319,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
+++ b/chrome/browser/content_settings/host_content_settings_map_factory.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h"
#include "chrome/browser/supervised_user/family_link_settings_service_factory.h"
#include "chrome/common/buildflags.h"
+#include "chrome/common/pref_names.h"
#include "components/content_settings/core/browser/content_settings_pref_provider.h"
@@ -1387,7 +1378,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
using safe_browsing::SafeBrowsingNavigationObserverManager;
@@ -233,6 +239,16 @@ const int kExtensionReferrerUserGestureLimit = 2;
@@ -235,6 +241,16 @@ const int kExtensionReferrerUserGestureLimit = 2;
WebstorePrivateApi::Delegate* test_delegate = nullptr;
@@ -1404,7 +1395,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
@@ -454,7 +470,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() {
@@ -456,7 +472,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() {
params_ = Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params_);
@@ -1413,7 +1404,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,
@@ -976,7 +992,7 @@ void WebstorePrivateBeginInstallWithManifest3Function::
@@ -987,7 +1003,7 @@ void WebstorePrivateBeginInstallWithManifest3Function::
DCHECK(extension);
DCHECK(contents);
@@ -1422,7 +1413,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
std::string message_from_admin =
ExtensionManagementFactory::GetForBrowserContext(profile)
@@ -1012,7 +1028,7 @@ WebstorePrivateCompleteInstallFunction::Run() {
@@ -1023,7 +1039,7 @@ WebstorePrivateCompleteInstallFunction::Run() {
std::optional<CompleteInstall::Params> params =
CompleteInstall::Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params);
@@ -1431,7 +1422,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
if (profile->IsGuestSession() || profile->IsOffTheRecord()) {
return RespondNow(Error(kIncognitoError));
}
@@ -1330,7 +1346,7 @@ ExtensionFunction::ResponseValue
@@ -1332,7 +1348,7 @@ ExtensionFunction::ResponseValue
WebstorePrivateGetExtensionStatusFunction::BuildResponseWithoutManifest(
const ExtensionId& extension_id) {
ExtensionInstallStatus status = GetWebstoreExtensionInstallStatus(
@@ -1440,7 +1431,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));
@@ -1344,7 +1360,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed(
@@ -1346,7 +1362,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed(
return;
}
@@ -1462,7 +1453,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
#else
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -640,6 +643,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
@@ -636,6 +639,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
history::HistoryService* HistoryTabHelper::GetHistoryService() {
Profile* profile =
Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -1476,7 +1467,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
if (profile->IsOffTheRecord()) {
return nullptr;
}
@@ -648,6 +658,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
@@ -644,6 +654,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
profile, ServiceAccessType::IMPLICIT_ACCESS);
}
@@ -1540,7 +1531,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom
// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/android/chrome_jni_headers/OfflinePageBridge_jni.h"
@@ -727,9 +730,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone(
@@ -728,9 +731,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone(
}
if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) {
@@ -1825,7 +1816,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
@@ -236,6 +236,7 @@
@@ -239,6 +239,7 @@
#if BUILDFLAG(IS_ANDROID)
#include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h"
@@ -1833,7 +1824,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"
@@ -1818,6 +1819,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
@@ -1878,6 +1879,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
variations::VariationsService::RegisterProfilePrefs(registry);
webapps::InstallPromptPrefs::RegisterProfilePrefs(registry);
@@ -1898,21 +1889,29 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi
diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java
--- a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java
+++ b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java
@@ -134,13 +134,12 @@ public class ProfileDataCache implements AccountInfoService.Observer {
@VisibleForTesting
@@ -134,7 +134,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
private final Context mContext;
private final AccountManagerFacade mAccountManagerFacade;
- private final IdentityManager mIdentityManager;
private final int mImageSize;
// The badge for a given account is selected as follows:
// * If there is a config for that specific account, use that
@@ -150,13 +149,11 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang
ProfileDataCache(
Context context,
AccountManagerFacade accountManagerFacade,
- IdentityManager identityManager,
+ IdentityManager identityManagerNotUsed,
@Px int imageSize,
@Nullable BadgeConfig badgeConfig) {
// TODO(crbug.com/341948846): Remove AccountInfoService and update
// populateCache/populateCacheForAllAccounts to use identityManager to get the list of
// accounts
- assert identityManager != null;
mContext = context;
mAccountManagerFacade = accountManagerFacade;
- mIdentityManager = identityManager;
mImageSize = imageSize;
mDefaultBadgeConfig = badgeConfig;
mPlaceholderImage = getScaledPlaceholderImage(context, imageSize);
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
@@ -1997,7 +1996,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
@@ -110,6 +110,11 @@ import org.chromium.ui.interpolators.Interpolators;
@@ -112,6 +112,11 @@ import org.chromium.ui.interpolators.Interpolators;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.url.GURL;
@@ -2009,7 +2008,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;
@@ -530,6 +535,9 @@ class LocationBarMediator
@@ -532,6 +537,9 @@ class LocationBarMediator
if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return;
Tab tab = mLocationBarDataProvider.getTab();
if (tab == null) return;
@@ -2022,7 +2021,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
@@ -7027,6 +7027,31 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -7057,6 +7057,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>
@@ -2124,7 +2123,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
@@ -4118,6 +4118,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] =
@@ -4125,6 +4125,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] =
"net.out_of_process_system_dns_resolution_enabled";
#endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
@@ -2140,7 +2139,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
@@ -134,10 +134,12 @@ void PrefProvider::RegisterProfilePrefs(
@@ -137,10 +137,12 @@ void PrefProvider::RegisterProfilePrefs(
PrefProvider::PrefProvider(PrefService* prefs,
bool off_the_record,
@@ -2153,7 +2152,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");
@@ -160,10 +162,12 @@ PrefProvider::PrefProvider(PrefService* prefs,
@@ -163,10 +165,12 @@ PrefProvider::PrefProvider(PrefService* prefs,
WebsiteSettingsRegistry* website_settings =
WebsiteSettingsRegistry::GetInstance();
for (const WebsiteSettingsInfo* info : *website_settings) {
@@ -2189,7 +2188,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -286,6 +286,7 @@ struct ContentSettingEntry {
@@ -285,6 +285,7 @@ struct ContentSettingEntry {
HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
bool is_off_the_record,
@@ -2197,7 +2196,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
bool store_last_modified,
bool restore_session,
bool should_record_metrics)
@@ -295,6 +296,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
@@ -294,6 +295,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
#endif
prefs_(prefs),
is_off_the_record_(is_off_the_record),
@@ -2205,7 +2204,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
store_last_modified_(store_last_modified),
allow_invalid_secondary_pattern_for_testing_(false),
clock_(base::DefaultClock::GetInstance()) {
@@ -308,7 +310,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
@@ -307,7 +309,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
policy_provider->AddObserver(this);
auto pref_provider_ptr = std::make_unique<content_settings::PrefProvider>(
@@ -94,7 +94,7 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
@@ -11,6 +11,7 @@ import org.chromium.base.supplier.ObservableSupplier;
@@ -11,6 +11,7 @@ import org.chromium.base.supplier.NonNullObservableSupplier;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
@@ -109,7 +109,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
- private final Activity mActivity;
+ private final ChromeActivity mActivity;
private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate;
private final Supplier<ShareDelegate> mShareDelegateSupplier;
private final Supplier<@Nullable ShareDelegate> mShareDelegateSupplier;
private final Supplier<EphemeralTabCoordinator> mEphemeralTabCoordinatorSupplier;
@@ -97,7 +98,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager;
@@ -118,7 +118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
- Activity activity,
+ ChromeActivity activity,
BrowserControlsVisibilityDelegate appBrowserControlsVisibilityDelegate,
Supplier<ShareDelegate> shareDelegateSupplier,
Supplier<@Nullable ShareDelegate> shareDelegateSupplier,
Supplier<EphemeralTabCoordinator> ephemeralTabCoordinatorSupplier,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
@@ -132,9 +132,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
import android.content.ComponentName;
import android.content.Intent;
import android.text.TextUtils;
@@ -36,6 +38,9 @@ import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -51,6 +53,9 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType;
import org.chromium.ui.util.ColorUtils;
+import org.chromium.ui.base.ActivityWindowAndroid;
+import org.chromium.ui.base.IntentRequestTracker;
@@ -142,9 +142,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
/**
* The activity that displays the bookmark UI on the phone. It keeps a {@link
* BookmarkManagerCoordinator} inside of it and creates a snackbar manager. This activity should
@@ -51,6 +56,9 @@ public class BookmarkActivity extends SnackbarActivity {
private @Nullable BookmarkOpener mBookmarkOpener;
@@ -67,6 +72,9 @@ public class BookmarkActivity extends SnackbarActivity {
private @Nullable OnKeyDownHandler mOnKeyDownHandler;
private @Nullable ActivityWindowAndroid mWindowAndroid;
+ private ActivityWindowAndroid mWindowAndroid;
+ private IntentRequestTracker mIntentRequestTracker;
@@ -152,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
@Override
protected void onProfileAvailable(Profile profile) {
super.onProfileAvailable(profile);
@@ -84,6 +92,14 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -131,6 +139,14 @@ public class BookmarkActivity extends SnackbarActivity {
mOnKeyDownHandler =
BackPressHelper.create(
this, getOnBackPressedDispatcher(), mBookmarkManagerCoordinator);
@@ -167,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
}
@Override
@@ -111,6 +127,7 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -163,6 +179,7 @@ public class BookmarkActivity extends SnackbarActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@@ -175,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
assumeNonNull(data);
BookmarkId bookmarkId =
@@ -120,6 +137,21 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -172,6 +189,21 @@ public class BookmarkActivity extends SnackbarActivity {
}
}
@@ -235,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
private final BottomSheetController mBottomSheetController;
private final Supplier<NewTabPageCreationTracker> mNewTabPageCreationTracker;
private final BrowserControlsManager mBrowserControlsManager;
@@ -326,7 +327,7 @@ public class NativePageFactory {
@@ -331,7 +332,7 @@ public class NativePageFactory {
mTabModelSelector,
mEdgeToEdgeControllerSupplier),
mActivity.getComponentName(),
@@ -247,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -208,6 +208,8 @@ static_library("browser") {
@@ -209,6 +209,8 @@ static_library("browser") {
"bad_message.h",
"bookmarks/bookmark_model_factory.cc",
"bookmarks/bookmark_model_factory.h",
@@ -256,7 +256,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"bookmarks/chrome_bookmark_client.cc",
"bookmarks/chrome_bookmark_client.h",
"bookmarks/managed_bookmark_service_factory.cc",
@@ -1531,6 +1533,13 @@ static_library("browser") {
@@ -1507,6 +1509,13 @@ static_library("browser") {
"webdata_services/web_data_service_factory.cc",
]
@@ -270,7 +270,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
configs += [
"//build/config/compiler:wexit_time_destructors",
"//build/config:precompiled_headers",
@@ -3703,8 +3712,6 @@ static_library("browser") {
@@ -3684,8 +3693,6 @@ static_library("browser") {
"bookmarks/bookmark_expanded_state_tracker.h",
"bookmarks/bookmark_expanded_state_tracker_factory.cc",
"bookmarks/bookmark_expanded_state_tracker_factory.h",
@@ -322,7 +322,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
}
void BookmarkBridge::Destroy(JNIEnv* env) {
@@ -844,6 +870,173 @@ jint BookmarkBridge::GetTotalBookmarkCount(
@@ -841,6 +867,173 @@ int32_t BookmarkBridge::GetTotalBookmarkCount(JNIEnv* env,
return count;
}
@@ -494,8 +494,8 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+void BookmarkBridge::FileSelectionCanceled() {}
+
void BookmarkBridge::SetBookmarkTitle(JNIEnv* env,
jlong id,
jint type,
int64_t id,
int32_t type,
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser/bookmarks/android/bookmark_bridge.h
--- a/chrome/browser/bookmarks/android/bookmark_bridge.h
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.h
@@ -540,8 +540,8 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env);
@@ -119,6 +129,17 @@ class BookmarkBridge : public ProfileObserver,
jlong id,
jint type);
int64_t id,
int32_t type);
+ void ImportBookmarks(JNIEnv* env,
+ const base::android::JavaRef<jobject>& obj,
@@ -557,7 +557,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
void GetAllFoldersWithDepths(
JNIEnv* env,
const base::android::JavaRef<jobject>& j_folders_obj,
@@ -379,6 +400,8 @@ class BookmarkBridge : public ProfileObserver,
@@ -372,6 +393,8 @@ class BookmarkBridge : public ProfileObserver,
void CreateOrDestroyAccountReadingListManagerIfNeeded();
const raw_ptr<Profile> profile_; // weak
@@ -566,7 +566,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
base::android::ScopedJavaGlobalRef<jobject> java_bookmark_model_;
const raw_ptr<bookmarks::BookmarkModel> bookmark_model_; // weak
const raw_ptr<bookmarks::ManagedBookmarkService>
@@ -393,6 +416,7 @@ class BookmarkBridge : public ProfileObserver,
@@ -386,6 +409,7 @@ class BookmarkBridge : public ProfileObserver,
std::unique_ptr<bookmarks::ScopedGroupBookmarkActions>
grouped_bookmark_actions_;
PrefChangeRegistrar pref_change_registrar_;
@@ -574,7 +574,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
// Information about the Partner bookmarks (must check for IsLoaded()).
// This is owned by profile.
@@ -427,6 +451,10 @@ class BookmarkBridge : public ProfileObserver,
@@ -420,6 +444,10 @@ class BookmarkBridge : public ProfileObserver,
base::TimeTicks load_start_time_;
bool loading_notification_sent_ = false;
@@ -678,16 +678,16 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
@@ -60,6 +60,8 @@ import org.chromium.components.image_fetcher.ImageFetcherConfig;
import org.chromium.components.image_fetcher.ImageFetcherFactory;
import org.chromium.ui.KeyboardVisibilityDelegate;
@@ -66,6 +66,8 @@ import org.chromium.ui.base.ActivityResultTracker;
import org.chromium.ui.base.Clipboard;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.edge_to_edge.EdgeToEdgePadAdjuster;
+import org.chromium.ui.base.ActivityWindowAndroid;
+import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType;
import org.chromium.ui.modelutil.MVCListAdapter.ListItem;
@@ -354,6 +356,13 @@ public class BookmarkManagerCoordinator
@@ -369,6 +371,13 @@ public class BookmarkManagerCoordinator
// Public API implementation.
@@ -704,16 +704,16 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
@@ -64,6 +64,8 @@ import org.chromium.components.commerce.core.ShoppingService;
@@ -67,6 +67,8 @@ import org.chromium.components.commerce.core.ShoppingService;
import org.chromium.components.commerce.core.SubscriptionsObserver;
import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
import org.chromium.components.power_bookmarks.PowerBookmarkType;
+import org.chromium.ui.base.ActivityWindowAndroid;
+import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.accessibility.AccessibilityState;
import org.chromium.ui.base.Clipboard;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.DeviceInput;
@@ -85,6 +87,47 @@ import java.util.function.BooleanSupplier;
@@ -89,6 +91,47 @@ import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -761,7 +761,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
/** Responsible for BookmarkManager business logic. */
// TODO(crbug.com/40256938): Remove BookmarkDelegate if possible.
@NullMarked
@@ -95,6 +138,9 @@ class BookmarkManagerMediator
@@ -99,6 +142,9 @@ class BookmarkManagerMediator
private static boolean sPreventLoadingForTesting;
@@ -771,7 +771,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
/** Keeps track of whether drag is enabled / active for bookmark lists. */
private class BookmarkDragStateDelegate implements DragStateDelegate {
private BookmarkDelegate mBookmarkDelegate;
@@ -647,6 +693,14 @@ class BookmarkManagerMediator
@@ -641,6 +687,14 @@ class BookmarkManagerMediator
mNativePage = nativePage;
}
@@ -786,7 +786,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
/** See BookmarkManager(Coordinator)#updateForUrl */
void updateForUrl(String url) {
// Bookmark model is null if the manager has been destroyed.
@@ -819,6 +873,235 @@ class BookmarkManagerMediator
@@ -809,6 +863,235 @@ class BookmarkManagerMediator
}
}
@@ -1025,17 +1025,17 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
@@ -16,6 +16,9 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
import org.chromium.chrome.browser.ui.native_page.NativePageHost;
import org.chromium.components.embedder_support.util.UrlConstants;
@@ -22,6 +22,9 @@ import org.chromium.ui.base.ActivityResultTracker;
import org.chromium.ui.base.WindowAndroid;
import java.util.function.Supplier;
+import org.chromium.chrome.browser.app.ChromeActivity;
+import org.chromium.ui.modaldialog.ModalDialogManager;
+import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
/** A native page holding a {@link BookmarkManagerCoordinator} on _tablet_. */
@NullMarked
@@ -37,7 +40,8 @@ public class BookmarkPage extends BasicNativePage {
@@ -52,7 +55,8 @@ public class BookmarkPage extends BasicNativePage {
Profile profile,
NativePageHost host,
@Nullable ComponentName componentName,
@@ -1045,7 +1045,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
super(host);
mTitle = host.getContext().getString(R.string.bookmarks);
@@ -65,6 +69,9 @@ public class BookmarkPage extends BasicNativePage {
@@ -83,6 +87,9 @@ public class BookmarkPage extends BasicNativePage {
backPressManager);
mBookmarkManagerCoordinator.setBasicNativePage(this);
@@ -1247,7 +1247,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -257,6 +257,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -263,6 +263,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kAvoidDoubleMultiwindowChanges,
&kBlockIntentsWhileLocked,
&kBookmarkPaneAndroid,
@@ -1258,7 +1258,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -694,6 +694,7 @@ public abstract class ChromeFeatureList {
@@ -698,6 +698,7 @@ public abstract class ChromeFeatureList {
"UseLibunwindstackNativeUnwinderAndroid";
public static final String VERIFY_QWACS = "VerifyQWACs";
public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService";
@@ -1321,7 +1321,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
/** Whether Chrome is set as the default browser. Default value is false. */
public static final String CHROME_DEFAULT_BROWSER = "applink.chrome_default_browser";
@@ -1167,6 +1169,7 @@ public final class ChromePreferenceKeys {
@@ -1191,6 +1193,7 @@ public final class ChromePreferenceKeys {
AUXILIARY_SEARCH_SCHEMA_VERSION,
APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@@ -1360,7 +1360,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
--- a/chrome/utility/BUILD.gn
+++ b/chrome/utility/BUILD.gn
@@ -212,6 +212,13 @@ static_library("utility") {
@@ -215,6 +215,13 @@ static_library("utility") {
deps += [ "//chrome/services/pdf:lib" ]
}
@@ -72,24 +72,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/page_info/page_info.h | 1 +
.../permissions/PermissionDialogDelegate.java | 13 +++
.../PermissionDialogModelFactory.java | 83 ++++++++++++++++++-
.../embedded_permission_prompt_android.cc | 3 +-
.../embedded_permission_prompt_android.cc | 2 +-
.../embedded_permission_prompt_android.h | 2 +-
.../permission_dialog_delegate.cc | 24 +++++-
.../permission_dialog_delegate.h | 1 +
.../permission_prompt_android.cc | 8 +-
.../permission_prompt_android.cc | 5 +-
.../permission_prompt_android.h | 3 +-
.../android/permissions_android_strings.grd | 17 ++++
.../geolocation_permission_context_android.cc | 30 +++++--
.../geolocation_permission_context_android.cc | 28 +++++--
.../geolocation_permission_context_android.h | 8 ++
.../embedded_permission_prompt_flow_model.cc | 2 +-
.../permissions/permission_context_base.cc | 64 ++++++++++++--
.../permissions/permission_context_base.cc | 59 +++++++++++--
.../permissions/permission_context_base.h | 26 +++++-
components/permissions/permission_prompt.h | 3 +-
components/permissions/permission_request.cc | 34 +++++++-
components/permissions/permission_request.h | 18 +++-
.../permissions/permission_request_manager.cc | 49 ++++++-----
.../permissions/permission_request_manager.h | 11 ++-
37 files changed, 508 insertions(+), 75 deletions(-)
37 files changed, 501 insertions(+), 71 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
@@ -233,43 +233,43 @@ 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
@@ -227,7 +227,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) {
active_chip_permission_request_manager_.value()->Accept();
@@ -236,7 +236,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) {
break;
case permissions::PermissionAction::GRANTED_ONCE:
- active_chip_permission_request_manager_.value()->AcceptThisTime();
+ active_chip_permission_request_manager_.value()->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
active_chip_permission_request_manager_.value()->AcceptThisTime(
- /*prompt_options=*/std::monostate());
+ /*prompt_options=*/std::monostate(), content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
break;
case permissions::PermissionAction::DENIED:
active_chip_permission_request_manager_.value()->Deny();
active_chip_permission_request_manager_.value()->Deny(
diff --git a/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc b/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc
--- a/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc
+++ b/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc
@@ -117,7 +117,7 @@ void ExclusiveAccessPermissionPromptView::RunButtonCallback(int button_id) {
@@ -119,7 +119,7 @@ void ExclusiveAccessPermissionPromptView::RunButtonCallback(int button_id) {
request_type(), GetPermissionActionString(button),
record_browser_always_active_value());
if (button == ButtonType::kAllowThisTime) {
- delegate_->AcceptThisTime();
+ delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
- delegate_->AcceptThisTime(/*prompt_options=*/std::monostate());
+ delegate_->AcceptThisTime(/*prompt_options=*/std::monostate(), content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
} else if (button == ButtonType::kAlwaysAllow) {
delegate_->Accept();
delegate_->Accept(/*prompt_options=*/std::monostate());
} else if (button == ButtonType::kNeverAllow) {
diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
--- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
+++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
@@ -295,7 +295,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) {
delegate_->Accept();
@@ -302,7 +302,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) {
delegate_->Accept(/*prompt_options=*/std::monostate());
return;
case PermissionDialogButton::kAcceptOnce:
- delegate_->AcceptThisTime();
+ delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
- delegate_->AcceptThisTime(/*prompt_options=*/std::monostate());
+ delegate_->AcceptThisTime(/*prompt_options=*/std::monostate(), content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
return;
case PermissionDialogButton::kDeny:
#if BUILDFLAG(IS_CHROMEOS)
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
@@ -721,6 +721,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -724,6 +724,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();
@@ -1398,6 +1403,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -1401,6 +1406,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
.getDefaultColor());
}
}
@@ -295,7 +295,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
--- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
+++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
@@ -241,7 +241,7 @@ void GetOrigins(JNIEnv* env,
@@ -240,7 +240,7 @@ void GetOrigins(JNIEnv* env,
seen_origins.push_back(origin);
insertionFunc(env, static_cast<int>(content_type), list,
ConvertOriginToJavaString(env, origin), jembedder,
@@ -307,7 +307,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid
diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd
--- a/components/browser_ui/strings/android/browser_ui_strings.grd
+++ b/components/browser_ui/strings/android/browser_ui_strings.grd
@@ -626,6 +626,11 @@
@@ -635,6 +635,11 @@
<message name="IDS_PAGE_INFO_URL_TRUNCATED" desc="Accessibility announcement when the URL in PageInfo switches from full to truncated display">
URL truncated
</message>
@@ -483,7 +483,7 @@ 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
@@ -221,6 +221,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
@@ -218,6 +218,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
// being requested. This is needed for the Clapper experiment
// (crbug.com/458351800) and (crbug.com/463333225).
bool requested_notifications = false;
@@ -491,8 +491,8 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
+ user_specified_settings_is_user_session;
for (const auto& permission : permission_info_list) {
if (base::Contains(permissions_to_display, permission.type)) {
@@ -233,6 +235,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
if (std::ranges::contains(permissions_to_display, permission.type)) {
@@ -230,6 +232,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
user_specified_settings_to_display[permission.type] =
info->delegate().IsAnyPermissionAllowed(*setting_to_display);
@@ -501,9 +501,9 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
}
// Notifications permission can have the setting to display as DEFAULT
@@ -259,7 +263,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
@@ -256,7 +260,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
ConvertUTF16ToJavaString(env, setting_title_mid_sentence),
static_cast<jint>(permission),
static_cast<int32_t>(permission),
user_specified_settings_to_display[permission],
- requested_notifications);
+ requested_notifications,
@@ -511,12 +511,12 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
}
}
@@ -272,7 +277,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
@@ -269,7 +274,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), requested_notifications);
+ static_cast<jint>(CONTENT_SETTING_ALLOW), requested_notifications,
static_cast<int32_t>(chosen_object->ui_info->content_settings_type),
- static_cast<int32_t>(CONTENT_SETTING_ALLOW), requested_notifications);
+ static_cast<int32_t>(CONTENT_SETTING_ALLOW), requested_notifications,
+ /* is_user_session */ false);
}
@@ -524,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
@@ -1294,6 +1294,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
@@ -1305,6 +1305,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
permission_info.is_one_time =
(info.metadata.session_model() ==
content_settings::mojom::SessionModel::ONE_TIME);
@@ -684,13 +684,12 @@ 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
@@ -123,7 +123,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() {
delegate()->FinalizeCurrentRequests();
@@ -126,7 +126,7 @@ void EmbeddedPermissionPromptAndroid::Acknowledge(
}
-void EmbeddedPermissionPromptAndroid::AcceptThisTime() {
+void EmbeddedPermissionPromptAndroid::AcceptThisTime(
+ content_settings::mojom::LifetimeMode lifetimeOption) {
void EmbeddedPermissionPromptAndroid::AcceptThisTime(
- const PromptOptions& prompt_options) {
+ const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetimeOption) {
prompt_model_->PrecalculateVariantsForMetrics();
prompt_model_->RecordPermissionActionUKM(
permissions::ElementAnchoredBubbleAction::kGrantedOnce);
@@ -699,12 +698,12 @@ diff --git a/components/permissions/android/permission_prompt/embedded_permissio
+++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.h
@@ -45,7 +45,7 @@ class EmbeddedPermissionPromptAndroid : public PermissionPromptAndroid {
const override;
void Dismiss() override;
void Accept() override;
- void AcceptThisTime() override;
+ void AcceptThisTime(content_settings::mojom::LifetimeMode lifetimeOption) override;
void Acknowledge() override;
void Deny() override;
void Dismiss(const PromptOptions& prompt_options) override;
void Accept(const PromptOptions& prompt_options) override;
- void AcceptThisTime(const PromptOptions& prompt_options) override;
+ void AcceptThisTime(const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetimeOption) override;
void Acknowledge(const PromptOptions& prompt_options) override;
void Deny(const PromptOptions& prompt_options) override;
void Resumed() override;
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
@@ -732,16 +731,16 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
+ permission_prompt_->AcceptThisTime(lifetimeOption);
+ return;
+ }
permission_prompt_->Accept();
permission_prompt_->Accept(prompt_options_);
}
void PermissionDialogDelegate::AcceptThisTime(JNIEnv* env) {
CHECK(permission_prompt_);
- permission_prompt_->AcceptThisTime();
- permission_prompt_->AcceptThisTime(prompt_options_);
+ content_settings::mojom::LifetimeMode lifetimeOption =
+ static_cast<content_settings::mojom::LifetimeMode>(
+ java_delegate_->GetSelectedLifetimeOption());
+ permission_prompt_->AcceptThisTime(lifetimeOption);
+ permission_prompt_->AcceptThisTime(prompt_options_, lifetimeOption);
}
void PermissionDialogDelegate::Acknowledge(JNIEnv* env) {
@@ -756,13 +755,13 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
+ permission_prompt_->DenyThisTime(lifetimeOption);
+ return;
+ }
permission_prompt_->Deny();
permission_prompt_->Deny(prompt_options_);
}
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
@@ -43,6 +43,7 @@ class PermissionDialogJavaDelegate {
@@ -46,6 +46,7 @@ class PermissionDialogJavaDelegate {
const favicon_base::FaviconRawBitmapResult& favicon_result);
virtual void DismissDialog();
@@ -773,33 +772,30 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc
--- a/components/permissions/android/permission_prompt/permission_prompt_android.cc
+++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc
@@ -85,8 +85,12 @@ void PermissionPromptAndroid::Accept() {
delegate_->Accept();
@@ -86,8 +86,9 @@ void PermissionPromptAndroid::Accept(const PromptOptions& prompt_options) {
}
-void PermissionPromptAndroid::AcceptThisTime() {
- delegate_->AcceptThisTime();
+void PermissionPromptAndroid::AcceptThisTime(content_settings::mojom::LifetimeMode lifetimeOption) {
+ delegate_->AcceptThisTime(lifetimeOption);
+}
+
+void PermissionPromptAndroid::DenyThisTime(content_settings::mojom::LifetimeMode lifetimeOption) {
+ delegate_->DenyThisTime(lifetimeOption);
void PermissionPromptAndroid::AcceptThisTime(
- const PromptOptions& prompt_options) {
- delegate_->AcceptThisTime(prompt_options);
+ const PromptOptions& prompt_options,
+ content_settings::mojom::LifetimeMode lifetimeOption) {
+ delegate_->AcceptThisTime(prompt_options, lifetimeOption);
}
void PermissionPromptAndroid::Deny() {
void PermissionPromptAndroid::Deny(const PromptOptions& prompt_options) {
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
@@ -57,10 +57,11 @@ class PermissionPromptAndroid : public PermissionPrompt {
const;
virtual void Dismiss();
virtual void Accept();
- virtual void AcceptThisTime();
+ virtual void AcceptThisTime(content_settings::mojom::LifetimeMode lifetimeOption);
virtual void Acknowledge() {}
virtual void Deny();
virtual void Ignore();
virtual void Dismiss(const PromptOptions& prompt_options);
virtual void Accept(const PromptOptions& prompt_options);
- virtual void AcceptThisTime(const PromptOptions& prompt_options);
+ virtual void AcceptThisTime(const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetimeOption);
virtual void Acknowledge(const PromptOptions& prompt_options) {}
virtual void Deny(const PromptOptions& prompt_options);
virtual void Ignore(const PromptOptions& prompt_options);
+ virtual void DenyThisTime(content_settings::mojom::LifetimeMode lifetimeOption);
virtual void Resumed() {}
virtual void SystemSettingsShown() {}
@@ -807,7 +803,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_prompt_
diff --git a/components/permissions/android/permissions_android_strings.grd b/components/permissions/android/permissions_android_strings.grd
--- a/components/permissions/android/permissions_android_strings.grd
+++ b/components/permissions/android/permissions_android_strings.grd
@@ -267,6 +267,23 @@
@@ -272,6 +272,23 @@
Unknown or unsupported device (<ph name="DEVICE_ID">%1$s<ex>A1:B2:C3:D4:E5:F6</ex></ph>)
</message>
@@ -834,10 +830,10 @@ diff --git a/components/permissions/android/permissions_android_strings.grd b/co
diff --git a/components/permissions/contexts/geolocation_permission_context_android.cc b/components/permissions/contexts/geolocation_permission_context_android.cc
--- a/components/permissions/contexts/geolocation_permission_context_android.cc
+++ b/components/permissions/contexts/geolocation_permission_context_android.cc
@@ -195,7 +195,18 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
PermissionDecision decision,
bool is_final_decision) {
DCHECK(is_final_decision);
@@ -213,7 +213,18 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
bool persist,
const permissions::PermissionPromptDecision& decision) {
DCHECK(decision.is_final);
+ NotifyPermissionSetWithLifetime(request_data,
+ std::move(callback), persist, decision, is_final_decision,
+ content_settings::mojom::LifetimeMode::ALWAYS);
@@ -852,32 +848,31 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
+ content_settings::mojom::LifetimeMode lifetime_option) {
bool is_default_search =
IsRequestingOriginDSE(request_data.requesting_origin);
if (decision == PermissionDecision::kAllow &&
@@ -210,7 +221,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(
request_data.id, request_data.requesting_origin,
if (decision.overall_decision == PermissionDecision::kAllow &&
@@ -230,7 +241,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
request_data.embedding_origin, std::move(callback),
- false /* persist */, PermissionDecision::kDeny,
+ false /* persist */, PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options,
false /* persist */,
permissions::PermissionPromptDecision{
- .overall_decision = PermissionDecision::kDeny,
+ .overall_decision = PermissionDecision::kDeny, lifetime_option,
.prompt_options = decision.prompt_options,
.is_final = true},
request_data.embedded_permission_request_descriptor.Clone());
return;
@@ -232,7 +243,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(
request_data.id, request_data.requesting_origin,
@@ -255,7 +266,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
request_data.embedding_origin, std::move(callback),
- false /* persist */, PermissionDecision::kDeny,
+ false /* persist */, PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options,
false /* persist */,
permissions::PermissionPromptDecision{
- .overall_decision = PermissionDecision::kDeny,
+ .overall_decision = PermissionDecision::kDeny, lifetime_option,
.prompt_options = decision.prompt_options,
.is_final = true},
request_data.embedded_permission_request_descriptor.Clone());
return;
@@ -246,14 +257,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -270,13 +281,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
base::BindOnce(
&GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown,
weak_factory_.GetWeakPtr(), request_data.requesting_origin,
- request_data.embedding_origin, persist, decision,
+ request_data.embedding_origin, persist, decision, lifetime_option,
request_data.prompt_options));
- request_data.embedding_origin, persist, decision));
+ request_data.embedding_origin, persist, decision, lifetime_option));
return;
}
@@ -885,45 +880,42 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
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());
}
@@ -432,7 +443,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
const GURL& requesting_origin,
@@ -459,6 +470,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
const GURL& embedding_origin,
bool persist,
- PermissionDecision decision,
+ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options,
const permissions::PermissionPromptDecision& decision,
+ content_settings::mojom::LifetimeMode lifetime_option,
LocationSettingsDialogOutcome prompt_outcome) {
bool is_default_search = IsRequestingOriginDSE(requesting_origin);
@@ -452,7 +463,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
FinishNotifyPermissionSet(location_settings_dialog_request_id_,
requesting_origin, embedding_origin,
std::move(location_settings_dialog_callback_),
- persist, decision, prompt_options);
+ persist, decision, lifetime_option, prompt_options);
PermissionPromptDecision result_decision = decision;
@@ -477,7 +489,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
FinishNotifyPermissionSet(
location_settings_dialog_request_id_, requesting_origin, embedding_origin,
- std::move(location_settings_dialog_callback_), persist, result_decision);
+ std::move(location_settings_dialog_callback_), persist, result_decision, lifetime_option);
location_settings_dialog_request_id_ =
PermissionRequestID(content::GlobalRenderFrameHostId(0, 0),
@@ -465,7 +476,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
const GURL& embedding_origin,
@@ -491,6 +503,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
BrowserPermissionCallback callback,
bool persist,
- PermissionDecision decision,
+ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options,
const permissions::PermissionPromptDecision& decision,
+ content_settings::mojom::LifetimeMode lifetime_option,
blink::mojom::EmbeddedPermissionRequestDescriptorPtr
embedded_permission_request_descriptor) {
@@ -478,9 +489,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
PermissionRequestData request_data(
@@ -502,8 +515,9 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
requesting_origin, embedding_origin);
request_data.embedded_permission_request_descriptor =
std::move(embedded_permission_request_descriptor);
request_data.prompt_options = prompt_options.value_or(std::monostate());
- GeolocationPermissionContext::NotifyPermissionSet(
- request_data, std::move(callback), persist, decision);
+ GeolocationPermissionContext::NotifyPermissionSetImpl(
request_data,
- std::move(callback), persist, decision, /*is_final_decision=*/true);
+ std::move(callback), persist, decision, /*is_final_decision=*/true,
+ request_data, std::move(callback), persist, decision,
+ /*use_lifetime_option*/ true, lifetime_option);
}
@@ -931,10 +923,10 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
diff --git a/components/permissions/contexts/geolocation_permission_context_android.h b/components/permissions/contexts/geolocation_permission_context_android.h
--- a/components/permissions/contexts/geolocation_permission_context_android.h
+++ b/components/permissions/contexts/geolocation_permission_context_android.h
@@ -92,6 +92,12 @@ class GeolocationPermissionContextAndroid
bool persist,
PermissionDecision decision,
bool is_final_decision) override;
@@ -94,6 +94,12 @@ class GeolocationPermissionContextAndroid
BrowserPermissionCallback callback,
bool persist,
const permissions::PermissionPromptDecision& decision) override;
+ void NotifyPermissionSetWithLifetime(const PermissionRequestData& request_data,
+ BrowserPermissionCallback callback,
+ bool persist,
@@ -944,38 +936,38 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
content::PermissionResult UpdatePermissionStatusWithDeviceStatus(
content::WebContents* web_contents,
content::PermissionResult result,
@@ -136,6 +142,7 @@ class GeolocationPermissionContextAndroid
@@ -139,6 +145,7 @@ class GeolocationPermissionContextAndroid
const GURL& embedding_origin,
bool persist,
PermissionDecision decision,
const permissions::PermissionPromptDecision& decision,
+ content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options,
LocationSettingsDialogOutcome prompt_outcome);
@@ -146,6 +153,7 @@ class GeolocationPermissionContextAndroid
void FinishNotifyPermissionSet(
@@ -148,6 +155,7 @@ class GeolocationPermissionContextAndroid
BrowserPermissionCallback callback,
bool persist,
PermissionDecision decision,
const permissions::PermissionPromptDecision& 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
@@ -293,7 +293,7 @@ void EmbeddedPermissionPromptFlowModel::SetDelegateAction(
delegate_->Accept();
@@ -297,7 +297,7 @@ void EmbeddedPermissionPromptFlowModel::SetDelegateAction(
delegate_->Accept(prompt_options);
break;
case DelegateAction::kAllowThisTime:
- delegate_->AcceptThisTime();
+ delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
- delegate_->AcceptThisTime(prompt_options);
+ delegate_->AcceptThisTime(prompt_options, content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
break;
case DelegateAction::kDeny:
delegate_->Deny();
delegate_->Deny(prompt_options);
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
@@ -281,6 +281,17 @@ PermissionContextBase::CreatePermissionRequest(
@@ -306,6 +306,17 @@ PermissionContextBase::CreatePermissionRequest(
std::move(request_finished_callback), UsesAutomaticEmbargo());
}
@@ -993,37 +985,33 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
bool PermissionContextBase::UsesAutomaticEmbargo() const {
return true;
}
@@ -627,7 +638,8 @@ void PermissionContextBase::DecidePermission(
@@ -651,7 +662,8 @@ void PermissionContextBase::DecidePermission(
void PermissionContextBase::PermissionDecided(
PermissionDecision decision,
bool is_final_decision,
const permissions::PermissionPromptDecision& decision,
- const PermissionRequestData& request_data) {
+ const PermissionRequestData& request_data,
+ content_settings::mojom::LifetimeMode lifetime_option) {
UserMadePermissionDecision(request_data.id, request_data.requesting_origin,
request_data.embedding_origin, decision);
// If a permission request originates from an embedded element, its
@@ -651,11 +663,12 @@ void PermissionContextBase::PermissionDecided(
request_data.embedding_origin,
decision.overall_decision);
@@ -675,10 +687,10 @@ void PermissionContextBase::PermissionDecided(
// Check if `request` has `BrowserPermissionCallback`. The call back might be
// missing if a permission prompt was preignored and we already notified an
// origin about it.
if (request->second.second) {
- NotifyPermissionSet(request_data, std::move(request->second.second),
- persist, decision, is_final_decision);
+ NotifyPermissionSetWithLifetime(request_data, std::move(request->second.second),
+ persist, decision, is_final_decision,
+ lifetime_option);
} else {
- NotifyPermissionSet(request_data, base::DoNothing(), persist, decision,
- is_final_decision);
+ NotifyPermissionSetWithLifetime(request_data, base::DoNothing(), persist, decision,
+ is_final_decision, lifetime_option);
}
- NotifyPermissionSet(request_data,
+ NotifyPermissionSetWithLifetime(request_data,
request->second.second ? std::move(request->second.second)
: base::DoNothing(),
- persist, decision);
+ persist, decision, lifetime_option);
}
@@ -740,6 +753,30 @@ void PermissionContextBase::NotifyPermissionSet(
content::BrowserContext* PermissionContextBase::browser_context() const {
@@ -761,6 +773,30 @@ void PermissionContextBase::NotifyPermissionSet(
BrowserPermissionCallback callback,
bool persist,
PermissionDecision decision,
bool is_final_decision) {
const permissions::PermissionPromptDecision& decision) {
+ NotifyPermissionSetImpl(request_data, std::move(callback),
+ persist, decision, is_final_decision, /*use_lifetime_option*/ false,
+ content_settings::mojom::LifetimeMode::ALWAYS);
@@ -1049,20 +1037,21 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
+ bool is_final_decision, bool use_lifetime_option,
+ content_settings::mojom::LifetimeMode lifetime_option) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
// Note that rfh may be null, see crbug.com/426909787.
@@ -755,8 +792,8 @@ void PermissionContextBase::NotifyPermissionSet(
auto* rfh = content::RenderFrameHost::FromID(
@@ -776,9 +812,9 @@ void PermissionContextBase::NotifyPermissionSet(
if (persist) {
// Clone new value, because we need it again for the callback.
- UpdateSetting(request_data, new_value,
- decision == PermissionDecision::kAllowThisTime);
+ UpdateSettingImpl(request_data, new_value,
+ decision == PermissionDecision::kAllowThisTime, use_lifetime_option, lifetime_option);
- UpdateSetting(
+ UpdateSettingImpl(
request_data, new_value,
- decision.overall_decision == PermissionDecision::kAllowThisTime);
+ decision.overall_decision == PermissionDecision::kAllowThisTime, use_lifetime_option, lifetime_option);
}
if (is_final_decision) {
@@ -814,6 +851,17 @@ void PermissionContextBase::UpdateSetting(
if (decision.is_final) {
@@ -838,6 +874,17 @@ void PermissionContextBase::UpdateSetting(
const PermissionRequestData& request_data,
PermissionSetting setting,
bool is_one_time) {
@@ -1080,7 +1069,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,
@@ -823,6 +871,8 @@ void PermissionContextBase::UpdateSetting(
@@ -847,6 +894,8 @@ void PermissionContextBase::UpdateSetting(
constraints.set_session_model(
is_one_time ? content_settings::mojom::SessionModel::ONE_TIME
: content_settings::mojom::SessionModel::DURABLE);
@@ -1092,7 +1081,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
diff --git a/components/permissions/permission_context_base.h b/components/permissions/permission_context_base.h
--- a/components/permissions/permission_context_base.h
+++ b/components/permissions/permission_context_base.h
@@ -203,6 +203,18 @@ class PermissionContextBase : public content_settings::Observer {
@@ -205,6 +205,18 @@ class PermissionContextBase : public content_settings::Observer {
// Updates stored setting if persist is set, updates tab indicators
// and runs the callback to finish the request.
@@ -1108,10 +1097,10 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
+ PermissionDecision decision,
+ bool is_final_decision,
+ content_settings::mojom::LifetimeMode lifetime_option);
virtual void NotifyPermissionSet(const PermissionRequestData& request_data,
BrowserPermissionCallback callback,
bool persist,
@@ -219,6 +231,11 @@ class PermissionContextBase : public content_settings::Observer {
virtual void NotifyPermissionSet(
const PermissionRequestData& request_data,
BrowserPermissionCallback callback,
@@ -221,6 +233,11 @@ class PermissionContextBase : public content_settings::Observer {
// Store the decided permission state. Virtual since the permission might be
// stored with different restrictions (for example for desktop notifications).
@@ -1123,7 +1112,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
virtual void UpdateSetting(const PermissionRequestData& request_data,
PermissionSetting setting,
bool is_one_time);
@@ -248,6 +265,12 @@ class PermissionContextBase : public content_settings::Observer {
@@ -250,6 +267,12 @@ class PermissionContextBase : public content_settings::Observer {
PermissionRequest::PermissionDecidedCallback permission_decided_callback,
base::OnceClosure request_finished_callback) const;
@@ -1136,10 +1125,10 @@ 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;
@@ -297,7 +320,8 @@ class PermissionContextBase : public content_settings::Observer {
@@ -298,7 +321,8 @@ class PermissionContextBase : public content_settings::Observer {
// This is the callback for PermissionRequest and is called once the user
// allows/blocks/dismisses a permission prompt.
void PermissionDecided(PermissionDecision decision,
bool is_final_decision,
void PermissionDecided(const permissions::PermissionPromptDecision& decision,
- const PermissionRequestData& request_data);
+ const PermissionRequestData& request_data,
+ content_settings::mojom::LifetimeMode lifetime_option);
@@ -1152,18 +1141,18 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions
@@ -70,8 +70,9 @@ class PermissionPrompt {
virtual GURL GetEmbeddingOrigin() const = 0;
virtual void Accept() = 0;
- virtual void AcceptThisTime() = 0;
+ virtual void AcceptThisTime(content_settings::mojom::LifetimeMode lifetime_option) = 0;
virtual void Deny() = 0;
+ virtual void DenyThisTime(content_settings::mojom::LifetimeMode lifetime_option) = 0;
virtual void Dismiss() = 0;
virtual void Ignore() = 0;
virtual void Accept(const PromptOptions& prompt_options) = 0;
- virtual void AcceptThisTime(const PromptOptions& prompt_options) = 0;
+ virtual void AcceptThisTime(const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetime_option) = 0;
virtual void Deny(const PromptOptions& prompt_options) = 0;
+ virtual void DenyThisTime(const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetime_option) = 0;
virtual void Dismiss(const PromptOptions& prompt_options) = 0;
virtual void Ignore(const PromptOptions& prompt_options) = 0;
diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc
--- a/components/permissions/permission_request.cc
+++ b/components/permissions/permission_request.cc
@@ -35,6 +35,16 @@ PermissionRequest::PermissionRequest(
@@ -37,6 +37,16 @@ PermissionRequest::PermissionRequest(
request_finished_callback_(std::move(request_finished_callback)),
uses_automatic_embargo_(uses_automatic_embargo) {}
@@ -1180,12 +1169,12 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
PermissionRequest::~PermissionRequest() {
std::move(request_finished_callback_).Run();
}
@@ -445,20 +455,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const {
return request_type() == RequestType::kStorageAccess;
@@ -448,7 +458,15 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const {
}
-void PermissionRequest::PermissionGranted(bool is_one_time) {
+void PermissionRequest::PermissionGranted(bool is_one_time,
void PermissionRequest::PermissionGranted(const PromptOptions& prompt_options,
- bool is_one_time) {
+ bool is_one_time,
+ content_settings::mojom::LifetimeMode lifetime_option) {
+ if (permission_decided_callback_withlifetime_) {
+ std::move(permission_decided_callback_withlifetime_)
@@ -1195,9 +1184,10 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
+ return;
+ }
std::move(permission_decided_callback_)
.Run(is_one_time ? PermissionDecision::kAllowThisTime
: PermissionDecision::kAllow,
/*is_final_decision=*/true, /*request_data=*/*data_);
.Run(PermissionPromptDecision{.overall_decision =
is_one_time
@@ -459,7 +477,13 @@ void PermissionRequest::PermissionGranted(const PromptOptions& prompt_options,
/*request_data=*/*data_);
}
-void PermissionRequest::PermissionDenied() {
@@ -1209,8 +1199,9 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
+ return;
+ }
std::move(permission_decided_callback_)
.Run(PermissionDecision::kDeny,
/*is_final_decision=*/true, /*request_data=*/*data_);
.Run(PermissionPromptDecision{.overall_decision =
PermissionDecision::kDeny,
@@ -469,6 +493,12 @@ void PermissionRequest::PermissionDenied() {
}
void PermissionRequest::Cancelled(bool is_final_decision) {
@@ -1221,14 +1212,14 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
+ return;
+ }
if (permission_decided_callback_) {
permission_decided_callback_.Run(PermissionDecision::kNone,
is_final_decision,
permission_decided_callback_.Run(
PermissionPromptDecision{.overall_decision = PermissionDecision::kNone,
diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h
--- a/components/permissions/permission_request.h
+++ b/components/permissions/permission_request.h
@@ -53,6 +53,12 @@ class PermissionRequest {
bool /*is_final_decision*/,
const PermissionRequestData& /*request_data*/)>;
@@ -54,6 +54,12 @@ class PermissionRequest {
base::RepeatingCallback<void(const PermissionPromptDecision&,
const PermissionRequestData&)>;
+ using PermissionDecidedCallbackWithLifetime = base::RepeatingCallback<void(
+ PermissionDecision /*decision*/,
@@ -1239,7 +1230,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission
// `permission_decided_callback` is called when the permission request is
// resolved by the user (see comment on PermissionDecidedCallback above).
// `request_finished_callback` is called when the permission request is being
@@ -67,6 +73,11 @@ class PermissionRequest {
@@ -68,6 +74,11 @@ class PermissionRequest {
base::OnceClosure request_finished_callback = base::DoNothing(),
bool uses_automatic_embargo = true);
@@ -1251,12 +1242,12 @@ diff --git a/components/permissions/permission_request.h b/components/permission
PermissionRequest(const PermissionRequest&) = delete;
PermissionRequest& operator=(const PermissionRequest&) = delete;
@@ -181,10 +192,10 @@ class PermissionRequest {
@@ -182,10 +193,10 @@ class PermissionRequest {
// If |is_one_time| is true the permission will last until all tabs of
// |origin| are closed or navigated away from, and then the permission will
// automatically expire after 1 day.
- void PermissionGranted(bool is_one_time);
+ void PermissionGranted(bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option);
- void PermissionGranted(const PromptOptions& prompt_options, bool is_one_time);
+ void PermissionGranted(const PromptOptions& prompt_options, bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option);
// Called when the user has denied the requested permission.
- void PermissionDenied();
@@ -1264,7 +1255,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
@@ -254,6 +265,9 @@ class PermissionRequest {
@@ -249,6 +260,9 @@ class PermissionRequest {
// Called once a decision is made about the permission.
PermissionDecidedCallback permission_decided_callback_;
@@ -1277,7 +1268,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
@@ -208,12 +208,12 @@ void PermissionRequestManager::AddRequest(
@@ -221,12 +221,12 @@ void PermissionRequestManager::AddRequest(
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDenyPermissionPrompts)) {
@@ -1292,51 +1283,51 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
return;
}
@@ -284,9 +284,9 @@ void PermissionRequestManager::AddRequest(
if (should_auto_approve_request) {
@@ -307,9 +307,9 @@ void PermissionRequestManager::AddRequest(
.selected_accuracy = GeolocationAccuracy::kPrecise})
: std::monostate();
if (should_auto_approve_request == PermissionAction::GRANTED) {
- request->PermissionGranted(/*is_one_time=*/false);
+ request->PermissionGranted(/*is_one_time=*/false, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED);
- request->PermissionGranted(prompt_options, /*is_one_time=*/false);
+ request->PermissionGranted(prompt_options, /*is_one_time=*/false, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED);
} else if (should_auto_approve_request == PermissionAction::GRANTED_ONCE) {
- request->PermissionGranted(/*is_one_time=*/true);
+ request->PermissionGranted(/*is_one_time=*/true, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED);
- request->PermissionGranted(prompt_options, /*is_one_time=*/true);
+ request->PermissionGranted(prompt_options, /*is_one_time=*/true, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED);
}
return;
}
@@ -619,7 +619,8 @@ void PermissionRequestManager::Accept() {
@@ -650,7 +650,8 @@ void PermissionRequestManager::Accept(const PromptOptions& prompt_options) {
StorePermissionActionForUMA(request->requesting_origin(),
request->request_type(), action);
PermissionGrantedIncludingDuplicates(request.get(),
PermissionGrantedIncludingDuplicates(request.get(), prompt_options,
- /*is_one_time=*/false);
+ /*is_one_time=*/false,
+ content_settings::mojom::LifetimeMode::ALWAYS);
#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
std::optional<ContentSettingsType> content_settings_type =
@@ -637,7 +638,7 @@ void PermissionRequestManager::Accept() {
CurrentRequestsDecided(action);
@@ -669,7 +670,7 @@ void PermissionRequestManager::Accept(const PromptOptions& prompt_options) {
}
-void PermissionRequestManager::AcceptThisTime() {
+void PermissionRequestManager::AcceptThisTime(content_settings::mojom::LifetimeMode mode) {
if (ignore_callbacks_from_prompt_) {
return;
}
@@ -649,7 +650,8 @@ void PermissionRequestManager::AcceptThisTime() {
void PermissionRequestManager::AcceptThisTime(
- const PromptOptions& prompt_options) {
+ const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode mode) {
CHECK_EQ(std::holds_alternative<GeolocationPromptOptions>(prompt_options),
requests_[0]->GetContentSettingsType() ==
ContentSettingsType::GEOLOCATION_WITH_OPTIONS)
@@ -688,7 +689,8 @@ void PermissionRequestManager::AcceptThisTime(
StorePermissionActionForUMA(request->requesting_origin(),
request->request_type(), action);
PermissionGrantedIncludingDuplicates(request.get(),
PermissionGrantedIncludingDuplicates(request.get(), prompt_options,
- /*is_one_time=*/true);
+ /*is_one_time=*/true,
+ mode);
}
NotifyRequestDecided(action);
@@ -657,6 +659,15 @@ void PermissionRequestManager::AcceptThisTime() {
}
@@ -700,6 +702,15 @@ void PermissionRequestManager::Deny(const PromptOptions& prompt_options) {
requests_[0]->GetContentSettingsType() ==
ContentSettingsType::GEOLOCATION_WITH_OPTIONS);
void PermissionRequestManager::Deny() {
+ Deny_(/*is_one_time*/ false, content_settings::mojom::LifetimeMode::ALWAYS);
+}
+
@@ -1349,7 +1340,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
if (ignore_callbacks_from_prompt_) {
return;
}
@@ -677,7 +688,7 @@ void PermissionRequestManager::Deny() {
@@ -720,7 +731,7 @@ void PermissionRequestManager::Deny(const PromptOptions& prompt_options) {
for (const auto& request : requests_) {
StorePermissionActionForUMA(request->requesting_origin(),
request->request_type(), action);
@@ -1358,27 +1349,27 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
NotifyRequestDecided(action);
@@ -1370,32 +1381,32 @@ PermissionRequestManager::VisitDuplicateRequests(
@@ -1464,32 +1475,32 @@ PermissionRequestManager::VisitDuplicateRequests(
void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
PermissionRequest* request,
const PromptOptions& prompt_options,
- bool is_one_time) {
+ bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) {
CHECK(RequestExistsExactlyOnce(request, pending_permission_requests_,
requests_))
<< "Only requests in [pending_permission_]requests_ can have duplicates";
- request->PermissionGranted(is_one_time);
+ request->PermissionGranted(is_one_time, lifetime_option);
- request->PermissionGranted(prompt_options, is_one_time);
+ request->PermissionGranted(prompt_options, is_one_time, lifetime_option);
VisitDuplicateRequests(
base::BindRepeating(
- [](bool is_one_time,
+ [](bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option,
- [](const PromptOptions& prompt_options, bool is_one_time,
+ [](const PromptOptions& prompt_options, bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option,
const std::unique_ptr<PermissionRequest>& request) {
- request->PermissionGranted(is_one_time);
+ request->PermissionGranted(is_one_time, lifetime_option);
- request->PermissionGranted(prompt_options, is_one_time);
+ request->PermissionGranted(prompt_options, is_one_time, lifetime_option);
},
- is_one_time),
+ is_one_time, lifetime_option),
- prompt_options, is_one_time),
+ prompt_options, is_one_time, lifetime_option),
request);
}
@@ -1401,34 +1392,34 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
request);
}
@@ -1683,7 +1694,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() {
@@ -1779,7 +1790,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() {
}
switch (auto_response_for_test_) {
case ACCEPT_ONCE:
- AcceptThisTime();
+ AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
- AcceptThisTime(auto_response_prompt_options_for_test_);
+ AcceptThisTime(auto_response_prompt_options_for_test_, content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
break;
case ACCEPT_ALL:
Accept();
Accept(auto_response_prompt_options_for_test_);
diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h
--- a/components/permissions/permission_request_manager.h
+++ b/components/permissions/permission_request_manager.h
@@ -175,8 +175,10 @@ class PermissionRequestManager
@@ -185,8 +185,10 @@ class PermissionRequestManager
GURL GetRequestingOrigin() const override;
GURL GetEmbeddingOrigin() const override;
void Accept() override;
- void AcceptThisTime() override;
+ void AcceptThisTime(content_settings::mojom::LifetimeMode lifetime_option) override;
void Deny() override;
void Accept(const PromptOptions& prompt_options) override;
- void AcceptThisTime(const PromptOptions& prompt_options) override;
+ void AcceptThisTime(const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetime_option) override;
void Deny(const PromptOptions& prompt_options) override;
+ void Deny_(bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option);
+ void DenyThisTime(content_settings::mojom::LifetimeMode lifetime_option) override;
void Dismiss() override;
void Ignore() override;
+ void DenyThisTime(const PromptOptions& prompt_options, content_settings::mojom::LifetimeMode lifetime_option) override;
void Dismiss(const PromptOptions& prompt_options) override;
void Ignore(const PromptOptions& prompt_options) override;
void FinalizeCurrentRequests() override;
@@ -441,9 +443,12 @@ class PermissionRequestManager
@@ -447,9 +449,12 @@ class PermissionRequestManager
// Calls PermissionGranted on a request and all its duplicates.
void PermissionGrantedIncludingDuplicates(PermissionRequest* request,
const PromptOptions& prompt_options,
- bool is_one_time);
+ bool is_one_time,
+ content_settings::mojom::LifetimeMode lifetime_option);
@@ -36,10 +36,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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
@@ -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" />
@@ -200,6 +200,7 @@ found in the LICENSE file.
<item type="id" name="duplicate_tab_menu_id" />
<item type="id" name="glic_menu_id" />
<item type="id" name="open_in_app_menu_id" />
+ <item type="id" name="bookmark_all_tabs_menu_id" />
<!-- Custom Tabs -->
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -109,6 +109,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane;
@@ -113,6 +113,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane;
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.chrome.browser.browserservices.intents.WebappConstants;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
@@ -55,26 +55,26 @@ 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;
@@ -309,6 +310,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate;
import org.chromium.chrome.browser.ui.browser_window.BrowserWindowType;
@@ -321,6 +322,9 @@ import org.chromium.chrome.browser.ui.default_browser_promo.DefaultBrowserPromoU
import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
import org.chromium.chrome.browser.ui.edge_to_edge.TransitiveTopInsetProvider;
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController;
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;
@@ -325,6 +329,8 @@ import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionInitializerImpl;
import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionManagerImpl;
@@ -336,6 +340,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService;
import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.chrome.browser.xr.scenecore.XrModule;
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;
@@ -3906,6 +3912,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -4030,6 +4036,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);
@@ -4038,6 +4046,41 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -4164,6 +4172,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
@@ -294,6 +294,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
@@ -303,6 +303,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());
@@ -479,6 +487,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
@@ -503,6 +511,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
modelList.add(buildNewTabGroupItem());
modelList.add(buildCloseAllTabsItem());
if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem());
@@ -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) {
@@ -449,6 +476,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(),
};
@@ -557,6 +585,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(
@@ -1229,6 +1260,17 @@ void BookmarkBridge::GetBookmarksOfType(
@@ -1223,6 +1254,17 @@ void BookmarkBridge::GetBookmarksOfType(
AddBookmarkNodesToBookmarkIdList(env, j_list, results);
}
@@ -244,9 +244,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
base::android::ScopedJavaLocalRef<jobject>
GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url);
const bookmarks::BookmarkNode* GetMostRecentlyAddedUserBookmarkIdForUrlImpl(
@@ -240,6 +244,10 @@ class BookmarkBridge : public ProfileObserver,
@@ -232,6 +236,10 @@ class BookmarkBridge : public ProfileObserver,
const base::android::JavaRef<jobject>& j_list,
jint type);
int32_t type);
+ base::android::ScopedJavaLocalRef<jobject> GetTabsCollectionFolderId(
+ JNIEnv* env,
@@ -370,14 +370,14 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
CHECK(!model->account_other_node());
CHECK(!model->account_mobile_node());
@@ -210,6 +211,9 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
base::Value::Dict* mobile_folder_value = local_permanent_folders->FindDict(
base::DictValue* mobile_folder_value = local_permanent_folders->FindDict(
BookmarkCodec::kMobileBookmarkFolderNameKey);
CHECK(mobile_folder_value);
+ base::Value::Dict* tabs_collection_value =
+ local_permanent_folders->FindDict(BookmarkCodec::kTabsBookmarkFolderNameKey);
+ CHECK(tabs_collection_value);
base::Value::Dict* account_permanent_folders =
base::DictValue* account_permanent_folders =
account_bookmarks_.FindDict(BookmarkCodec::kRootsKey);
@@ -285,6 +289,10 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
return bookmark_html_writer::Result::kCouldNotWriteNodes;
@@ -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
@@ -4585,6 +4585,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -4615,6 +4615,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>
@@ -528,15 +528,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
const char BookmarkCodec::kVersionKey[] = "version";
const char BookmarkCodec::kChecksumKey[] = "checksum";
const char BookmarkCodec::kChecksumSHA256Key[] = "checksum_sha256";
@@ -98,6 +99,7 @@ base::Value::Dict BookmarkCodec::Encode(
const BookmarkNode* bookmark_bar_node,
const BookmarkNode* other_folder_node,
const BookmarkNode* mobile_folder_node,
+ const BookmarkNode* tabs_folder_node,
std::string sync_metadata_str) {
@@ -97,6 +98,7 @@ BookmarkCodec::~BookmarkCodec() = default;
base::DictValue BookmarkCodec::Encode(const BookmarkNode* bookmark_bar_node,
const BookmarkNode* other_folder_node,
const BookmarkNode* mobile_folder_node,
+ const BookmarkNode* tabs_folder_node,
std::string sync_metadata_str) {
ids_reassigned_ = false;
uuids_reassigned_ = false;
@@ -123,6 +125,8 @@ base::Value::Dict BookmarkCodec::Encode(
@@ -122,6 +124,8 @@ base::DictValue BookmarkCodec::Encode(const BookmarkNode* bookmark_bar_node,
roots.Set(kBookmarkBarFolderNameKey, EncodeNode(bookmark_bar_node));
roots.Set(kOtherBookmarkFolderNameKey, EncodeNode(other_folder_node));
roots.Set(kMobileBookmarkFolderNameKey, EncodeNode(mobile_folder_node));
@@ -545,7 +545,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
} else {
// No permanent node should have been provided.
CHECK(!other_folder_node);
@@ -143,6 +147,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
@@ -142,6 +146,7 @@ bool BookmarkCodec::Decode(const base::DictValue& value,
BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
@@ -553,7 +553,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
int64_t* max_id,
std::string* sync_metadata_str) {
if (sync_metadata_str) {
@@ -155,13 +160,15 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
@@ -154,13 +159,15 @@ bool BookmarkCodec::Decode(const base::DictValue& value,
base::Uuid::ParseLowercase(kBookmarkBarNodeUuid),
base::Uuid::ParseLowercase(kOtherBookmarksNodeUuid),
base::Uuid::ParseLowercase(kMobileBookmarksNodeUuid),
@@ -570,24 +570,24 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
value, sync_metadata_str);
ReassignIDsIfRequired();
@@ -219,6 +226,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo(
@@ -218,6 +225,7 @@ base::DictValue BookmarkCodec::EncodeMetaInfo(
bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
+ BookmarkNode* tabs_folder_node,
const base::Value::Dict& value,
const base::DictValue& value,
std::string* sync_metadata_str) {
std::optional<int> version = value.FindInt(kVersionKey);
@@ -242,6 +250,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
@@ -240,6 +248,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
roots->FindDict(kOtherBookmarkFolderNameKey);
const base::Value::Dict* mobile_folder_value =
const base::DictValue* mobile_folder_value =
roots->FindDict(kMobileBookmarkFolderNameKey);
+ const base::Value::Dict* tabs_folder_value =
+ roots->FindDict(kTabsBookmarkFolderNameKey);
if (!bb_value || !other_folder_value || !mobile_folder_value)
return false;
@@ -249,6 +259,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
@@ -247,6 +257,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);
@@ -599,15 +599,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmarks/browser/bookmark_codec.h
--- a/components/bookmarks/browser/bookmark_codec.h
+++ b/components/bookmarks/browser/bookmark_codec.h
@@ -44,6 +44,7 @@ class BookmarkCodec {
const BookmarkNode* bookmark_bar_node,
const BookmarkNode* other_folder_node,
const BookmarkNode* mobile_folder_node,
+ const BookmarkNode* tabs_folder_node,
std::string sync_metadata_str);
@@ -43,6 +43,7 @@ class BookmarkCodec {
base::DictValue Encode(const BookmarkNode* bookmark_bar_node,
const BookmarkNode* other_folder_node,
const BookmarkNode* mobile_folder_node,
+ const BookmarkNode* tabs_folder_node,
std::string sync_metadata_str);
// Decodes the previously encoded value to the specified nodes as well as
@@ -62,6 +63,7 @@ class BookmarkCodec {
@@ -61,6 +62,7 @@ class BookmarkCodec {
BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
@@ -615,7 +615,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
int64_t* max_node_id,
std::string* sync_metadata_str);
@@ -95,6 +97,7 @@ class BookmarkCodec {
@@ -94,6 +96,7 @@ class BookmarkCodec {
static const char kBookmarkBarFolderNameKey[];
static const char kOtherBookmarkFolderNameKey[];
static const char kMobileBookmarkFolderNameKey[];
@@ -623,12 +623,12 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
static const char kVersionKey[];
static const char kChecksumKey[];
static const char kChecksumSHA256Key[];
@@ -128,6 +131,7 @@ class BookmarkCodec {
@@ -127,6 +130,7 @@ class BookmarkCodec {
bool DecodeHelper(BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
+ BookmarkNode* tabs_folder_node,
const base::Value::Dict& value,
const base::DictValue& value,
std::string* sync_metadata_str);
diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc
@@ -808,7 +808,7 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -45,6 +45,7 @@ base::Value::Dict EncodeModelToDict(
@@ -45,6 +45,7 @@ base::DictValue EncodeModelToDict(
case BookmarkStorage::kSelectLocalOrSyncableNodes:
return codec.Encode(
model->bookmark_bar_node(), model->other_node(), model->mobile_node(),
@@ -816,7 +816,7 @@ diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookm
model->client()->EncodeLocalOrSyncableBookmarkSyncMetadata());
case BookmarkStorage::kSelectAccountNodes:
// Either all permanent folders or none should exist.
@@ -61,6 +62,7 @@ base::Value::Dict EncodeModelToDict(
@@ -61,6 +62,7 @@ base::DictValue EncodeModelToDict(
return codec.Encode(model->account_bookmark_bar_node(),
model->account_other_node(),
model->account_mobile_node(),
@@ -851,7 +851,7 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark
diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc
--- a/components/bookmarks/browser/model_loader.cc
+++ b/components/bookmarks/browser/model_loader.cc
@@ -74,6 +74,9 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
@@ -73,6 +73,9 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
std::unique_ptr<BookmarkPermanentNode> account_mobile_folder_node =
BookmarkPermanentNode::CreateMobileBookmarks(
0, /*is_account_node=*/true);
@@ -859,9 +859,9 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks
+ BookmarkPermanentNode::CreateTabsCollectionBookmarks(
+ 0, /*is_account_node=*/true);
std::optional<base::Value::Dict> root_dict =
std::optional<base::DictValue> root_dict =
LoadFileToDict(account_file_path);
@@ -81,7 +84,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
@@ -80,7 +83,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
if (root_dict.has_value() &&
codec.Decode(*root_dict, /*already_assigned_ids=*/{},
account_bb_node.get(), account_other_folder_node.get(),
@@ -871,7 +871,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();
@@ -123,7 +127,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
@@ -122,7 +126,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(),
@@ -6,7 +6,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../layout/custom_tabs_control_container.xml | 2 +-
.../java/res/layout/recent_tabs_page.xml | 2 +-
.../java/res/values-sw600dp/dimens.xml | 4 ++--
.../java/res/values-sw600dp/dimens.xml | 3 ++-
chrome/android/java/res/values/dimens.xml | 6 +++++-
.../browser/ChromeBaseAppCompatActivity.java | 3 +++
.../chrome/browser/WarmupManager.java | 7 +++++--
@@ -37,7 +37,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../accessibility/AccessibilitySettings.java | 13 +++++++++++++
.../AccessibilitySettingsDelegate.java | 2 ++
.../chromium/ui/base/DeviceFormFactor.java | 14 ++++++++++++++
33 files changed, 172 insertions(+), 25 deletions(-)
33 files changed, 172 insertions(+), 24 deletions(-)
diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml
--- a/chrome/android/java/res/layout/custom_tabs_control_container.xml
@@ -66,12 +66,11 @@ diff --git a/chrome/android/java/res/layout/recent_tabs_page.xml b/chrome/androi
diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/java/res/values-sw600dp/dimens.xml
--- a/chrome/android/java/res/values-sw600dp/dimens.xml
+++ b/chrome/android/java/res/values-sw600dp/dimens.xml
@@ -14,8 +14,8 @@ found in the LICENSE file.
@@ -14,7 +14,8 @@ found in the LICENSE file.
<dimen name="compositor_tab_title_text_size">14sp</dimen>
<!-- Full Screen Dimensions -->
- <dimen name="control_container_height">96dp</dimen>
- <dimen name="custom_tabs_control_container_height">64dp</dimen>
+ <dimen name="control_container_height_cromite">96dp</dimen>
+ <dimen name="control_container_height_tabletui">96dp</dimen>
@@ -98,7 +97,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
@@ -66,6 +66,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController;
@@ -65,6 +65,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 +105,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;
@@ -155,6 +156,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
@@ -154,6 +155,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
@@ -142,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
@@ -65,6 +65,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
@@ -67,6 +67,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
}
}
@@ -171,7 +170,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
@@ -842,7 +842,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -841,7 +841,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 +185,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
@@ -141,6 +141,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService;
@@ -144,6 +144,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 +193,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;
@@ -5249,8 +5250,13 @@ public class StripLayoutHelper
@@ -5335,8 +5336,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,15 +212,15 @@ 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
@@ -107,6 +107,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils;
@@ -109,6 +109,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.gesture.BackPressHandler;
import org.chromium.components.browser_ui.widget.scrim.ScrimProperties;
import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.base.WindowAndroid;
@@ -505,7 +506,10 @@ public class StripLayoutHelperManager
@@ -548,7 +549,10 @@ public class StripLayoutHelperManager
mIsHeaderCustomizationSupported =
ToolbarFeatures.isAppHeaderCustomizationSupported(
/* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext));
@@ -273,7 +272,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
@@ -811,7 +811,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -872,7 +872,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@Override
public int getControlContainerHeightResource() {
@@ -287,7 +286,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/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -125,6 +125,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
@@ -131,6 +131,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
import org.chromium.chrome.browser.pdf.PdfPage;
@@ -296,7 +295,7 @@ 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;
@@ -1959,7 +1961,9 @@ public class RootUiCoordinator
@@ -2046,7 +2048,9 @@ public class RootUiCoordinator
protected int getFindToolbarStub() {
int stubId = R.id.find_toolbar_stub;
@@ -321,7 +320,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
@@ -393,6 +393,7 @@ public final class ChromePreferenceKeys {
@@ -402,6 +402,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";
@@ -372,15 +371,15 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
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;
@@ -20,6 +20,7 @@ import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher.ActivityState;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.display.DisplayUtil;
import org.chromium.ui.insets.InsetsRectProvider;
@@ -245,6 +246,7 @@ public class AppHeaderUtils {
@@ -169,6 +170,7 @@ public class AppHeaderUtils {
*/
static @DesktopWindowHeuristicResult int checkIsInDesktopWindow(
InsetsRectProvider insetsRectProvider, Context context) {
@@ -391,7 +390,7 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c
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
@@ -1022,7 +1022,7 @@ public class LocationBarCoordinator
@@ -1024,7 +1024,7 @@ public class LocationBarCoordinator
}
private boolean isTabletWindow() {
@@ -403,7 +402,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
@@ -1504,6 +1504,13 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1519,6 +1519,13 @@ Your Google account may have other forms of browsing history like searches and a
Privacy guide explanation closed
</message>
@@ -457,14 +456,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
--- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
@@ -15,7 +15,7 @@ found in the LICENSE file.
@@ -14,7 +14,7 @@ found in the LICENSE file.
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height_no_shadow"
- android:layout_marginTop="@dimen/tab_strip_height"
+ android:layout_marginTop="@dimen/tab_strip_height_tabletui"
android:background="@macro/default_bg_color"
>
>
diff --git a/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml b/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml
--- a/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml
@@ -598,7 +597,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -41,6 +41,11 @@ found in the LICENSE file.
@@ -46,6 +46,11 @@ found in the LICENSE file.
android:summary="@string/caret_browsing_summary"
android:title="@string/caret_browsing_title" />
@@ -613,7 +612,7 @@ 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
@@ -35,6 +35,7 @@ import org.chromium.content_public.browser.ContentFeatureMap;
@@ -39,6 +39,7 @@ import org.chromium.content_public.browser.ContentFeatureMap;
import org.chromium.ui.base.UiAndroidFeatureList;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
@@ -621,9 +620,9 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
/** Fragment to keep track of all the accessibility related preferences. */
@NullMarked
@@ -55,6 +56,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public static final String PREF_TOUCHPAD_OVERSCROLL_HISTORY_NAVIGATION =
"touchpad_overscroll_history_navigation";
@@ -80,6 +81,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
}
};
+ private BooleanPreferenceDelegate mForceTabletUIDelegate;
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
@@ -631,9 +630,9 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -131,6 +135,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.getReaderAccessibilityDelegate().getValue());
readerForAccessibilityPref.setOnPreferenceChangeListener(this);
@@ -167,6 +171,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
readerEnableLinks.setOnPreferenceChangeListener(this);
}
+ ChromeSwitchPreference forceTabletUiPref =
+ (ChromeSwitchPreference) findPreference(PREF_FORCE_TABLET_UI);
@@ -644,7 +643,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -217,6 +227,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -262,6 +272,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);
@@ -657,7 +656,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
@@ -41,6 +41,8 @@ public interface AccessibilitySettingsDelegate {
@@ -42,6 +42,8 @@ public interface AccessibilitySettingsDelegate {
*/
BrowserContextHandle getBrowserContextHandle();
@@ -10,18 +10,18 @@ Conditional immediate support is disabled.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../settings/PasswordSettings.java | 27 +++++++++++++++++
.../settings/PasswordSettings.java | 27 +++++++++++++++++++
.../touch_to_fill_controller.cc | 2 ++
...etting-to-enable-Credman-for-passkeys.grdp | 12 ++++++++
.../webauthn/AuthenticatorImpl.java | 29 +++++++------------
...etting-to-enable-Credman-for-passkeys.grdp | 12 +++++++++
.../webauthn/AuthenticatorImpl.java | 25 ++++++++---------
.../components/webauthn/WebauthnFeatures.java | 2 ++
.../cred_man/CredManSupportProvider.java | 25 ++++------------
.../cred_man/CredManSupportProvider.java | 25 +++++------------
.../webauthn/android/webauthn_feature_map.cc | 1 +
components/webauthn/features.cc | 4 +++
components/webauthn/features.h | 3 ++
components/webauthn/features.h | 3 +++
device/fido/public/features.cc | 2 ++
.../authentication_credentials_container.cc | 5 ++++
11 files changed, 75 insertions(+), 37 deletions(-)
11 files changed, 75 insertions(+), 33 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
@@ -140,7 +140,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
mRequestCallback.onComplete(
WebauthnRequestResponse.forFailedMakeCredential(
AuthenticatorStatus.NOT_IMPLEMENTED,
@@ -250,8 +251,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
@@ -246,8 +247,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
&& DeviceFeatureMap.isEnabled(
DeviceFeatureList
.WEBAUTHN_AUTHENTICATOR_PASSWORDS_ONLY_IMMEDIATE_REQUESTS);
@@ -150,7 +150,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
|| (options.publicKey == null && !isPasswordOnlyFlux)) {
RequestMetrics metrics =
new RequestMetrics.Builder()
@@ -291,12 +291,11 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
@@ -287,12 +287,11 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
}
private boolean couldSupportConditionalMediation() {
@@ -165,7 +165,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
}
@Override
@@ -370,26 +369,20 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
@@ -366,22 +365,20 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_CONDITIONAL_GET,
@@ -175,15 +175,11 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_UVPAA,
- couldSupportUvpaa() && isUvpaa));
- boolean conditionalCreateEnabled =
- couldSupportConditionalMediation()
- && DeviceFeatureMap.isEnabled(
- DeviceFeatureList.WEBAUTHN_PASSKEY_UPGRADE);
+ true));
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_CONDITIONAL_CREATE,
- isUvpaa && conditionalCreateEnabled));
- isUvpaa && couldSupportConditionalMediation()));
+ DeviceFeatureMap.isEnabled(
+ DeviceFeatureList.WEBAUTHN_PASSKEY_UPGRADE)));
capabilities.add(
@@ -322,15 +318,15 @@ diff --git a/components/webauthn/features.h b/components/webauthn/features.h
diff --git a/device/fido/public/features.cc b/device/fido/public/features.cc
--- a/device/fido/public/features.cc
+++ b/device/fido/public/features.cc
@@ -188,6 +188,7 @@ BASE_FEATURE(kWebAuthnImmediateGet,
#else
@@ -136,6 +136,7 @@ BASE_FEATURE(kWebAuthnAndroidSignal,
"WebAuthenticationAndroidSignal",
base::FEATURE_ENABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_ANDROID)
+SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGet);
BASE_FEATURE_PARAM(int,
kWebAuthnImmediateMediationTimeoutMilliseconds,
@@ -200,6 +201,7 @@ BASE_FEATURE_PARAM(int,
// Disabled by default.
BASE_FEATURE(kDigitalCredentialsHybridLinking,
@@ -184,6 +185,7 @@ BASE_FEATURE_PARAM(int,
BASE_FEATURE(kWebAuthnImmediateGetAutoselect,
"WebAuthenticationImmediateGetAutoselect",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -341,7 +337,7 @@ diff --git a/device/fido/public/features.cc b/device/fido/public/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
@@ -1135,6 +1135,11 @@ DOMException* AuthenticatorStatusToDOMException(
@@ -1129,6 +1129,11 @@ DOMException* AuthenticatorStatusToDOMException(
const WebAuthnDOMExceptionDetailsPtr& dom_exception_details) {
DCHECK_EQ(status != AuthenticatorStatus::ERROR_WITH_DOM_EXCEPTION_DETAILS,
dom_exception_details.is_null());
@@ -4,14 +4,22 @@ Subject: Disable some signed exchange features
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/chrome_content_browser_client.cc | 2 +-
chrome/browser/chrome_content_browser_client.cc | 3 ++-
content/browser/web_package/signed_exchange_utils.cc | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1460,7 +1460,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
@@ -1406,6 +1406,7 @@ ChromeContentBrowserClient::ChromeContentBrowserClient() {
extra_parts_.push_back(
std::make_unique<android::ChromeContentBrowserClientGuestViewPart>());
#endif
+
#if !BUILDFLAG(IS_ANDROID)
extra_parts_.push_back(
std::make_unique<ChromeContentBrowserClientIsolatedWebAppsPart>());
@@ -1460,7 +1461,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
site_isolation::prefs::kWebTriggeredIsolatedOrigins);
registry->RegisterDictionaryPref(
prefs::kDevToolsBackgroundServicesExpirationDict);
@@ -45,7 +45,7 @@ diff --git a/chrome/version.gni b/chrome/version.gni
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -241,6 +241,7 @@ BASE_FEATURE(kEnableADPFRendererMain, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -231,6 +231,7 @@ BASE_FEATURE(kEnableADPFRendererMain, base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, Chrome puts Renderer Main threads into a separate
// ADPF(Android Dynamic Performance Framework) hint session, and does not
// report any timing hints from this session.
@@ -53,18 +53,18 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features.
BASE_FEATURE(kEnableADPFSeparateRendererMainSession,
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -538,6 +539,7 @@ bool IsBrowserControlsInVizEnabled() {
@@ -538,6 +539,7 @@ bool ShouldRemoveRedirectionBitmap() {
#if BUILDFLAG(IS_ANDROID)
bool ShouldUseAdpfForSoc(std::string_view soc_allowlist,
std::string_view soc) {
+ // if ((true)) return true; temporarily disabled due #2713
+ if ((true)) return true;
std::vector<std::string_view> allowlist = base::SplitStringPiece(
soc_allowlist, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
return base::Contains(allowlist, soc);
return std::ranges::contains(allowlist, soc);
diff --git a/components/viz/service/performance_hint/hint_session.cc b/components/viz/service/performance_hint/hint_session.cc
--- a/components/viz/service/performance_hint/hint_session.cc
+++ b/components/viz/service/performance_hint/hint_session.cc
@@ -437,16 +437,13 @@ bool IsAdpfEnabled() {
@@ -525,16 +525,13 @@ bool IsAdpfEnabled() {
switches::kDisableAdpf)) {
return false;
}
@@ -85,7 +85,7 @@ diff --git a/components/viz/service/performance_hint/hint_session.cc b/component
diff --git a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
--- a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
+++ b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
@@ -221,6 +221,11 @@ class SynchronousCompositorProxyRegistry
@@ -222,6 +222,11 @@ class SynchronousCompositorProxyRegistry
renderer_threads.push_back(
viz::Thread{io_thread_id_, viz::Thread::Type::kIO});
}
@@ -11,17 +11,17 @@ active by default.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
components/performance_manager/features.cc | 6 ++++++
.../performance_manager/freezing/freezing_policy.cc | 4 ++--
.../performance_manager/freezing/freezing_policy.cc | 2 +-
components/performance_manager/public/features.h | 3 +++
components/performance_manager/user_tuning/prefs.cc | 6 +++---
.../Enable-freeze-high-cpu-background-usage.inc | 8 ++++++++
5 files changed, 22 insertions(+), 5 deletions(-)
5 files changed, 21 insertions(+), 4 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Enable-freeze-high-cpu-background-usage.inc
diff --git a/components/performance_manager/features.cc b/components/performance_manager/features.cc
--- a/components/performance_manager/features.cc
+++ b/components/performance_manager/features.cc
@@ -180,6 +180,7 @@ BASE_FEATURE(kBFCachePerformanceManagerPolicy,
@@ -174,6 +174,7 @@ BASE_FEATURE(kPMLoadingPageVoter, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kUrgentPageDiscarding, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kCPUMeasurementInFreezingPolicy, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -29,7 +29,7 @@ diff --git a/components/performance_manager/features.cc b/components/performance
BASE_FEATURE(kMemoryMeasurementInFreezingPolicy,
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -257,8 +258,13 @@ BASE_FEATURE_PARAM(int,
@@ -245,8 +246,13 @@ BASE_FEATURE_PARAM(int,
"percent_threshold",
15);
@@ -46,24 +46,19 @@ diff --git a/components/performance_manager/features.cc b/components/performance
diff --git a/components/performance_manager/freezing/freezing_policy.cc b/components/performance_manager/freezing/freezing_policy.cc
--- a/components/performance_manager/freezing/freezing_policy.cc
+++ b/components/performance_manager/freezing/freezing_policy.cc
@@ -446,11 +446,11 @@ void FreezingPolicy::UpdateFrozenState(
@@ -444,7 +444,7 @@ void FreezingPolicy::UpdateFrozenState(
if (browsing_instance_state
.highest_cpu_without_battery_saver_cannot_freeze >=
high_cpu_proportion &&
- is_battery_saver_active_ &&
+ (base::FeatureList::IsEnabled(features::kFreezingWithoutBatterySaver) || (is_battery_saver_active_ &&
// Note: Feature state is checked last so that only clients that
// have a browsing instance that is CPU intensive in background
// while Battery Saver is active are enrolled in the experiment.
- base::FeatureList::IsEnabled(features::kFreezingOnBatterySaver)) {
+ base::FeatureList::IsEnabled(features::kFreezingOnBatterySaver))) ) {
- is_battery_saver_active_) {
+ (base::FeatureList::IsEnabled(features::kFreezingWithoutBatterySaver) || is_battery_saver_active_)) {
eligible_for_freezing_on_battery_saver = true;
}
}
diff --git a/components/performance_manager/public/features.h b/components/performance_manager/public/features.h
--- a/components/performance_manager/public/features.h
+++ b/components/performance_manager/public/features.h
@@ -215,6 +215,9 @@ BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
@@ -197,6 +197,9 @@ BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
// enabled.
BASE_DECLARE_FEATURE_PARAM(int, kInfiniteTabsFreezingOnMemoryPressurePercent);
File diff suppressed because it is too large Load Diff
@@ -15,16 +15,16 @@ See also: https://github.com/bromite/bromite/issues/547
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../settings/PasswordSettings.java | 84 +++++++++++++++++-
.../settings/PasswordSettings.java | 84 +++++++++++++++-
.../chrome/browser/settings/MainSettings.java | 17 +---
.../chromium/chrome/browser/tab/TabImpl.java | 42 +++++++--
.../chromium/chrome/browser/tab/TabImpl.java | 41 ++++++--
chrome/browser/android/tab_android.cc | 4 +-
chrome/browser/autofill/android/BUILD.gn | 2 +-
.../autofill/AutofillClientProviderUtils.java | 2 +-
...AutofillThirdPartyModeContentProvider.java | 1 +
.../glic/actor_form_filling_service_impl.cc | 16 ++--
.../strings/android_chrome_strings.grd | 6 ++
.../ui/autofill/autofill_client_provider.cc | 87 +------------------
.../ui/autofill/autofill_client_provider.cc | 96 +------------------
.../ui/autofill/autofill_client_provider.h | 6 --
chrome/browser/ui/tab_helpers.cc | 4 +-
components/android_autofill/browser/BUILD.gn | 1 +
@@ -34,9 +34,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../components/autofill/AutofillProvider.java | 7 ++
.../BrowserSelectionActionMenuDelegate.java | 27 ++++++
.../browser/content_autofill_driver.cc | 11 +++
.../content/browser/content_autofill_driver.h | 10 +++
.../content/browser/content_autofill_driver.h | 10 ++
.../content_autofill_driver_factory.cc | 12 +++
.../content/renderer/autofill_agent.cc | 5 ++
.../content/renderer/autofill_agent.cc | 10 +-
.../renderer/password_autofill_agent.cc | 5 +-
.../browser/foundations/autofill_driver.h | 2 +
.../foundations/autofill_driver_factory.cc | 4 +
@@ -44,8 +44,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../foundations/browser_autofill_manager.cc | 2 +
.../foundations/browser_autofill_manager.h | 2 +
.../autofill/core/common/autofill_prefs.cc | 4 +-
.../autofill/core/common/autofill_prefs.h | 5 ++
30 files changed, 246 insertions(+), 133 deletions(-)
.../autofill/core/common/autofill_prefs.h | 5 +
30 files changed, 248 insertions(+), 144 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 +187,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
@@ -596,21 +596,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
@@ -626,21 +626,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
}
private void updateAutofillPreferences() {
@@ -214,9 +214,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
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
@@ -122,6 +122,13 @@ import java.nio.ByteBuffer;
@@ -122,6 +122,13 @@ import java.lang.ref.WeakReference;
import java.nio.ByteBuffer;
import java.util.Objects;
import java.util.function.Supplier;
+import org.chromium.components.autofill.AutofillSelectionMenuItemHelper;
+import org.chromium.components.autofill.BrowserSelectionActionMenuDelegate;
@@ -228,7 +228,7 @@ 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.
@@ -1331,6 +1338,11 @@ class TabImpl implements Tab {
@@ -1330,6 +1337,11 @@ class TabImpl implements Tab {
}
mObservers.clear();
@@ -240,16 +240,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
if (!abortNavigationsFromTabClosures) mUserDataHost.destroy();
mTabViewManager.destroy();
hideNativePage(false, null);
@@ -1717,7 +1729,7 @@ class TabImpl implements Tab {
@@ -1715,6 +1727,7 @@ class TabImpl implements Tab {
* @return iff the AutofillProvider should provide a ViewStructure when prompted.
*/
boolean providesAutofillStructure() {
-
+ if ((true)) return true;
if (mProfile == null || !mProfile.isNativeInitialized()) {
if (!mProfile.isNativeInitialized()) {
return false;
}
@@ -2483,16 +2495,21 @@ class TabImpl implements Tab {
@@ -2497,16 +2510,21 @@ class TabImpl implements Tab {
* @return true if the the provider is available for the given WebContents.
*/
private boolean prepareAutofillProvider(WebContents newWebContents) {
@@ -277,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(
@@ -2502,7 +2519,16 @@ class TabImpl implements Tab {
@@ -2516,7 +2534,16 @@ class TabImpl implements Tab {
getContext().getString(R.string.app_name));
TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid);
}
@@ -298,7 +297,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
--- a/chrome/browser/android/tab_android.cc
+++ b/chrome/browser/android/tab_android.cc
@@ -38,6 +38,7 @@
@@ -39,6 +39,7 @@
#include "chrome/browser/resource_coordinator/tab_load_tracker.h"
#include "chrome/browser/sync/glue/synced_tab_delegate_android.h"
#include "chrome/browser/tab_contents/tab_util.h"
@@ -306,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"
@@ -461,8 +462,7 @@ void TabAndroid::InitializeAutofillIfNecessary() {
@@ -418,8 +419,7 @@ void TabAndroid::InitializeAutofillIfNecessary() {
->MaybeInitKeyboardSuppressor();
return;
}
@@ -319,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
@@ -167,7 +167,7 @@ android_library("bottom_sheet_utils_java") {
@@ -181,7 +181,7 @@ android_library("bottom_sheet_utils_java") {
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/autofill/AddressNormalizerFactory.java",
@@ -331,7 +330,7 @@ diff --git a/chrome/browser/autofill/android/BUILD.gn b/chrome/browser/autofill/
diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java
--- a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java
+++ b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java
@@ -76,9 +76,9 @@ public class AutofillClientProviderUtils {
@@ -90,9 +90,9 @@ public class AutofillClientProviderUtils {
* @return {@link AndroidAutofillAvailabilityStatus.AVAILABLE} if Android Autofill can be used
* or a reason why it can't.
*/
@@ -356,7 +355,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/autofill/glic/actor_form_filling_service_impl.cc b/chrome/browser/autofill/glic/actor_form_filling_service_impl.cc
--- a/chrome/browser/autofill/glic/actor_form_filling_service_impl.cc
+++ b/chrome/browser/autofill/glic/actor_form_filling_service_impl.cc
@@ -379,14 +379,14 @@ GetAutofillManager(const tabs::TabInterface& tab) {
@@ -412,14 +412,14 @@ GetAutofillManager(const tabs::TabInterface& tab) {
if (!profile) {
return base::unexpected(kAutofillNotAvailable);
}
@@ -398,7 +397,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/browser/ui/autofill/autofill_client_provider.cc
--- a/chrome/browser/ui/autofill/autofill_client_provider.cc
+++ b/chrome/browser/ui/autofill/autofill_client_provider.cc
@@ -17,85 +17,14 @@
@@ -17,92 +17,14 @@
#include "chrome/browser/autofill/android/android_autofill_availability_status.h"
#include "components/android_autofill/browser/android_autofill_client.h"
#include "components/prefs/android/pref_service_android.h"
@@ -421,7 +420,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro
-void RecordWhetherAndroidPrefResets(PrefService& prefs,
- bool uses_platform_autofill) {
- const bool will_reset_pref =
- prefs.GetBoolean(prefs::kAutofillUsingVirtualViewStructure) &&
- prefs.GetBoolean(prefs::kAutofillUsingPlatformAutofill) &&
- !uses_platform_autofill;
- base::UmaHistogramBoolean("Autofill.ResetAutofillPrefToChrome",
- will_reset_pref);
@@ -478,15 +477,23 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro
-#if BUILDFLAG(IS_ANDROID)
- RecordWhetherAndroidPrefResets(*prefs, uses_platform_autofill_);
- // Ensure the pref is reset if platform autofill is restricted.
prefs->SetBoolean(prefs::kAutofillUsingVirtualViewStructure,
- prefs->SetBoolean(prefs::kAutofillUsingPlatformAutofill,
- uses_platform_autofill_);
- if (uses_platform_autofill_) {
- // Update the package of the actively used Autofill Service while platform
- // autofill is used. This allows restoring platform autofill later if it's
- // temporarily unavailable. Calling this for AwG would reset the pref.
- Java_AutofillClientProviderUtils_updatePackageUsedForAutofill(
- base::android::AttachCurrentThread(), prefs, uses_platform_autofill_);
- }
- SetSharedPrefForSettingsContentProvider(uses_platform_autofill_);
- SetSharedPrefForDeepLink();
+ prefs->SetBoolean(prefs::kAutofillUsingVirtualViewStructure,
+ true);
#endif // BUILDFLAG(IS_ANDROID)
}
@@ -103,19 +32,7 @@ AutofillClientProvider::~AutofillClientProvider() = default;
@@ -110,19 +32,7 @@ AutofillClientProvider::~AutofillClientProvider() = default;
void AutofillClientProvider::CreateClientForWebContents(
content::WebContents* web_contents) {
@@ -526,7 +533,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
@@ -369,9 +369,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
@@ -377,9 +377,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
web_contents);
ChainedBackNavigationTracker::CreateForWebContents(web_contents);
chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents);
@@ -764,12 +771,16 @@ 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
@@ -1483,14 +1483,19 @@ void AutofillAgent::ShowSuggestions(
@@ -1516,17 +1516,19 @@ void AutofillAgent::ShowSuggestions(
password_generation_agent_->ShowPasswordGenerationSuggestions(
input_element, form_cache)) {
is_popup_possibly_visible_ = true;
- if (!base::FeatureList::IsEnabled(
- features::kAutofillAndroidKeyboardAccessoryDynamicPositioning)) {
- return;
- }
+#if !BUILDFLAG(IS_ANDROID)
return;
+ return;
+#endif
}
+ [[maybe_unused]]
@@ -791,14 +802,14 @@ diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/c
void PasswordAutofillAgent::TrackAutofilledElement(
const WebFormControlElement& element) {
- autofill_agent_->TrackAutofilledElement(element);
- autofill_agent_->TrackAutofilledElement(
+ // fix for https://github.com/bromite/bromite/issues/1570
+ AutofillAgent* agent = autofill_agent_.get();
+ if (agent)
+ agent->TrackAutofilledElement(element);
+ agent->TrackAutofilledElement(
form_util::GetFieldRendererId(element));
}
void PasswordAutofillAgent::FillPasswordSuggestion(
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
@@ -828,7 +839,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
@@ -239,6 +239,8 @@ class AutofillManager
@@ -241,6 +241,8 @@ class AutofillManager
LifecycleState new_state,
base::PassKey<AutofillDriverFactory> pass_key);
@@ -840,7 +851,7 @@ 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
@@ -903,6 +903,8 @@ base::WeakPtr<AutofillManager> BrowserAutofillManager::GetWeakPtr() {
@@ -877,6 +877,8 @@ base::WeakPtr<AutofillManager> BrowserAutofillManager::GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
@@ -852,19 +863,19 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag
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
@@ -464,6 +464,8 @@ class BrowserAutofillManager : public AutofillManager {
@@ -440,6 +440,8 @@ class BrowserAutofillManager : public AutofillManager {
// latter check is needed because IPC messages can arrive out of order.
void UpdateInitialInteractionTimestamp(base::TimeTicks interaction_timestamp);
+ bool IsAndroidAutofill() const override;
+
// Whether the `trigger_field` should show an entry to scan a credit card.
bool ShouldShowScanCreditCard(const FormStructure& form,
const AutofillField& trigger_field);
// Checks whether JavaScript cleared an autofilled value within
// kLimitBeforeRefill after the filling and records metrics for this. This
// method should be called after we learned that JavaScript modified an
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
@@ -85,6 +85,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -89,6 +89,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(kAutofillCreditCardFidoAuthOfferCheckboxState,
true);
#endif
@@ -873,19 +884,19 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
registry->RegisterIntegerPref(kAutocompleteLastVersionRetentionPolicy, 0);
registry->RegisterStringPref(kAutofillUploadEncodingSeed, "");
registry->RegisterDictionaryPref(kAutofillVoteUploadEvents);
@@ -124,7 +126,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
#endif // BUILDFLAG(IS_ANDROID)
@@ -117,7 +119,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
#endif
#if BUILDFLAG(IS_ANDROID)
- registry->RegisterBooleanPref(kAutofillUsingVirtualViewStructure, false);
+ registry->RegisterBooleanPref(kAutofillUsingVirtualViewStructure, true);
- registry->RegisterBooleanPref(kAutofillUsingPlatformAutofill, false);
+ registry->RegisterBooleanPref(kAutofillUsingPlatformAutofill, true);
registry->RegisterBooleanPref(kAutofillThirdPartyPasswordManagersAllowed,
true);
registry->RegisterBooleanPref(
registry->RegisterStringPref(
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
@@ -162,6 +162,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] =
@@ -152,6 +152,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] =
// retention policy was run.
inline constexpr char kAutocompleteLastVersionRetentionPolicy[] =
"autocomplete.retention_policy_last_version";
File diff suppressed because it is too large Load Diff
@@ -4,14 +4,14 @@ Subject: Guard for user-agent reduction
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
components/embedder_support/user_agent_utils.cc | 5 +++++
.../platform/runtime_enabled_features.json5 | 14 +++++++-------
2 files changed, 12 insertions(+), 7 deletions(-)
components/embedder_support/user_agent_utils.cc | 5 +++++
.../renderer/platform/runtime_enabled_features.json5 | 8 ++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc
--- a/components/embedder_support/user_agent_utils.cc
+++ b/components/embedder_support/user_agent_utils.cc
@@ -855,6 +855,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) {
@@ -841,6 +841,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) {
}
std::string BuildModelInfo() {
@@ -19,7 +19,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
#if BUILDFLAG(IS_ANDROID)
// Model information is not exposed on Android desktop.
if (base::android::device_info::is_desktop()) {
@@ -897,6 +898,10 @@ std::string GetAndroidOSInfo(
@@ -883,6 +884,10 @@ std::string GetAndroidOSInfo(
IncludeAndroidModel include_android_model) {
std::string android_info_str;
@@ -33,17 +33,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
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
@@ -4240,22 +4240,22 @@
// If enabled, the deviceModel will be reduced to "K" and the
// androidVersion will be reduced to a static "10" string in android
// User-Agent string.
- name: "ReduceUserAgentAndroidVersionDeviceModel",
- depends_on: ["ReduceUserAgentMinorVersion"],
- status: {"Android": "stable"},
+ name: "ReduceUserAgentAndroidVersionDeviceModel", // keep
+ depends_on: ["ReduceUserAgentMinorVersion"], // enabled
+ status: {"Android": "stable"}, // in bromite
},
@@ -4381,15 +4381,15 @@
// If enabled, the platform version in User-Agent Data will be removed.
// This feature is limited to Linux only.
{
File diff suppressed because it is too large Load Diff
@@ -9,16 +9,16 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../permissions/permission_service_impl.cc | 1 -
.../renderer_host/render_frame_host_impl.cc | 3 +-
.../core/frame/cached_permission_status.cc | 6 ++--
.../core/frame/cached_permission_status.cc | 8 ++---
.../core/frame/cached_permission_status.h | 1 +
.../blink/renderer/core/frame/screen.cc | 35 +++++++++++++++++--
.../blink/renderer/core/frame/screen.h | 17 ++++++++-
6 files changed, 55 insertions(+), 8 deletions(-)
6 files changed, 56 insertions(+), 9 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
@@ -384,7 +384,6 @@ void PermissionServiceImpl::AddPermissionObserver(
@@ -438,7 +438,6 @@ void PermissionServiceImpl::AddPermissionObserver(
ReceivedBadMessage();
return;
}
@@ -29,7 +29,7 @@ diff --git a/content/browser/permissions/permission_service_impl.cc b/content/br
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
@@ -19326,7 +19326,8 @@ RenderFrameHostImpl::GetCachedPermissionStatuses() {
@@ -19453,7 +19453,8 @@ RenderFrameHostImpl::GetCachedPermissionStatuses() {
{PermissionName::WEB_APP_INSTALLATION,
PermissionType::WEB_APP_INSTALLATION},
#endif
@@ -42,16 +42,18 @@ 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
@@ -37,9 +37,9 @@ CachedPermissionStatus::CachedPermissionStatus(ExecutionContext* context)
@@ -37,10 +37,10 @@ CachedPermissionStatus::CachedPermissionStatus(ExecutionContext* context)
permission_service_(context),
permission_observer_receivers_(this, context) {
CHECK(context);
- CHECK(RuntimeEnabledFeatures::PermissionElementEnabled(context) ||
- RuntimeEnabledFeatures::GeolocationElementEnabled(context) ||
- RuntimeEnabledFeatures::UserMediaElementEnabled(context));
- RuntimeEnabledFeatures::UserMediaElementEnabled(context) ||
- RuntimeEnabledFeatures::InstallElementEnabled(context));
+ // CHECK(RuntimeEnabledFeatures::PermissionElementEnabled(context) ||
+ // RuntimeEnabledFeatures::GeolocationElementEnabled(context) ||
+ // RuntimeEnabledFeatures::UserMediaElementEnabled(context)); see https://source.chromium.org/chromium/chromium/src/+/81a9e9b66a03e12cb438eef0834f5e5f7a0506ee
+ // RuntimeEnabledFeatures::UserMediaElementEnabled(context) ||
+ RuntimeEnabledFeatures::InstallElementEnabled(context)); see https://source.chromium.org/chromium/chromium/src/+/81a9e9b66a03e12cb438eef0834f5e5f7a0506ee
}
void CachedPermissionStatus::Trace(Visitor* visitor) const {
+6 -6
View File
@@ -22,10 +22,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java
--- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java
+++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java
@@ -334,7 +334,9 @@ public class SearchEngineAdapter extends BaseAdapter
continue;
@@ -320,7 +320,9 @@ public class SearchEngineAdapter extends BaseAdapter
}
if (recentEngineNum < MAX_RECENT_ENGINE_NUM
if (shouldShowRecentSearchEngines
&& recentEngineNum < MAX_RECENT_ENGINE_NUM
- && templateUrl.getLastVisitedTime() > displayTime) {
+ // newly added search engines have never been visited
+ && (templateUrl.getLastVisitedTime() == 0 ||
@@ -176,7 +176,7 @@ diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/c
#include "base/metrics/histogram_macros.h"
#include "base/no_destructor.h"
#include "base/strings/string_number_conversions.h"
@@ -272,6 +273,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() {
@@ -274,6 +275,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() {
GURL osdd_url = frame->GetDocument().OpenSearchDescriptionURL();
if (!osdd_url.is_empty()) {
@@ -309,7 +309,7 @@ diff --git a/components/search_engines/template_url_parser.cc b/components/searc
diff --git a/components/search_engines/template_url_service.h b/components/search_engines/template_url_service.h
--- a/components/search_engines/template_url_service.h
+++ b/components/search_engines/template_url_service.h
@@ -383,7 +383,10 @@ class TemplateURLService final : public WebDataServiceConsumer,
@@ -385,7 +385,10 @@ class TemplateURLService final : public WebDataServiceConsumer,
void UpdateProviderFavicons(const GURL& potential_search_url,
const GURL& favicon_url);
@@ -321,7 +321,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc
// regardless of |url| if the default search provider is managed by policy or
// controlled by an extension.
bool CanMakeDefault(const TemplateURL* url) const;
@@ -781,9 +784,6 @@ class TemplateURLService final : public WebDataServiceConsumer,
@@ -783,9 +786,6 @@ class TemplateURLService final : public WebDataServiceConsumer,
// SetKeywordSearchTermsForURL is invoked.
void UpdateKeywordSearchTermsForURL(const URLVisitedDetails& details);
@@ -15,9 +15,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/browser/about_flags.cc | 6 +++---
.../browser/chrome_content_browser_client.cc | 11 +++++++++++
.../Set-the-screen-frame-rate-to-60-Hz.grdp | 9 +++++++++
components/viz/common/features.cc | 1 +
.../common/frame_sinks/begin_frame_source.cc | 14 +++++++++++++-
.../common/frame_sinks/begin_frame_source.h | 1 +
.../frame_sinks/delay_based_time_source.cc | 2 +-
components/viz/service/display/display.cc | 18 ++++++++++++++++--
.../external_begin_frame_source_android.cc | 13 +++++++++++++
.../external_begin_frame_source_android.h | 2 ++
@@ -25,7 +25,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../Set-the-screen-frame-rate-to-60-Hz.inc | 7 +++++++
.../core/animation/animation_clock.cc | 11 ++++++++---
.../core/view_transition/view_transition.cc | 2 ++
16 files changed, 120 insertions(+), 19 deletions(-)
16 files changed, 120 insertions(+), 20 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Set-the-screen-frame-rate-to-60-Hz.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Set-the-screen-frame-rate-to-60-Hz.inc
@@ -58,7 +58,7 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc
diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_state_machine.cc
--- a/cc/scheduler/scheduler_state_machine.cc
+++ b/cc/scheduler/scheduler_state_machine.cc
@@ -34,7 +34,7 @@ const int kMaxPendingSubmitFrames = 1;
@@ -35,7 +35,7 @@ const int kMaxPendingSubmitFrames = 1;
bool IsEligibleToThrottleMainFrameRate() {
#if BUILDFLAG(IS_ANDROID)
// Still requires balancing tradeoffs for desktop Android, not enabled yet.
@@ -67,7 +67,7 @@ diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_st
#else
return true;
#endif
@@ -1578,6 +1578,15 @@ void SchedulerStateMachine::FrameIntervalUpdated(
@@ -1586,6 +1586,15 @@ void SchedulerStateMachine::FrameIntervalUpdated(
//
// Apply some slack, so that if for some reason the interval is a bit larger
// than 8.33333333333333ms, then we catch it still.
@@ -83,7 +83,7 @@ diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_st
constexpr float kSlackFactor = .9;
bool fast_vsync_interval =
frame_interval < base::Hertz(120) * (1 / kSlackFactor);
@@ -1903,6 +1912,14 @@ base::TimeTicks SchedulerStateMachine::Now() const {
@@ -1917,6 +1926,14 @@ void SchedulerStateMachine::SetRequestHighFramerate(bool flag) {
}
base::TimeDelta SchedulerStateMachine::MainFrameThrottledInterval() const {
@@ -96,8 +96,8 @@ diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_st
+ }
+ if ((true)) return base::TimeDelta();
if (!throttle_frame_rate_) {
return main_frame_throttled_interval_;
} else {
if (high_framerate_requests_count_ &&
base::FeatureList::IsEnabled(
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
@@ -117,7 +117,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -11647,9 +11647,9 @@ const FeatureEntry kFeatureEntries[] = {
@@ -10985,9 +10985,9 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(::features::kBlockRootWindowAccessibleNameChangeEvent)},
#endif // BUILDFLAG(IS_MAC)
@@ -133,7 +133,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -51,6 +51,7 @@
@@ -53,6 +53,7 @@
#include "build/branding_buildflags.h"
#include "build/build_config.h"
#include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM
@@ -141,7 +141,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
#include "chrome/browser/after_startup_task_utils.h"
#include "chrome/browser/ai/ai_manager.h"
#include "chrome/browser/app_mode/app_mode_utils.h"
@@ -302,6 +303,7 @@
@@ -310,6 +311,7 @@
#include "components/variations/variations_associated_data.h"
#include "components/variations/variations_switches.h"
#include "components/version_info/version_info.h"
@@ -149,7 +149,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
#include "components/webapps/common/web_app_id.h"
#include "components/webui/chrome_urls/pref_names.h"
#include "content/public/browser/attribution_data_model.h"
@@ -2720,6 +2722,15 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
@@ -2749,6 +2751,15 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
command_line->AppendSwitchASCII(ash::switches::kHomedir, homedir.value());
#endif
@@ -179,17 +179,6 @@ new file mode 100644
+ Throttle compositor frame rate to 60fps, even when VSync rate is higher.
+ </message>
+</grit-part>
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc
--- a/components/viz/common/features.cc
+++ b/components/viz/common/features.cc
@@ -84,6 +84,7 @@ const char kMaxOverlaysParam[] = "max_overlays";
BASE_FEATURE(kDelegatedCompositing, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kAvoidDuplicateDelayBeginFrame, base::FEATURE_ENABLED_BY_DEFAULT);
+SET_CROMITE_FEATURE_ENABLED(kAvoidDuplicateDelayBeginFrame);
const char kDrawQuadSplit[] = "num_of_splits";
diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/components/viz/common/frame_sinks/begin_frame_source.cc
--- a/components/viz/common/frame_sinks/begin_frame_source.cc
+++ b/components/viz/common/frame_sinks/begin_frame_source.cc
@@ -201,7 +190,7 @@ diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/component
namespace viz {
@@ -260,7 +261,10 @@ BackToBackBeginFrameSource::BackToBackBeginFrameSource(
@@ -261,7 +262,10 @@ BackToBackBeginFrameSource::BackToBackBeginFrameSource(
time_source_->SetClient(this);
// The time_source_ ticks immediately, so we SetActive(true) for a single
// tick when we need it, and keep it as SetActive(false) otherwise.
@@ -213,7 +202,7 @@ diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/component
}
BackToBackBeginFrameSource::~BackToBackBeginFrameSource() = default;
@@ -318,6 +322,14 @@ void BackToBackBeginFrameSource::OnTimerTick() {
@@ -319,6 +323,14 @@ void BackToBackBeginFrameSource::OnTimerTick() {
}
base::TimeTicks frame_time = time_source_->LastTickTime();
base::TimeDelta interval = max_vrr_interval_.value_or(vsync_interval_);
@@ -227,11 +216,11 @@ diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/component
+ }
BeginFrameArgs args = BeginFrameArgs::Create(
BEGINFRAME_FROM_HERE, source_id(), next_sequence_number_, frame_time,
frame_time + interval, interval, BeginFrameArgs::NORMAL);
frame_time + interval, interval, BeginFrameArgs::NORMAL, vsync_interval_);
diff --git a/components/viz/common/frame_sinks/begin_frame_source.h b/components/viz/common/frame_sinks/begin_frame_source.h
--- a/components/viz/common/frame_sinks/begin_frame_source.h
+++ b/components/viz/common/frame_sinks/begin_frame_source.h
@@ -362,6 +362,7 @@ class VIZ_COMMON_EXPORT BackToBackBeginFrameSource
@@ -363,6 +363,7 @@ class VIZ_COMMON_EXPORT BackToBackBeginFrameSource
pending_begin_frame_observers_;
uint64_t next_sequence_number_;
base::TimeDelta vsync_interval_ = BeginFrameArgs::DefaultInterval();
@@ -239,6 +228,18 @@ diff --git a/components/viz/common/frame_sinks/begin_frame_source.h b/components
std::optional<base::TimeDelta> max_vrr_interval_ = std::nullopt;
base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_{this};
};
diff --git a/components/viz/common/frame_sinks/delay_based_time_source.cc b/components/viz/common/frame_sinks/delay_based_time_source.cc
--- a/components/viz/common/frame_sinks/delay_based_time_source.cc
+++ b/components/viz/common/frame_sinks/delay_based_time_source.cc
@@ -165,7 +165,7 @@ void DelayBasedTimeSource::PostNextTickTask(base::TimeTicks now) {
// double tick. See crbug.com/398090404 for details.
const auto kMaxJudderAllowed = base::Microseconds(500);
if (now + kMaxJudderAllowed >= next_tick_time_) {
- next_tick_time_ += interval_;
+ next_tick_time_ += interval_; // kAvoidDuplicateDelayBeginFrame
}
DCHECK_GT(next_tick_time_, now);
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc
--- a/components/viz/service/display/display.cc
+++ b/components/viz/service/display/display.cc
@@ -250,9 +251,9 @@ diff --git a/components/viz/service/display/display.cc b/components/viz/service/
#include "cc/base/math_util.h"
#include "cc/base/region.h"
#include "cc/base/simple_enclosed_region.h"
@@ -272,8 +273,21 @@ void Display::PresentationGroupTiming::OnSwap(gfx::SwapTimings timings,
auto frame_latency = timings.swap_start - frame_time_;
@@ -295,8 +296,21 @@ void Display::PresentationGroupTiming::OnSwap(gfx::SwapTimings timings,
"latency_ms", frame_latency.InMillisecondsF());
}
if (frame_latency < base::Seconds(0)) {
- LOG(ERROR) << "Frame latency is negative: "
- << frame_latency.InMillisecondsF() << " ms";
@@ -314,7 +315,7 @@ diff --git a/components/viz/service/frame_sinks/external_begin_frame_source_andr
diff --git a/components/viz/service/frame_sinks/external_begin_frame_source_android.h b/components/viz/service/frame_sinks/external_begin_frame_source_android.h
--- a/components/viz/service/frame_sinks/external_begin_frame_source_android.h
+++ b/components/viz/service/frame_sinks/external_begin_frame_source_android.h
@@ -54,6 +54,8 @@ class VIZ_SERVICE_EXPORT ExternalBeginFrameSourceAndroid
@@ -52,6 +52,8 @@ class VIZ_SERVICE_EXPORT ExternalBeginFrameSourceAndroid
std::unique_ptr<AChoreographerImpl> achoreographer_;
base::android::ScopedJavaGlobalRef<jobject> j_object_;
BeginFrameArgsGenerator begin_frame_args_generator_;
@@ -334,7 +335,7 @@ diff --git a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.
#include "components/viz/common/features.h"
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/service/display/display.h"
@@ -757,7 +758,10 @@ void RootCompositorFrameSinkImpl::FrameIntervalDeciderResultCallback(
@@ -772,7 +773,10 @@ void RootCompositorFrameSinkImpl::FrameIntervalDeciderResultCallback(
result);
interval = interval_and_compat.first;
gfx::SurfaceControlFrameRateCompatibility compat = interval_and_compat.second;
@@ -346,7 +347,7 @@ diff --git a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.
if (decided_display_interval_ == interval &&
decided_display_frame_rate_compat_ == compat) {
return;
@@ -779,7 +783,9 @@ void RootCompositorFrameSinkImpl::FrameIntervalDeciderResultCallback(
@@ -794,7 +798,9 @@ void RootCompositorFrameSinkImpl::FrameIntervalDeciderResultCallback(
return interval.interval;
}),
result);
+15 -80
View File
@@ -19,11 +19,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../policies/background_tab_loading_policy.cc | 2 ++
.../preferences/ChromePreferenceKeys.java | 2 ++
.../LegacyChromePreferenceKeys.java | 1 +
.../session_restore_policy.h | 2 +-
.../on_startup_page/on_startup_page.ts | 1 +
chrome/browser/sessions/session_restore.cc | 9 ++++-
chrome/browser/sessions/tab_loader.cc | 7 ++--
chrome/browser/sessions/tab_loader.h | 2 +-
.../res/layout/single_tab_module_layout.xml | 17 +++++-----
.../SingleTabSwitcherCoordinator.java | 2 +-
.../SingleTabSwitcherOnNtpMediator.java | 5 +--
@@ -33,7 +30,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../about_flags_cc/show-ntp-at-startup.inc | 12 +++++++
.../show-ntp-at-startup.inc | 5 +++
.../show-ntp-at-startup.inc | 1 +
25 files changed, 141 insertions(+), 21 deletions(-)
22 files changed, 135 insertions(+), 16 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sShowNtpAtStartupAndroid.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/show-ntp-at-startup.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc
@@ -103,7 +100,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivit
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -3107,6 +3107,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -3208,6 +3208,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
mInactivityTrackerSupplier.set(
new ChromeInactivityTracker(
ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF));
@@ -115,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
@@ -20,9 +20,11 @@ import org.chromium.base.metrics.RecordHistogram;
@@ -22,9 +22,11 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.R;
@@ -127,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToC
import org.chromium.chrome.browser.magic_stack.HomeModulesMetricsUtils;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.profiles.Profile;
@@ -129,6 +131,18 @@ public final class ReturnToChromeUtil {
@@ -134,6 +136,18 @@ public final class ReturnToChromeUtil {
return false;
}
@@ -146,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToC
// Checks whether to show the NTP homepage due to feature flag
// HOME_SURFACE_RETURN_TIME_SECONDS.
long lastVisibleTimeMs = inactivityTracker.getLastVisibleTimeMs();
@@ -247,7 +261,7 @@ public final class ReturnToChromeUtil {
@@ -252,7 +266,7 @@ public final class ReturnToChromeUtil {
TabModel currentTabModel,
TabCreator tabCreator,
HomeSurfaceTracker homeSurfaceTracker) {
@@ -158,7 +155,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToC
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
@@ -1031,7 +1031,7 @@
@@ -997,7 +997,7 @@
Open a specific page or set of pages
</message>
<message name="IDS_SETTINGS_ON_STARTUP_CONTINUE_AND_OPEN_SPECIFIC" desc="Radio button option to continue where you left off and open a specific set of pages.">
@@ -170,7 +167,7 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -421,6 +421,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -426,6 +426,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kSearchInCCTIfEnabledByEmbedder,
&kSearchResumptionModuleAndroid,
&kSettingsMultiColumn,
@@ -219,7 +216,7 @@ new file mode 100644
diff --git a/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc b/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc
--- a/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc
+++ b/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc
@@ -395,6 +395,7 @@ base::Value::Dict BackgroundTabLoadingPolicy::DescribeSystemNodeData(
@@ -382,6 +382,7 @@ base::DictValue BackgroundTabLoadingPolicy::DescribeSystemNodeData(
bool BackgroundTabLoadingPolicy::ShouldLoad(
const PageNodeToLoadData& page_node_data) {
@@ -227,7 +224,7 @@ diff --git a/chrome/browser/performance_manager/policies/background_tab_loading_
if (tab_loads_started_ < min_tabs_to_load_) {
return true;
}
@@ -596,6 +597,7 @@ void BackgroundTabLoadingPolicy::MaybeLoadSomeTabs() {
@@ -583,6 +584,7 @@ void BackgroundTabLoadingPolicy::MaybeLoadSomeTabs() {
// Continue to load tabs while possible. This is in a loop with a
// recalculation of GetMaxNewTabLoads() as reentrancy can cause conditions
// to change as each tab load is initiated.
@@ -238,7 +235,7 @@ diff --git a/chrome/browser/performance_manager/policies/background_tab_loading_
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
@@ -1000,6 +1000,8 @@ public final class ChromePreferenceKeys {
@@ -1024,6 +1024,8 @@ public final class ChromePreferenceKeys {
public static final String TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF =
"ChromeTabbedActivity.BackgroundTimeMs";
@@ -258,22 +255,10 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
ChromePreferenceKeys.TABMODEL_ACTIVE_TAB_ID,
ChromePreferenceKeys.TABMODEL_HAS_COMPUTED_MAX_ID,
ChromePreferenceKeys.TABMODEL_HAS_RUN_FILE_MIGRATION,
diff --git a/chrome/browser/resource_coordinator/session_restore_policy.h b/chrome/browser/resource_coordinator/session_restore_policy.h
--- a/chrome/browser/resource_coordinator/session_restore_policy.h
+++ b/chrome/browser/resource_coordinator/session_restore_policy.h
@@ -29,7 +29,7 @@ class SessionRestorePolicy {
public:
// Minimum site engagement score for a tab to be restored, if it doesn't
// communicate in the background.
- static constexpr uint32_t kMinSiteEngagementToRestore = 15;
+ static constexpr uint32_t kMinSiteEngagementToRestore = 999999;
// Callback that is used by the policy engine to notify its embedder (the
// TabLoaderDelegate) of changes to tab priorities as they occur. Zero or one
diff --git a/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts b/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts
--- a/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts
+++ b/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts
@@ -97,6 +97,7 @@ export class SettingsOnStartupPageElement extends
@@ -115,6 +115,7 @@ export class SettingsOnStartupPageElement extends
*/
private showContinueAndOpenSpecific_(pref: chrome.settingsPrivate.PrefObject):
boolean {
@@ -284,7 +269,7 @@ diff --git a/chrome/browser/resources/settings/on_startup_page/on_startup_page.t
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
--- a/chrome/browser/sessions/session_restore.cc
+++ b/chrome/browser/sessions/session_restore.cc
@@ -928,7 +928,13 @@ class SessionRestoreImpl : public BrowserListObserver {
@@ -937,7 +937,13 @@ class SessionRestoreImpl : public BrowserCollectionObserver {
// be selected as ShowBrowser() will load the selected tab.
bool is_selected_tab =
(initial_tab_count == 0) && (i == selected_tab_index);
@@ -299,7 +284,7 @@ diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/session
// Convert the last active time because WebContents needs a TimeTicks.
const base::TimeDelta delta = tab.last_active_time - epoch_time;
const base::TimeTicks last_active_time_ticks = epoch_time_ticks + delta;
@@ -1248,6 +1254,7 @@ class SessionRestoreImpl : public BrowserListObserver {
@@ -1257,6 +1263,7 @@ class SessionRestoreImpl : public BrowserCollectionObserver {
}
if (last_normal_browser && !normal_startup_tabs.empty()) {
AppendURLsToBrowser(last_normal_browser, normal_startup_tabs);
@@ -307,56 +292,6 @@ diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/session
}
if (!startup_tabs_from_last_and_urls_pref.empty()) {
Browser::CreateParams params =
diff --git a/chrome/browser/sessions/tab_loader.cc b/chrome/browser/sessions/tab_loader.cc
--- a/chrome/browser/sessions/tab_loader.cc
+++ b/chrome/browser/sessions/tab_loader.cc
@@ -51,7 +51,7 @@ struct ScoredTabComparator {
};
// Testing seams.
-size_t g_max_loaded_tab_count_for_testing = 0;
+int g_max_loaded_tab_count_for_testing = 0;
base::RepeatingCallback<void(TabLoader*)>* g_construction_callback = nullptr;
// Determines if the given browser (can be null) is closing.
@@ -374,7 +374,7 @@ void TabLoader::OnMemoryPressure(
bool TabLoader::ShouldStopLoadingTabs() const {
DCHECK(reentry_depth_ > 0); // This can only be called internally.
- if (g_max_loaded_tab_count_for_testing != 0 &&
+ if (g_max_loaded_tab_count_for_testing != -1 &&
scheduled_to_load_count_ >= g_max_loaded_tab_count_for_testing) {
return true;
}
@@ -412,7 +412,7 @@ size_t TabLoader::GetMaxNewTabLoads() const {
tabs_to_load = std::min(tabs_to_load, tabs_to_load_.size());
// Finally, enforce testing tab load limits.
- if (g_max_loaded_tab_count_for_testing != 0) {
+ if (g_max_loaded_tab_count_for_testing != -1) {
size_t tabs_remaining_for_testing =
g_max_loaded_tab_count_for_testing - scheduled_to_load_count_;
tabs_to_load = std::min(tabs_to_load, tabs_remaining_for_testing);
@@ -770,6 +770,7 @@ void TabLoader::MoveToSortedPosition(TabVector::iterator it) {
}
size_t TabLoader::MaxSimultaneousLoads() const {
+ if ((true)) return 0;
if (max_simultaneous_loads_for_testing_ != 0)
return max_simultaneous_loads_for_testing_;
return delegate_->GetMaxSimultaneousTabLoads();
diff --git a/chrome/browser/sessions/tab_loader.h b/chrome/browser/sessions/tab_loader.h
--- a/chrome/browser/sessions/tab_loader.h
+++ b/chrome/browser/sessions/tab_loader.h
@@ -281,7 +281,7 @@ class TabLoader : public base::RefCounted<TabLoader>,
// This is monotonically increasing, and can never exceed the combined number
// of tabs passed into this TabLoader via StartLoading(). This is only used in
// order to support a combined maximum total number of tab loads for testing.
- size_t scheduled_to_load_count_ = 0;
+ int scheduled_to_load_count_ = 0;
// Timer used to force progress despite tabs that take too long to load.
base::OneShotTimer force_load_timer_;
diff --git a/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml b/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml
--- a/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml
+++ b/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml
@@ -477,7 +412,7 @@ new file mode 100644
diff --git a/chrome/browser/ui/browser_tabrestore.cc b/chrome/browser/ui/browser_tabrestore.cc
--- a/chrome/browser/ui/browser_tabrestore.cc
+++ b/chrome/browser/ui/browser_tabrestore.cc
@@ -239,7 +239,7 @@ WebContents* AddRestoredTabImpl(std::unique_ptr<WebContents> web_contents,
@@ -248,7 +248,7 @@ WebContents* AddRestoredTabImpl(std::unique_ptr<WebContents> web_contents,
// Immediate load if the browser activeness is true or unknown. That is, do
// not do immediate load for browsers that are known to be inactive.
@@ -489,7 +424,7 @@ diff --git a/chrome/browser/ui/browser_tabrestore.cc b/chrome/browser/ui/browser
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -567,6 +567,14 @@ StartupBrowserCreatorImpl::DetermineStartupTabs(
@@ -629,6 +629,14 @@ StartupBrowserCreatorImpl::DetermineStartupTabs(
AppendTabs(provider.GetNewTabPageTabs(*command_line_, profile_), &tabs);
}
+30 -41
View File
@@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
...ccount_consistency_mode_manager_factory.cc | 2 +-
.../throttled_gaia_auth_fetcher.cc | 5 +
chrome/browser/signin/chrome_signin_client.cc | 7 +-
.../browser/signin/dice_response_handler.cc | 4 +-
.../browser/signin/dice_response_handler.cc | 2 +-
.../ui/webui/policy/policy_ui_handler.cc | 104 ++++++++++++-
.../ui/webui/policy/policy_ui_handler.h | 2 +
.../strings/android/browser_ui_strings.grd | 2 +-
@@ -38,7 +38,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
extensions/common/extension_features.cc | 1 +
google_apis/gaia/gaia_auth_fetcher.cc | 1 +
net/socket/ssl_client_socket_impl.cc | 3 +
34 files changed, 327 insertions(+), 162 deletions(-)
34 files changed, 325 insertions(+), 162 deletions(-)
diff --git a/base/win/win_util.cc b/base/win/win_util.cc
--- a/base/win/win_util.cc
@@ -154,8 +154,8 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
- <uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
{% block extra_uses_permissions %}
{% endblock %}
<!-- Permission for using pinned windowing layer for document picture-in-picture. -->
<uses-permission android:name="android.permission.USE_PINNED_WINDOWING_LAYER" />
diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
--- a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
+++ b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
@@ -183,7 +183,7 @@ diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/brow
#if BUILDFLAG(IS_WIN)
#include "chrome/installer/util/google_update_settings.h"
@@ -202,6 +204,16 @@ void ChromeFeatureListCreator::CreatePrefService() {
@@ -198,6 +200,16 @@ void ChromeFeatureListCreator::CreatePrefService() {
// ManagementService's cache.
if (local_state_pref_store->ReadPrefs() ==
JsonPrefStore::PREF_READ_ERROR_NONE) {
@@ -203,7 +203,7 @@ diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/brow
diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector.cc b/chrome/browser/navigation_predictor/search_engine_preconnector.cc
--- a/chrome/browser/navigation_predictor/search_engine_preconnector.cc
+++ b/chrome/browser/navigation_predictor/search_engine_preconnector.cc
@@ -64,6 +64,9 @@ namespace features {
@@ -79,6 +79,9 @@ namespace features {
BASE_FEATURE(kPreconnectFromKeyedService, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kPreconnectToSearch, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -216,7 +216,7 @@ diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector.cc b
diff --git a/chrome/browser/policy/chrome_browser_policy_connector.cc b/chrome/browser/policy/chrome_browser_policy_connector.cc
--- a/chrome/browser/policy/chrome_browser_policy_connector.cc
+++ b/chrome/browser/policy/chrome_browser_policy_connector.cc
@@ -133,9 +133,6 @@ bool ChromeBrowserPolicyConnector::HasMachineLevelPolicies() {
@@ -134,9 +134,6 @@ bool ChromeBrowserPolicyConnector::HasMachineLevelPolicies() {
return true;
}
#endif // !BUILDFLAG(IS_CHROMEOS)
@@ -229,7 +229,7 @@ diff --git a/chrome/browser/policy/chrome_browser_policy_connector.cc b/chrome/b
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -2523,9 +2523,9 @@ bool AreFuturePoliciesEnabledByDefault() {
@@ -2530,9 +2530,9 @@ bool AreFuturePoliciesEnabledByDefault() {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) {
return true;
}
@@ -242,7 +242,7 @@ diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
}
} // namespace
@@ -3369,7 +3369,10 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
@@ -3378,7 +3378,10 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
key::kExtensionInstallCloudPolicyChecksEnabled,
extensions::pref_names::kExtensionInstallCloudPolicyChecksEnabled,
base::Value::Type::BOOLEAN));
@@ -339,7 +339,7 @@ diff --git a/chrome/browser/signin/bound_session_credentials/throttled_gaia_auth
diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/signin/chrome_signin_client.cc
--- a/chrome/browser/signin/chrome_signin_client.cc
+++ b/chrome/browser/signin/chrome_signin_client.cc
@@ -292,7 +292,9 @@ void ChromeSigninClient::DoFinalInit() {
@@ -293,7 +293,9 @@ void ChromeSigninClient::DoFinalInit() {
bool ChromeSigninClient::ProfileAllowsSigninCookies(Profile* profile) {
scoped_refptr<content_settings::CookieSettings> cookie_settings =
CookieSettingsFactory::GetForProfile(profile);
@@ -350,7 +350,7 @@ diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/sign
}
PrefService* ChromeSigninClient::GetPrefs() {
@@ -410,6 +412,9 @@ bool ChromeSigninClient::AreNetworkCallsDelayed() {
@@ -411,6 +413,9 @@ bool ChromeSigninClient::AreNetworkCallsDelayed() {
}
void ChromeSigninClient::DelayNetworkCall(base::OnceClosure callback) {
@@ -372,17 +372,6 @@ diff --git a/chrome/browser/signin/dice_response_handler.cc b/chrome/browser/sig
"Signin.DiceTokenBindingOutcome";
// Used for UMA. Do not reorder, append new values at the end.
@@ -386,8 +386,10 @@ void DiceResponseHandler::ProcessDiceSignoutHeader(
// - If there is a policy restriction on removing the primary account.
bool invalidate_only_primary_account =
identity_manager_->HasPrimaryAccount(signin::ConsentLevel::kSync) ||
+#if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
!signin::IsImplicitBrowserSigninOrExplicitDisabled(
identity_manager_, signin_client_->GetPrefs()) ||
+#endif
!signin_client_->IsClearPrimaryAccountAllowed();
CoreAccountId primary_account =
diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browser/ui/webui/policy/policy_ui_handler.cc
--- a/chrome/browser/ui/webui/policy/policy_ui_handler.cc
+++ b/chrome/browser/ui/webui/policy/policy_ui_handler.cc
@@ -413,7 +402,7 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browse
web_ui()->RegisterMessageCallback(
"listenPoliciesUpdates",
base::BindRepeating(&PolicyUIHandler::HandleListenPoliciesUpdates,
@@ -503,8 +509,102 @@ void PolicyUIHandler::SendPolicies() {
@@ -501,8 +507,102 @@ void PolicyUIHandler::SendPolicies() {
"policies-updated",
base::Value(
policy_value_and_status_aggregator_->GetAggregatedPolicyNames()),
@@ -524,16 +513,16 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.h b/chrome/browser
@@ -81,6 +81,8 @@ class PolicyUIHandler : public content::WebUIMessageHandler,
private:
void HandleExportPoliciesJson(const base::Value::List& args);
void HandleExportPoliciesJson(const base::ListValue& args);
+ void HandleSetEnabledPolicy(const base::Value::List& args);
+ base::Value::Dict GetPolicyValues();
void HandleListenPoliciesUpdates(const base::Value::List& args);
void HandleReloadPolicies(const base::Value::List& args);
void HandleCopyPoliciesJson(const base::Value::List& args);
void HandleListenPoliciesUpdates(const base::ListValue& args);
void HandleReloadPolicies(const base::ListValue& args);
void HandleCopyPoliciesJson(const base::ListValue& args);
diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd
--- a/components/browser_ui/strings/android/browser_ui_strings.grd
+++ b/components/browser_ui/strings/android/browser_ui_strings.grd
@@ -386,7 +386,7 @@
@@ -395,7 +395,7 @@
<!-- Settings UI -->
<message name="IDS_MANAGED_BY_YOUR_ORGANIZATION" desc="Popup message when the user clicks a UI element that has been disabled by enterprise policy.">
@@ -545,7 +534,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp
diff --git a/components/commerce/core/commerce_feature_list.cc b/components/commerce/core/commerce_feature_list.cc
--- a/components/commerce/core/commerce_feature_list.cc
+++ b/components/commerce/core/commerce_feature_list.cc
@@ -69,56 +69,6 @@ const CountryLocaleMap& GetAllowedCountryToLocaleMap() {
@@ -68,56 +68,6 @@ const CountryLocaleMap& GetAllowedCountryToLocaleMap() {
return *allowed_map;
}
@@ -602,7 +591,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm
} // namespace
BASE_FEATURE(kCommerceAllowLocalImages, base::FEATURE_DISABLED_BY_DEFAULT);
@@ -280,16 +230,15 @@ const base::FeatureParam<bool> kRevertIconOnFailure{
@@ -279,16 +229,15 @@ const base::FeatureParam<bool> kRevertIconOnFailure{
&kShoppingList, kRevertIconOnFailureParam, false};
bool IsPartnerMerchant(const GURL& url) {
@@ -622,7 +611,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm
}
bool IsCartDiscountFeatureEnabled() {
@@ -341,6 +290,7 @@ bool IsEnabledForCountryAndLocale(const base::Feature& feature,
@@ -340,6 +289,7 @@ bool IsEnabledForCountryAndLocale(const base::Feature& feature,
bool IsRegionLockedFeatureEnabled(const base::Feature& feature,
const std::string& country_code,
const std::string& locale) {
@@ -630,7 +619,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm
auto* feature_list = base::FeatureList::GetInstance();
// If the feature has a server-side config, this check will ensure that
@@ -373,6 +323,7 @@ base::TimeDelta GetDiscountFetchDelay() {
@@ -372,6 +322,7 @@ base::TimeDelta GetDiscountFetchDelay() {
}
bool IsNoDiscountMerchant(const GURL& url) {
@@ -638,7 +627,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm
auto* pattern_from_component =
commerce_heuristics::CommerceHeuristicsData::GetInstance()
.GetNoDiscountMerchantPattern();
@@ -384,4 +335,6 @@ bool IsNoDiscountMerchant(const GURL& url) {
@@ -383,4 +334,6 @@ bool IsNoDiscountMerchant(const GURL& url) {
return RE2::PartialMatch(url.host(), *pattern_from_component);
}
#endif
@@ -845,7 +834,7 @@ diff --git a/components/policy/core/common/policy_pref_names.h b/components/poli
diff --git a/components/policy/core/common/policy_service_impl.cc b/components/policy/core/common/policy_service_impl.cc
--- a/components/policy/core/common/policy_service_impl.cc
+++ b/components/policy/core/common/policy_service_impl.cc
@@ -51,6 +51,9 @@ namespace {
@@ -50,6 +50,9 @@ namespace {
// Metrics should not be enforced so if this policy is set as mandatory
// downgrade it to a recommended level policy.
void DowngradeMetricsReportingToRecommendedPolicy(PolicyMap* policies) {
@@ -983,7 +972,7 @@ diff --git a/components/policy_strings.grdp b/components/policy_strings.grdp
diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc
--- a/components/search/ntp_features.cc
+++ b/components/search/ntp_features.cc
@@ -80,6 +80,7 @@ BASE_FEATURE(kNtpCalendarModule, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -72,6 +72,7 @@ BASE_FEATURE(kNtpCalendarModule, base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, chrome cart module will be shown.
BASE_FEATURE(kNtpChromeCartModule, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -1006,7 +995,7 @@ diff --git a/components/signin/features.gni b/components/signin/features.gni
diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
--- a/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
+++ b/components/signin/internal/identity_manager/gaia_cookie_manager_service.cc
@@ -463,6 +463,8 @@ void GaiaCookieManagerService::RegisterPrefs(PrefRegistrySimple* registry) {
@@ -462,6 +462,8 @@ void GaiaCookieManagerService::RegisterPrefs(PrefRegistrySimple* registry) {
}
void GaiaCookieManagerService::InitCookieListener() {
@@ -1015,7 +1004,7 @@ diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_ser
DCHECK(!cookie_listener_receiver_.is_bound());
network::mojom::CookieManager* cookie_manager =
@@ -857,6 +859,8 @@ void GaiaCookieManagerService::OnSetAccountsFinished(
@@ -856,6 +858,8 @@ void GaiaCookieManagerService::OnSetAccountsFinished(
}
void GaiaCookieManagerService::HandleNextRequest() {
@@ -1027,7 +1016,7 @@ diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_ser
diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc
--- a/extensions/common/extension_features.cc
+++ b/extensions/common/extension_features.cc
@@ -47,6 +47,7 @@ BASE_FEATURE(kWebRequestSecurityInfo, base::FEATURE_DISABLED_BY_DEFAULT);
@@ -49,6 +49,7 @@ BASE_FEATURE(kWebRequestSecurityInfo, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kAllowWithholdingExtensionPermissionsOnInstall,
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1038,7 +1027,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
--- a/google_apis/gaia/gaia_auth_fetcher.cc
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
@@ -469,6 +469,7 @@ void GaiaAuthFetcher::StartListAccounts() {
@@ -472,6 +472,7 @@ void GaiaAuthFetcher::StartListAccounts() {
})");
net::HttpRequestHeaders headers;
headers.SetHeader("Origin", "https://www.google.com");
@@ -1049,7 +1038,7 @@ diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc
--- a/net/socket/ssl_client_socket_impl.cc
+++ b/net/socket/ssl_client_socket_impl.cc
@@ -796,6 +796,7 @@ int SSLClientSocketImpl::Init() {
@@ -795,6 +795,7 @@ int SSLClientSocketImpl::Init() {
return ERR_UNEXPECTED;
}
@@ -1057,7 +1046,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
// Disable SHA-1 server signatures.
// TODO(crbug.com/boringssl/699): Once the default is flipped in BoringSSL, we
// no longer need to override it.
@@ -1218,6 +1219,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() {
@@ -1234,6 +1235,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() {
cert_verifier_request_.reset();
File diff suppressed because it is too large Load Diff