diff --git a/android/BUILD.gn b/android/BUILD.gn index e0906635b0c..3cdb74bd083 100644 --- a/android/BUILD.gn +++ b/android/BUILD.gn @@ -75,6 +75,7 @@ android_library("qrreader_java") { "//third_party/android_deps:google_play_services_base_java", "//third_party/android_deps:google_play_services_vision_common_java", "//third_party/android_deps:google_play_services_vision_java", + "//third_party/androidx:androidx_activity_activity_java", "//third_party/androidx:androidx_annotation_annotation_java", ] } diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index 7e2b152b1ae..3b948fe34e1 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -64,6 +64,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/app/shimmer/Shimmer.java", "../../brave/android/java/org/chromium/chrome/browser/app/shimmer/ShimmerDrawable.java", "../../brave/android/java/org/chromium/chrome/browser/app/shimmer/ShimmerFrameLayout.java", + "../../brave/android/java/org/chromium/chrome/browser/autofill/settings/BraveAutofillPaymentMethodsFragmentBase.java", "../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkBridge.java", "../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkImportExportDialogFragment.java", "../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator.java", @@ -243,6 +244,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/misc_metrics/MiscAndroidMetricsConnectionErrorHandler.java", "../../brave/android/java/org/chromium/chrome/browser/misc_metrics/MiscAndroidMetricsFactory.java", "../../brave/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java", + "../../brave/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceOrchestratorImpl.java", "../../brave/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowDialogFragment.java", "../../brave/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java", "../../brave/android/java/org/chromium/chrome/browser/night_mode/settings/BraveRadioButtonGroupThemePreference.java", @@ -259,6 +261,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveFreshNtpHelper.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveIncognitoNewTabPage.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java", + "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageCoordinator.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNewTabTakeoverInfobar.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNtpAdapter.java", @@ -388,7 +391,6 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/shields/CreateCustomFiltersFragment.java", "../../brave/android/java/org/chromium/chrome/browser/shields/FilterListServiceFactory.java", "../../brave/android/java/org/chromium/chrome/browser/shields/UrlSanitizerServiceFactory.java", - "../../brave/android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java", "../../brave/android/java/org/chromium/chrome/browser/site_settings/BraveSiteSettingsDelegate.java", "../../brave/android/java/org/chromium/chrome/browser/site_settings/BraveWalletEthereumConnectedSites.java", "../../brave/android/java/org/chromium/chrome/browser/site_settings/BraveWalletEthereumConnectedSitesListAdapter.java", diff --git a/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/BraveIncognitoTabSwitcherPane.java b/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/BraveIncognitoTabSwitcherPane.java index c8bd76dcf4f..820711329df 100644 --- a/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/BraveIncognitoTabSwitcherPane.java +++ b/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/BraveIncognitoTabSwitcherPane.java @@ -15,9 +15,9 @@ import org.chromium.base.supplier.OneshotSupplier; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.compositor.CompositorViewHolder; -import org.chromium.chrome.browser.hub.ResourceButtonData; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthController; import org.chromium.chrome.browser.tabmodel.TabGroupModelFilter; +import org.chromium.chrome.browser.ui.actions.button.ResourceButtonData; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.user_education.UserEducationHelper; import org.chromium.chrome.tab_ui.R; diff --git a/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceMediator.java b/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceMediator.java index 17ebb5d6515..3a738a1f4fd 100644 --- a/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceMediator.java +++ b/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceMediator.java @@ -10,11 +10,7 @@ import android.widget.FrameLayout; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -import org.chromium.chrome.browser.feed.componentinterfaces.SurfaceCoordinator; -import org.chromium.chrome.browser.feed.sort_ui.FeedOptionsCoordinator; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; -import org.chromium.ui.modelutil.PropertyModel; @NullMarked public class BraveFeedSurfaceMediator extends FeedSurfaceMediator { @@ -29,22 +25,9 @@ public class BraveFeedSurfaceMediator extends FeedSurfaceMediator { FeedSurfaceCoordinator coordinator, Context context, @Nullable SnapScrollHelper snapScrollHelper, - @Nullable PropertyModel headerModel, - @SurfaceCoordinator.StreamTabId int openingTabId, FeedActionDelegate actionDelegate, - FeedOptionsCoordinator optionsCoordinator, - @Nullable UiConfig uiConfig, Profile profile) { - super( - coordinator, - context, - snapScrollHelper, - headerModel, - openingTabId, - actionDelegate, - optionsCoordinator, - uiConfig, - profile); + super(coordinator, context, snapScrollHelper, actionDelegate, profile); mProfile = profile; } diff --git a/android/java/apk_for_test.flags b/android/java/apk_for_test.flags index 6558c0a4d7f..f149c928e95 100644 --- a/android/java/apk_for_test.flags +++ b/android/java/apk_for_test.flags @@ -45,7 +45,6 @@ } -keep class org.chromium.chrome.browser.ntp.NewTabPageLayout { - *** mProfile; *** initializeSiteSectionView(...); } @@ -61,6 +60,7 @@ -keep class org.chromium.chrome.browser.ntp.NewTabPage { public (...); *** mBrowserControlsStateProvider; + *** mNewTabPageCoordinator; *** mNewTabPageLayout; *** mFeedSurfaceProvider; *** mToolbarSupplier; @@ -73,6 +73,14 @@ public (...); } +-keep class org.chromium.chrome.browser.ntp.NewTabPageCoordinator { + public (...); +} + +-keep class org.chromium.chrome.browser.ntp.BraveNewTabPageCoordinator { + public (...); +} + -keep class org.chromium.chrome.browser.ntp.IncognitoNewTabPage { public (...); } @@ -133,7 +141,7 @@ -keep class org.chromium.chrome.browser.toolbar.ToolbarManager { public (...); - *** mBottomControlsCoordinatorSupplier; + *** mTabGroupUiBottomControlsCoordinatorSupplier; *** mCallbackController; *** mBottomControlsStacker; *** mFullscreenManager; @@ -540,7 +548,9 @@ -keep class org.chromium.chrome.browser.multiwindow.MultiWindowUtils { *** shouldShowManageWindowsMenu(...); - *** isOpenInOtherWindowSupported(...); + *** isLinkNavigationToOtherWindowSupported(...); + *** isLinkNavigationToNewWindowSupported(...); + *** isLinkNavigationToIncognitoWindowSupported(...); *** isMoveToOtherWindowSupported(...); *** canEnterMultiWindowMode(...); (...); @@ -920,10 +930,15 @@ -keep class org.chromium.chrome.browser.suggestions.tile.BraveMostVisitedTilesLayoutBase -keep class org.chromium.chrome.browser.hub.HubManagerImpl { + public (...); *** ensureHubCoordinatorIsInitialized(...); *** mEdgeToEdgeSupplier; } +-keep class org.chromium.chrome.browser.hub.BraveHubManagerImpl { + public (...); +} + -keep class org.chromium.chrome.browser.ui.system.StatusBarColorController { public (...); *** mBackgroundColorForNtp; diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index ba53916be19..ca9e7ce21b1 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -1432,7 +1432,7 @@ public abstract class BraveActivity extends ChromeActivity // Check multiwindow toggle for upgrade case if (!isFirstInstall && !BraveMultiWindowUtils.isCheckUpgradeEnableMultiWindows() - && MultiWindowUtils.getInstanceCountWithFallback(PersistedInstanceType.ACTIVE) > 1 + && MultiWindowUtils.getInstanceCount(PersistedInstanceType.ACTIVE) > 1 && !BraveMultiWindowUtils.shouldEnableMultiWindows()) { BraveMultiWindowUtils.setCheckUpgradeEnableMultiWindows(true); BraveMultiWindowUtils.updateEnableMultiWindows(true); diff --git a/android/java/org/chromium/chrome/browser/autofill/settings/BraveAutofillPaymentMethodsFragmentBase.java b/android/java/org/chromium/chrome/browser/autofill/settings/BraveAutofillPaymentMethodsFragmentBase.java new file mode 100644 index 00000000000..09e5bff0aa0 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/autofill/settings/BraveAutofillPaymentMethodsFragmentBase.java @@ -0,0 +1,45 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.autofill.settings; + +import android.content.Context; + +import androidx.preference.Preference; + +import org.chromium.build.annotations.NullMarked; +import org.chromium.chrome.browser.autofill.PersonalDataManager; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; +import org.chromium.chrome.browser.settings.search.ChromeBaseSearchIndexProvider; +import org.chromium.components.browser_ui.settings.search.SettingsIndexData; + +@NullMarked +public abstract class BraveAutofillPaymentMethodsFragmentBase extends ChromeBaseSettingsFragment + implements PersonalDataManager.PersonalDataManagerObserver { + @Override + protected void notifyPreferencesUpdated() { + Preference loyaltyCardsPref = + getPreferenceScreen() + .findPreference(AutofillPaymentMethodsFragment.PREF_LOYALTY_CARDS); + if (loyaltyCardsPref != null) { + getPreferenceScreen().removePreference(loyaltyCardsPref); + } + super.notifyPreferencesUpdated(); + } + + public static final ChromeBaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new ChromeBaseSearchIndexProvider(AutofillPaymentMethodsFragment.class.getName(), 0) { + @Override + public void updateDynamicPreferences( + Context context, SettingsIndexData indexData, Profile profile) { + AutofillPaymentMethodsFragment.SEARCH_INDEX_DATA_PROVIDER + .updateDynamicPreferences(context, indexData, profile); + indexData.removeEntryForKey( + AutofillPaymentMethodsFragment.class.getName(), + AutofillPaymentMethodsFragment.PREF_LOYALTY_CARDS); + } + }; +} diff --git a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java index d8038352375..950773e2527 100644 --- a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java +++ b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabActivity.java @@ -221,7 +221,6 @@ public class FullScreenCustomTabActivity extends CustomTabActivity { getModalDialogManagerSupplier().asNonNull(), /* appMenuBlocker= */ this, this::supportsAppMenu, - this::supportsFindInPage, getTabCreatorManagerSupplier(), getFullscreenManager(), getCompositorViewHolderSupplier(), diff --git a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java index 31f47150a1d..6ad50417671 100644 --- a/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java +++ b/android/java/org/chromium/chrome/browser/customtabs/FullScreenCustomTabRootUiCoordinator.java @@ -76,7 +76,6 @@ public class FullScreenCustomTabRootUiCoordinator extends BaseCustomTabRootUiCoo @NonNull NonNullObservableSupplier modalDialogManagerSupplier, @NonNull AppMenuBlocker appMenuBlocker, @NonNull BooleanSupplier supportsAppMenuSupplier, - @NonNull BooleanSupplier supportsFindInPage, @NonNull Supplier tabCreatorManagerSupplier, @NonNull FullscreenManager fullscreenManager, @NonNull MonotonicObservableSupplier compositorViewHolderSupplier, @@ -123,7 +122,6 @@ public class FullScreenCustomTabRootUiCoordinator extends BaseCustomTabRootUiCoo modalDialogManagerSupplier, appMenuBlocker, supportsAppMenuSupplier, - supportsFindInPage, tabCreatorManagerSupplier, fullscreenManager, compositorViewHolderSupplier, diff --git a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java index cb9eba93bfb..ae3c01407b6 100644 --- a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java +++ b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceManagerApi31.java @@ -16,6 +16,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.app.tabmodel.TabModelOrchestrator; import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; +import org.chromium.chrome.browser.multiwindow.MultiInstanceManager.CloseWindowAppSource; import org.chromium.chrome.browser.multiwindow.MultiInstanceManager.PersistedInstanceType; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; @@ -45,8 +46,7 @@ class BraveMultiInstanceManagerApi31 extends MultiInstanceManagerApi31 { ActivityLifecycleDispatcher activityLifecycleDispatcher, MonotonicObservableSupplier modalDialogManagerSupplier, MenuOrKeyboardActionController menuOrKeyboardActionController, - Supplier desktopWindowStateManagerSupplier, - TabReparentingDelegate tabReparentingDelegate) { + Supplier desktopWindowStateManagerSupplier) { super( activity, tabModelOrchestratorSupplier, @@ -54,23 +54,32 @@ class BraveMultiInstanceManagerApi31 extends MultiInstanceManagerApi31 { activityLifecycleDispatcher, modalDialogManagerSupplier, menuOrKeyboardActionController, - desktopWindowStateManagerSupplier, - tabReparentingDelegate); + desktopWindowStateManagerSupplier); } @Override public boolean handleMenuOrKeyboardAction(int id, boolean fromMenu) { if (id == org.chromium.chrome.R.id.move_to_other_window_menu_id) { mIsMoveTabsFromSettings = !fromMenu; + + assert mMultiInstanceOrchestrator instanceof BraveMultiInstanceOrchestratorImpl; + + // As CloseWindow()/mActivity/getCurrentInstanceId() are still at + // MultiInstanceManagerApi31, but moveTabsToWindowByIdChecked was moved to + // MultiInstanceOrchestratorImpl - will do the moveTabsToWindowByIdChecked call + // from BraveMultiInstanceManagerApi31 class here later, and save it + ((BraveMultiInstanceOrchestratorImpl) mMultiInstanceOrchestrator) + .setBraveMultiInstanceManager(this); } return super.handleMenuOrKeyboardAction(id, fromMenu); } - @Override public void moveTabsToWindowByIdChecked( - int destWindowId, List tabs, int destTabIndex, int destGroupTabId) { - super.moveTabsToWindowByIdChecked(destWindowId, tabs, destTabIndex, destGroupTabId); - + int destWindowId, + List tabs, + int destTabIndex, + int destGroupTabId, + boolean bringToFront) { if (mIsMoveTabsFromSettings && !tabs.isEmpty()) { mIsMoveTabsFromSettings = false; TabModelSelector selector = @@ -81,7 +90,7 @@ class BraveMultiInstanceManagerApi31 extends MultiInstanceManagerApi31 { Collections.singletonList(getCurrentInstanceId()), CloseWindowAppSource.NO_TABS_IN_WINDOW); } - if (MultiWindowUtils.getInstanceCountWithFallback(PersistedInstanceType.ACTIVE) == 1) { + if (MultiWindowUtils.getInstanceCount(PersistedInstanceType.ACTIVE) == 1) { BraveMultiWindowUtils.updateEnableMultiWindows(false); } else { Snackbar snackbar = @@ -94,13 +103,12 @@ class BraveMultiInstanceManagerApi31 extends MultiInstanceManagerApi31 { public void onDismissNoAction( @Nullable Object actionData) {} - // TODO(https://github.com/brave/brave-browser/issues/50673) - // BraveMultiWindowUtils.mergeWindows takes non-null - // activity and can't do anything when null is passed - @SuppressWarnings("NullAway") @Override public void onAction(@Nullable Object actionData) { - BraveMultiWindowUtils.mergeWindows(null); + if (!mActivity.isDestroyed() + && !mActivity.isFinishing()) { + BraveMultiWindowUtils.mergeWindows(mActivity); + } } }, Snackbar.TYPE_ACTION, diff --git a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceOrchestratorImpl.java b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceOrchestratorImpl.java new file mode 100644 index 00000000000..25323a9a061 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiInstanceOrchestratorImpl.java @@ -0,0 +1,41 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.multiwindow; + +import org.chromium.build.annotations.NullMarked; +import org.chromium.build.annotations.Nullable; +import org.chromium.chrome.browser.tab.Tab; + +import java.util.List; + +@NullMarked +public class BraveMultiInstanceOrchestratorImpl extends MultiInstanceOrchestratorImpl { + private @Nullable BraveMultiInstanceManagerApi31 mBraveMultiInstanceManager; + + BraveMultiInstanceOrchestratorImpl(TabReparentingDelegate tabReparentingDelegate) { + super(tabReparentingDelegate); + } + + void setBraveMultiInstanceManager(BraveMultiInstanceManagerApi31 braveMultiInstanceManager) { + mBraveMultiInstanceManager = braveMultiInstanceManager; + } + + @Override + public void moveTabsToWindowByIdChecked( + int destWindowId, + List tabs, + int destTabIndex, + int destGroupTabId, + boolean bringToFront) { + super.moveTabsToWindowByIdChecked( + destWindowId, tabs, destTabIndex, destGroupTabId, bringToFront); + + if (mBraveMultiInstanceManager != null) { + mBraveMultiInstanceManager.moveTabsToWindowByIdChecked( + destWindowId, tabs, destTabIndex, destGroupTabId, bringToFront); + } + } +} diff --git a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java index c34d929443d..4a26843adc6 100644 --- a/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java +++ b/android/java/org/chromium/chrome/browser/multiwindow/BraveMultiWindowUtils.java @@ -8,12 +8,9 @@ package org.chromium.chrome.browser.multiwindow; import android.app.Activity; import android.content.Intent; -import androidx.annotation.VisibleForTesting; - import org.chromium.base.BravePreferenceKeys; import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; -import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.multiwindow.MultiInstanceManager.PersistedInstanceType; @@ -32,22 +29,28 @@ public class BraveMultiWindowUtils extends MultiWindowUtils { super(); } - public boolean shouldShowEnableWindow(@Nullable Activity activity) { - return super.isOpenInOtherWindowSupported(activity) || super.canEnterMultiWindowMode(); + public boolean shouldShowEnableWindow(Activity activity) { + return super.isLinkNavigationToOtherWindowSupported(activity) + || MultiWindowUtils.canEnterMultiWindowMode(); } public static boolean shouldShowManageWindowsMenu() { return shouldEnableMultiWindows() && MultiWindowUtils.shouldShowManageWindowsMenu(); } - @VisibleForTesting - public static Class getTabReparentingDelegateClass() { - return TabReparentingDelegate.class; + public static boolean isLinkNavigationToNewWindowSupported() { + return shouldEnableMultiWindows() + && MultiWindowUtils.isLinkNavigationToNewWindowSupported(); + } + + public static boolean isLinkNavigationToIncognitoWindowSupported() { + return shouldEnableMultiWindows() + && MultiWindowUtils.isLinkNavigationToIncognitoWindowSupported(); } @Override - public boolean isOpenInOtherWindowSupported(@Nullable Activity activity) { - return shouldEnableMultiWindows() && super.isOpenInOtherWindowSupported(activity); + public boolean isLinkNavigationToOtherWindowSupported(Activity activity) { + return shouldEnableMultiWindows() && super.isLinkNavigationToOtherWindowSupported(activity); } @Override @@ -57,9 +60,8 @@ public class BraveMultiWindowUtils extends MultiWindowUtils { && super.isMoveToOtherWindowSupported(activity, tabModelSelector); } - @Override - public boolean canEnterMultiWindowMode() { - return shouldEnableMultiWindows() && super.canEnterMultiWindowMode(); + public static boolean canEnterMultiWindowMode() { + return shouldEnableMultiWindows() && MultiWindowUtils.canEnterMultiWindowMode(); } public static boolean shouldEnableMultiWindows() { diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java index e8ad1099269..0935cb62721 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java @@ -6,11 +6,10 @@ package org.chromium.chrome.browser.ntp; import static org.chromium.build.NullUtil.assertNonNull; +import static org.chromium.build.NullUtil.assumeNonNull; import android.app.Activity; -import android.view.LayoutInflater; -import org.chromium.base.Callback; import org.chromium.base.supplier.MonotonicObservableSupplier; import org.chromium.base.supplier.NonNullObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; @@ -22,6 +21,7 @@ import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.feed.BraveFeedSurfaceCoordinator; import org.chromium.chrome.browser.feed.FeedActionDelegate; +import org.chromium.chrome.browser.feed.FeedActionDelegate.PageLoadObserver; import org.chromium.chrome.browser.feed.FeedFeatures; import org.chromium.chrome.browser.feed.FeedSurfaceCoordinator; import org.chromium.chrome.browser.feed.FeedSurfaceProvider; @@ -29,7 +29,6 @@ import org.chromium.chrome.browser.feed.FeedSwipeRefreshLayout; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.magic_stack.ModuleRegistry; import org.chromium.chrome.browser.metrics.StartupMetricsTracker; -import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; @@ -37,7 +36,6 @@ import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.suggestions.tile.Tile; import org.chromium.chrome.browser.suggestions.tile.TileSource; import org.chromium.chrome.browser.tab.Tab; -import org.chromium.chrome.browser.tab_ui.TabContentManager; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tasks.HomeSurfaceTracker; @@ -61,13 +59,14 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite // To delete in bytecode, members from parent class will be used instead. private @Nullable BrowserControlsStateProvider mBrowserControlsStateProvider; private @Nullable NewTabPageLayout mNewTabPageLayout; + private @Nullable NewTabPageCoordinator mNewTabPageCoordinator; @SuppressWarnings("UnusedVariable") private @Nullable FeedSurfaceProvider mFeedSurfaceProvider; private @Nullable Supplier mToolbarSupplier; - private @Nullable BottomSheetController mBottomSheetController; - private @Nullable NonNullObservableSupplier mTabStripHeightSupplier; + private final BottomSheetController mBottomSheetController; + private final NonNullObservableSupplier mTabStripHeightSupplier; private final Activity mActivity; @@ -91,13 +90,11 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite Supplier toolbarSupplier, @Nullable HomeSurfaceTracker homeSurfaceTracker, ActivityResultTracker activityResultTracker, - MonotonicObservableSupplier tabContentManagerSupplier, NonNullObservableSupplier tabStripHeightSupplier, OneshotSupplier moduleRegistrySupplier, MonotonicObservableSupplier edgeToEdgeControllerSupplier, TopInsetProvider topInsetProvider, - StartupMetricsTracker startupMetricsTracker, - MultiInstanceManager multiInstanceManager) { + StartupMetricsTracker startupMetricsTracker) { super( activity, browserControlsStateProvider, @@ -118,15 +115,15 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite toolbarSupplier, homeSurfaceTracker, activityResultTracker, - tabContentManagerSupplier, tabStripHeightSupplier, moduleRegistrySupplier, edgeToEdgeControllerSupplier, topInsetProvider, - startupMetricsTracker, - multiInstanceManager); + startupMetricsTracker); mActivity = activity; + mBottomSheetController = bottomSheetController; + mTabStripHeightSupplier = tabStripHeightSupplier; assertNonNull(mNewTabPageLayout); assert mNewTabPageLayout instanceof BraveNewTabPageLayout; @@ -171,8 +168,8 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite } @Override - @EnsuresNonNull({"mNewTabPageLayout", "mFeedSurfaceProvider"}) - protected void initializeMainView( + @EnsuresNonNull({"mFeedSurfaceProvider"}) + protected void initializeFeedSurfaceProvider( Activity activity, WindowAndroid windowAndroid, ActivityResultTracker activityResultTracker, @@ -182,13 +179,15 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite ModalDialogManager modalDialogManager, String url, MonotonicObservableSupplier edgeToEdgeControllerSupplier, - StartupMetricsTracker startupMetricsTracker) { + StartupMetricsTracker startupMetricsTracker, + TabModelSelector tabModelSelector, + OneshotSupplier moduleRegistrySupplier) { // Override surface provider Profile profile = Profile.fromWebContents(mTab.getWebContents()); assertNonNull(profile); - LayoutInflater inflater = LayoutInflater.from(activity); - mNewTabPageLayout = (NewTabPageLayout) inflater.inflate(R.layout.new_tab_page_layout, null); + assert mNewTabPageLayout != null : "Must be already created at NewTabPage.c-tor"; + assert mNewTabPageCoordinator != null : "Must be already created at NewTabPage.c-tor"; // No-op stub to deal with non-null requirement FeedSurfaceCoordinator.ActionDelegateFactory actionDelegate = @@ -201,7 +200,7 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite boolean inGroup, int pageId, PageLoadObserver pageLoadObserver, - Callback onVisitComplete) { + int surfaceId) { assert false : "Not supposed to be invoked"; } }; @@ -216,7 +215,7 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite activity, snackbarManager, windowAndroid, - new SnapScrollHelperImpl(mNewTabPageManager, mNewTabPageLayout), + new SnapScrollHelperImpl(mNewTabPageManager, mNewTabPageCoordinator), mNewTabPageLayout, mBrowserControlsStateProvider.getTopControlsHeight(), isInNightMode, @@ -235,9 +234,10 @@ public class BraveNewTabPage extends NewTabPage implements NewTabPage.MostVisite actionDelegate, mTabStripHeightSupplier, edgeToEdgeControllerSupplier, - /* moduleRegistry= */ null); + assumeNonNull(moduleRegistrySupplier).get()); mFeedSurfaceProvider = feedSurfaceCoordinator; + startupMetricsTracker.registerNtpViewObserver(mFeedSurfaceProvider.getView()); } public void updateSearchProvider() { diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageCoordinator.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageCoordinator.java new file mode 100644 index 00000000000..8172715d790 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageCoordinator.java @@ -0,0 +1,114 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.ntp; + +import android.app.Activity; + +import org.chromium.base.supplier.OneshotSupplier; +import org.chromium.build.annotations.Initializer; +import org.chromium.build.annotations.NullMarked; +import org.chromium.build.annotations.Nullable; +import org.chromium.chrome.browser.app.BraveActivity; +import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; +import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; +import org.chromium.chrome.browser.magic_stack.ModuleRegistry; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.suggestions.tile.TileGroup; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.tasks.HomeSurfaceTracker; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate; +import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; +import org.chromium.ui.base.ActivityResultTracker; +import org.chromium.ui.base.WindowAndroid; +import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.url.GURL; + +import java.util.function.Supplier; + +@NullMarked +public class BraveNewTabPageCoordinator extends NewTabPageCoordinator { + private static final String TAG = "BraveNewTabPageCoordinator"; + + private final Activity mActivity; + + private final BraveNewTabPageLayout mBraveNewTabPageLayout; + private final NewTabPageManager mNewTabPageManager; + + private final Profile mProfile; + private final WindowAndroid mWindowAndroid; + + public BraveNewTabPageCoordinator( + NewTabPageManager manager, + Activity activity, + NewTabPageLayout newTabPageLayout, + Tab tab, + TabModelSelector tabModelSelector, + OneshotSupplier moduleRegistrySupplier, + Profile profile, + WindowAndroid windowAndroid, + ActivityResultTracker activityResultTracker, + BottomSheetController bottomSheetController, + ModalDialogManager modalDialogManager, + SnackbarManager snackbarManager, + boolean isTablet, + Supplier tabStripHeightSupplier, + @Nullable HomeSurfaceTracker homeSurfaceTracker) { + super( + manager, + activity, + newTabPageLayout, + tab, + tabModelSelector, + moduleRegistrySupplier, + profile, + windowAndroid, + activityResultTracker, + bottomSheetController, + modalDialogManager, + snackbarManager, + isTablet, + tabStripHeightSupplier, + homeSurfaceTracker); + + mNewTabPageManager = manager; + + assert (activity instanceof BraveActivity); + mActivity = activity; + + assert (newTabPageLayout instanceof BraveNewTabPageLayout); + mBraveNewTabPageLayout = (BraveNewTabPageLayout) newTabPageLayout; + + mProfile = profile; + mWindowAndroid = windowAndroid; + } + + @Override + @Initializer + public void initialize( + TileGroup.Delegate tileGroupDelegate, + boolean searchProviderHasLogo, + boolean searchProviderIsGoogle, + FeedSurfaceScrollDelegate scrollDelegate, + TouchEnabledDelegate touchEnabledDelegate, + UiConfig uiConfig, + ActivityLifecycleDispatcher lifecycleDispatcher, + Supplier composeplateUrlSupplier) { + super.initialize( + tileGroupDelegate, + searchProviderHasLogo, + searchProviderIsGoogle, + scrollDelegate, + touchEnabledDelegate, + uiConfig, + lifecycleDispatcher, + composeplateUrlSupplier); + + mBraveNewTabPageLayout.initialize(mNewTabPageManager, mActivity, mProfile, mWindowAndroid); + } +} diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java index 38a8f8cd5f4..19ec19491ca 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java @@ -7,6 +7,7 @@ package org.chromium.chrome.browser.ntp; import static org.chromium.base.ThreadUtils.runOnUiThread; import static org.chromium.build.NullUtil.assertNonNull; +import static org.chromium.build.NullUtil.assumeNonNull; import static org.chromium.ui.base.ViewUtils.dpToPx; import android.annotation.SuppressLint; @@ -57,6 +58,8 @@ import org.chromium.brave_news.mojom.Feed; import org.chromium.brave_news.mojom.FeedItem; import org.chromium.brave_news.mojom.FeedPage; import org.chromium.brave_news.mojom.FeedPageItem; +import org.chromium.build.annotations.EnsuresNonNull; +import org.chromium.build.annotations.Initializer; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -68,8 +71,6 @@ import org.chromium.chrome.browser.brave_news.LinearLayoutManagerWrapper; import org.chromium.chrome.browser.brave_news.models.FeedItemCard; import org.chromium.chrome.browser.brave_news.models.FeedItemsCard; import org.chromium.chrome.browser.brave_stats.BraveStatsUtil; -import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; -import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.local_database.DatabaseHelper; import org.chromium.chrome.browser.ntp_background_images.NTPBackgroundImagesBridge; import org.chromium.chrome.browser.ntp_background_images.model.NTPImage; @@ -88,23 +89,15 @@ import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; import org.chromium.chrome.browser.settings.BraveNewsPreferencesV2; import org.chromium.chrome.browser.settings.SettingsNavigationFactory; import org.chromium.chrome.browser.suggestions.tile.BraveMostVisitedTilesLayoutBase; -import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabAttributes; import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelUtils; -import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate; -import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.settings.SettingsNavigation; -import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; import org.chromium.components.user_prefs.UserPrefs; import org.chromium.mojo.bindings.ConnectionErrorHandler; import org.chromium.mojo.system.MojoException; -import org.chromium.ui.base.ActivityResultTracker; import org.chromium.ui.base.WindowAndroid; -import org.chromium.ui.modaldialog.ModalDialogManager; -import org.chromium.url.GURL; import java.util.ArrayList; import java.util.List; @@ -123,7 +116,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout private static final int MINIMUM_VISIBLE_HEIGHT_THRESHOLD = 50; private static final int HOUR_MS = 3_600_000; - private ViewGroup mMvTilesContainerLayout; + private @Nullable ViewGroup mMvTilesContainerLayout; // Own members. private WindowAndroid mWindowAndroid; @@ -132,7 +125,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout private @Nullable SponsoredRichMediaWebView mSponsoredRichMediaWebView; private @Nullable FrameLayout mBackgroundSponsoredRichMediaView; - // To be removed in bytecode, parent variable will be used instead. + // Own members private @Nullable Profile mProfile; private @Nullable SponsoredTab mSponsoredTab; @@ -210,6 +203,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout } } + @EnsuresNonNull({"mMvTilesContainerLayout"}) protected void initializeSiteSectionView() { mMvTilesContainerLayout = (ViewGroup) ((ViewStub) findViewById(R.id.mv_tiles_layout_stub)).inflate(); @@ -220,6 +214,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout new Runnable() { @Override public void run() { + assumeNonNull(mMvTilesContainerLayout); mMvTilesContainerLayout.addOnLayoutChangeListener( (View view, int left, @@ -1209,45 +1204,15 @@ public class BraveNewTabPageLayout extends NewTabPageLayout } } - @Override + @Initializer public void initialize( NewTabPageManager manager, Activity activity, - Delegate tileGroupDelegate, - boolean searchProviderHasLogo, - boolean searchProviderIsGoogle, - FeedSurfaceScrollDelegate scrollDelegate, - TouchEnabledDelegate touchEnabledDelegate, - UiConfig uiConfig, - ActivityLifecycleDispatcher lifecycleDispatcher, Profile profile, - WindowAndroid windowAndroid, - ActivityResultTracker activityResultTracker, - BottomSheetController bottomSheetController, - ModalDialogManager modalDialogManager, - SnackbarManager snackbarManager, - boolean isTablet, - Supplier tabStripHeightSupplier, - Supplier composeplateUrlSupplier) { - super.initialize( - manager, - activity, - tileGroupDelegate, - searchProviderHasLogo, - searchProviderIsGoogle, - scrollDelegate, - touchEnabledDelegate, - uiConfig, - lifecycleDispatcher, - profile, - windowAndroid, - activityResultTracker, - bottomSheetController, - modalDialogManager, - snackbarManager, - isTablet, - tabStripHeightSupplier, - composeplateUrlSupplier); + WindowAndroid windowAndroid) { + + mProfile = profile; + mNTPBackgroundImagesBridge = NTPBackgroundImagesBridge.getInstance(mProfile); mWindowAndroid = windowAndroid; diff --git a/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarCoordinator.java b/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarCoordinator.java index fa1f9efcac2..e4442f98b5d 100644 --- a/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarCoordinator.java +++ b/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarCoordinator.java @@ -21,8 +21,6 @@ import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; -import org.chromium.chrome.browser.merchant_viewer.MerchantTrustSignalsCoordinator; -import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; import org.chromium.chrome.browser.omnibox.LocationBarMediator.OmniboxUma; import org.chromium.chrome.browser.omnibox.status.StatusCoordinator.PageInfoAction; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownScrollListener; @@ -82,8 +80,6 @@ public class BraveLocationBarCoordinator extends LocationBarCoordinator { OmniboxUma omniboxUma, BookmarkState bookmarkState, BooleanSupplier isToolbarMicEnabledSupplier, - @Nullable Supplier - merchantTrustSignalsCoordinatorSupplier, OmniboxActionDelegateImpl omniboxActionDelegate, @Nullable BrowserStateBrowserControlsVisibilityDelegate browserControlsVisibilityDelegate, @@ -101,7 +97,6 @@ public class BraveLocationBarCoordinator extends LocationBarCoordinator { boolean isToolbarPositionCustomizationEnabled, @Nullable PageZoomManager pageZoomManager, Function tabFaviconFunction, - @Nullable MultiInstanceManager multiInstanceManager, SnackbarManager snackbarManager, View bottomContainerView, @Nullable OmniboxChipManager omniboxChipManager) { @@ -124,7 +119,6 @@ public class BraveLocationBarCoordinator extends LocationBarCoordinator { omniboxUma, bookmarkState, isToolbarMicEnabledSupplier, - merchantTrustSignalsCoordinatorSupplier, omniboxActionDelegate, browserControlsVisibilityDelegate, backPressManager, @@ -144,7 +138,6 @@ public class BraveLocationBarCoordinator extends LocationBarCoordinator { isToolbarPositionCustomizationEnabled, pageZoomManager, tabFaviconFunction, - multiInstanceManager, snackbarManager, bottomContainerView, omniboxChipManager); diff --git a/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java b/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java index 3c6b625a722..48492c088c6 100644 --- a/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java +++ b/android/java/org/chromium/chrome/browser/omnibox/BraveLocationBarMediator.java @@ -22,7 +22,6 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.lens.LensController; import org.chromium.chrome.browser.locale.LocaleManager; -import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; import org.chromium.chrome.browser.omnibox.UrlBar.ScrollType; import org.chromium.chrome.browser.omnibox.fusebox.FuseboxCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; @@ -86,7 +85,6 @@ public class BraveLocationBarMediator extends LocationBarMediator { Supplier<@Nullable ModalDialogManager> modalDialogManagerSupplier, @Nullable PageZoomIndicatorCoordinator pageZoomIndicatorCoordinator, FuseboxCoordinator fuseboxCoordinator, - @Nullable MultiInstanceManager multiInstanceManager, LocationBarEmbedder locationBarEmbedder, @Nullable OmniboxChipManager omniboxChipManager) { super( @@ -110,7 +108,6 @@ public class BraveLocationBarMediator extends LocationBarMediator { modalDialogManagerSupplier, pageZoomIndicatorCoordinator, fuseboxCoordinator, - multiInstanceManager, locationBarEmbedder, omniboxChipManager); } diff --git a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java index 1b0fbd49595..90bd88e1c92 100644 --- a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java +++ b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java @@ -283,15 +283,14 @@ public class AppearancePreferences extends AppearanceSettingsFragment .writeBoolean(BravePreferenceKeys.BRAVE_TAB_GROUPS_ENABLED, (boolean) newValue); } else if (PREF_ENABLE_MULTI_WINDOWS.equals(key)) { if (!(boolean) newValue) { - if (MultiWindowUtils.getInstanceCountWithFallback(PersistedInstanceType.ACTIVE) - > 1) { + if (MultiWindowUtils.getInstanceCount(PersistedInstanceType.ACTIVE) > 1) { BraveMultiWindowDialogFragment dialogFragment = BraveMultiWindowDialogFragment.newInstance(); BraveMultiWindowDialogFragment.DismissListener dismissListener = new BraveMultiWindowDialogFragment.DismissListener() { @Override public void onDismiss() { - if (MultiWindowUtils.getInstanceCountWithFallback( + if (MultiWindowUtils.getInstanceCount( PersistedInstanceType.ACTIVE) == 1) { if (preference instanceof ChromeSwitchPreference) { diff --git a/android/java/org/chromium/chrome/browser/settings/BraveFragmentDependencyProvider.java b/android/java/org/chromium/chrome/browser/settings/BraveFragmentDependencyProvider.java index 73db4f92472..a5fd3941204 100644 --- a/android/java/org/chromium/chrome/browser/settings/BraveFragmentDependencyProvider.java +++ b/android/java/org/chromium/chrome/browser/settings/BraveFragmentDependencyProvider.java @@ -5,6 +5,8 @@ package org.chromium.chrome.browser.settings; +import static org.chromium.build.NullUtil.assertNonNull; + import android.app.Activity; import android.content.Context; @@ -30,11 +32,12 @@ import java.util.function.Supplier; @NullMarked public class BraveFragmentDependencyProvider extends FragmentDependencyProvider { private final Profile mProfile; + private final MonotonicObservableSupplier mModalDialogManagerSupplier; public BraveFragmentDependencyProvider( Activity activity, Profile profile, - MonotonicObservableSupplier windowAndroidSupplier, + OneshotSupplier windowAndroidSupplier, ActivityResultTracker activityResultTracker, OneshotSupplier snackbarManagerSupplier, OneshotSupplier bottomSheetControllerSupplier, @@ -50,13 +53,15 @@ public class BraveFragmentDependencyProvider extends FragmentDependencyProvider modalDialogManagerSupplier, searchCoordinatorSupplier); mProfile = profile; + mModalDialogManagerSupplier = modalDialogManagerSupplier; } @Override public void onFragmentAttached( FragmentManager fragmentManager, Fragment fragment, Context unusedContext) { - if (fragment instanceof CredentialEntryFragmentViewBase) { - CredentialEditUiFactory.create((CredentialEntryFragmentViewBase) fragment, mProfile); + if (fragment instanceof CredentialEntryFragmentViewBase credentialFragment) { + CredentialEditUiFactory.create( + credentialFragment, mProfile, assertNonNull(mModalDialogManagerSupplier.get())); } super.onFragmentAttached(fragmentManager, fragment, unusedContext); diff --git a/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java b/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java index f4667ebb58c..966ddec3e70 100644 --- a/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java +++ b/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java @@ -240,6 +240,8 @@ public abstract class BraveMainPreferencesBase extends BravePreferenceFragment removePreferenceIfPresent(PREF_ADVANCED_SECTION); removePreferenceIfPresent(PREF_PRIVACY); removePreferenceIfPresent(PREF_BRAVE_VPN_CALLOUT); + removePreferenceIfPresent(MainSettings.PREF_SETTINGS_PROMO_CARD); + removePreferenceIfPresent(MainSettings.PREF_MANAGE_SYNC); if (!ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_PLAYLIST)) { removePreferenceIfPresent(PREF_BRAVE_PLAYLIST); @@ -707,6 +709,8 @@ public abstract class BraveMainPreferencesBase extends BravePreferenceFragment indexData.removeEntry(getUniqueId(MainSettings.PREF_SEARCH_ENGINE)); indexData.removeEntry(getUniqueId(MainSettings.PREF_DOWNLOADS)); indexData.removeEntry(getUniqueId(MainSettings.PREF_SAFETY_HUB)); + indexData.removeEntry(getUniqueId(MainSettings.PREF_SETTINGS_PROMO_CARD)); + indexData.removeEntry(getUniqueId(MainSettings.PREF_MANAGE_SYNC)); indexData.removeEntry( getUniqueId(MainSettings.PREF_ACCOUNT_AND_GOOGLE_SERVICES_SECTION)); indexData.removeEntry(getUniqueId(MainSettings.PREF_GOOGLE_SERVICES)); diff --git a/android/java/org/chromium/chrome/browser/share/BraveShareDelegateImpl.java b/android/java/org/chromium/chrome/browser/share/BraveShareDelegateImpl.java index 73aea1646e1..ed1bc08cc48 100644 --- a/android/java/org/chromium/chrome/browser/share/BraveShareDelegateImpl.java +++ b/android/java/org/chromium/chrome/browser/share/BraveShareDelegateImpl.java @@ -8,6 +8,7 @@ package org.chromium.chrome.browser.share; import android.content.Context; import org.chromium.base.BravePreferenceKeys; +import org.chromium.base.supplier.MonotonicObservableSupplier; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.data_sharing.DataSharingTabManager; @@ -16,7 +17,11 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.signin.SigninAndHistorySyncActivityLauncher; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +import org.chromium.ui.base.ActivityResultTracker; +import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.function.Supplier; @@ -31,7 +36,11 @@ public class BraveShareDelegateImpl extends ShareDelegateImpl { Supplier<@Nullable Profile> profileSupplier, ShareSheetDelegate delegate, boolean isCustomTab, - @Nullable DataSharingTabManager dataSharingTabManager) { + @Nullable DataSharingTabManager dataSharingTabManager, + SigninAndHistorySyncActivityLauncher signinAndHistorySyncActivityLauncher, + ActivityResultTracker activityResultTracker, + MonotonicObservableSupplier modalDialogManagerSupplier, + SnackbarManager snackbarManager) { super( context, controller, @@ -41,7 +50,11 @@ public class BraveShareDelegateImpl extends ShareDelegateImpl { profileSupplier, delegate, isCustomTab, - dataSharingTabManager); + dataSharingTabManager, + signinAndHistorySyncActivityLauncher, + activityResultTracker, + modalDialogManagerSupplier, + snackbarManager); } @Override diff --git a/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegate.java b/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegate.java index 59b80d48fa3..5692d4bd5ef 100644 --- a/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegate.java +++ b/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegate.java @@ -42,6 +42,7 @@ import org.chromium.chrome.browser.crypto_wallet.BraveWalletPolicy; import org.chromium.chrome.browser.feed.webfeed.WebFeedSnackbarController; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.homepage.HomepageManager; +import org.chromium.chrome.browser.hub.HubManager; import org.chromium.chrome.browser.incognito.IncognitoUtils; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthController; import org.chromium.chrome.browser.layouts.LayoutStateProvider; @@ -54,7 +55,6 @@ import org.chromium.chrome.browser.readaloud.ReadAloudController; import org.chromium.chrome.browser.set_default_browser.BraveSetDefaultBrowserUtils; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; -import org.chromium.chrome.browser.tinker_tank.TinkerTankDelegate; import org.chromium.chrome.browser.toolbar.ToolbarManager; import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration; import org.chromium.chrome.browser.toolbar.menu_button.BraveMenuButtonCoordinator; @@ -243,6 +243,7 @@ public class BraveTabbedAppMenuPropertiesDelegate extends TabbedAppMenuPropertie incognitoReauthControllerOneshotSupplier, MonotonicObservableSupplier readAloudControllerSupplier, PageZoomManager pageZoomManager, + OneshotSupplier hubManagerSupplier, @Nullable OpenInAppMenuItemProvider openInAppMenuItemProvider) { super( context, @@ -260,6 +261,7 @@ public class BraveTabbedAppMenuPropertiesDelegate extends TabbedAppMenuPropertie incognitoReauthControllerOneshotSupplier, readAloudControllerSupplier, pageZoomManager, + hubManagerSupplier, openInAppMenuItemProvider); mBraveAppMenuDelegate = appMenuDelegate; @@ -588,9 +590,7 @@ public class BraveTabbedAppMenuPropertiesDelegate extends TabbedAppMenuPropertie } // Move to other window - if (MultiWindowUtils.instanceSwitcherEnabled() - && MultiWindowUtils.isMultiInstanceApi31Enabled() - && !DeviceInfo.isAutomotive()) { + if (MultiWindowUtils.isMultiInstanceApi31Enabled() && !DeviceInfo.isAutomotive()) { modelList.add( new MVCListAdapter.ListItem( AppMenuHandler.AppMenuItemType.STANDARD, @@ -621,15 +621,6 @@ public class BraveTabbedAppMenuPropertiesDelegate extends TabbedAppMenuPropertie buildModelForStandardMenuItem( R.id.open_history_menu_id, R.string.menu_history, 0))); - // Tinker Tank - if (TinkerTankDelegate.isEnabled()) { - modelList.add( - new MVCListAdapter.ListItem( - AppMenuHandler.AppMenuItemType.STANDARD, - buildModelForStandardMenuItem( - R.id.tinker_tank_menu_id, R.string.menu_tinker_tank, 0))); - } - // Downloads modelList.add( new MVCListAdapter.ListItem( diff --git a/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedRootUiCoordinator.java b/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedRootUiCoordinator.java index f906dc2c90c..59fef164e09 100644 --- a/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedRootUiCoordinator.java +++ b/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedRootUiCoordinator.java @@ -53,6 +53,7 @@ import org.chromium.chrome.browser.toolbar.ToolbarIntentMetadata; import org.chromium.chrome.browser.ui.BraveAdaptiveToolbarUiCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; +import org.chromium.chrome.browser.ui.bottombar.BottomBarHostManager; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; import org.chromium.chrome.browser.ui.edge_to_edge.TopInsetProvider; @@ -106,7 +107,6 @@ public class BraveTabbedRootUiCoordinator extends TabbedRootUiCoordinator { MonotonicObservableSupplier modalDialogManagerSupplier, AppMenuBlocker appMenuBlocker, BooleanSupplier supportsAppMenuSupplier, - BooleanSupplier supportsFindInPage, Supplier tabCreatorManagerSupplier, FullscreenManager fullscreenManager, Supplier compositorViewHolderSupplier, @@ -135,7 +135,8 @@ public class BraveTabbedRootUiCoordinator extends TabbedRootUiCoordinator { EdgeToEdgeManager edgeToEdgeManager, MonotonicObservableSupplier bookmarkManagerOpenerSupplier, NonNullObservableSupplier xrSpaceModeObservableSupplier, - OneshotSupplier inactivityTrackerSupplier) { + OneshotSupplier inactivityTrackerSupplier, + @Nullable BottomBarHostManager bottomBarHostManager) { super( activity, onOmniboxFocusChangedListener, @@ -161,7 +162,6 @@ public class BraveTabbedRootUiCoordinator extends TabbedRootUiCoordinator { modalDialogManagerSupplier, appMenuBlocker, supportsAppMenuSupplier, - supportsFindInPage, tabCreatorManagerSupplier, fullscreenManager, compositorViewHolderSupplier, @@ -189,7 +189,8 @@ public class BraveTabbedRootUiCoordinator extends TabbedRootUiCoordinator { edgeToEdgeManager, bookmarkManagerOpenerSupplier, xrSpaceModeObservableSupplier, - inactivityTrackerSupplier); + inactivityTrackerSupplier, + bottomBarHostManager); mBraveActivity = activity; mHubManagerSupplier = hubManagerSupplier; diff --git a/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCollectionTabModelImplBase.java b/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCollectionTabModelImplBase.java index f461b4179f5..55d6b5bde97 100644 --- a/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCollectionTabModelImplBase.java +++ b/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCollectionTabModelImplBase.java @@ -36,7 +36,7 @@ public abstract class BraveTabCollectionTabModelImplBase extends TabModelJniBrid BravePreferenceKeys .BRAVE_TAB_GROUPS_ENABLED_DEFAULT_VALUE, true)) - && isTabModelRestored()) { + && isTabModelRestoredViaReflection()) { return true; } // Otherwise just call parent. @@ -58,7 +58,7 @@ public abstract class BraveTabCollectionTabModelImplBase extends TabModelJniBrid return type == TabLaunchType.FROM_LINK || type == TabLaunchType.FROM_LONGPRESS_FOREGROUND; } - private boolean isTabModelRestored() { + private boolean isTabModelRestoredViaReflection() { @Nullable Boolean isRestored = (Boolean) BraveReflectionUtil.invokeMethod( diff --git a/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java b/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java index 8869eb91a5b..70d947be614 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java +++ b/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java @@ -36,6 +36,7 @@ import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkModel; import org.chromium.chrome.browser.bookmarks.TabBookmarker; import org.chromium.chrome.browser.browser_controls.BottomControlsStacker; +import org.chromium.chrome.browser.browser_controls.BottomControlsStacker.LayerType; import org.chromium.chrome.browser.browser_controls.BrowserControlsSizer; import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate; import org.chromium.chrome.browser.browser_controls.TopControlsStacker; @@ -51,7 +52,6 @@ import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.layouts.LayoutStateProvider; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustSignalsCoordinator; -import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; import org.chromium.chrome.browser.omnibox.LocationBar; import org.chromium.chrome.browser.omnibox.OmniboxChipManager; import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionDelegateImpl; @@ -91,6 +91,7 @@ import org.chromium.chrome.browser.toolbar.top.ToolbarLayout; import org.chromium.chrome.browser.toolbar.top.TopToolbarCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; +import org.chromium.chrome.browser.ui.bottombar.BottomBarHostManager; import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.TopInsetProvider; @@ -100,10 +101,12 @@ import org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarThrottle; import org.chromium.components.browser_ui.accessibility.PageZoomManager; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager; +import org.chromium.components.browser_ui.device_lock.DeviceLockActivityLauncher; import org.chromium.components.browser_ui.widget.scrim.ScrimManager; import org.chromium.components.embedder_support.contextmenu.ContextMenuPopulatorFactory; import org.chromium.content_public.browser.selection.SelectionDropdownMenuDelegate; import org.chromium.misc_metrics.mojom.MiscAndroidMetrics; +import org.chromium.ui.base.ActivityResultTracker; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.util.TokenHolder; @@ -118,7 +121,7 @@ public class BraveToolbarManager extends ToolbarManager // To delete in bytecode, members from parent class will be used instead. private SettableMonotonicObservableSupplier - mBottomControlsCoordinatorSupplier; + mTabGroupUiBottomControlsCoordinatorSupplier; private CallbackController mCallbackController; private BottomControlsStacker mBottomControlsStacker; private FullscreenManager mFullscreenManager; @@ -200,6 +203,8 @@ public class BraveToolbarManager extends ToolbarManager NonNullObservableSupplier omniboxFocusStateSupplier, OneshotSupplier promoShownOneshotSupplier, WindowAndroid windowAndroid, + ActivityResultTracker activityResultTracker, + DeviceLockActivityLauncher deviceLockActivityLauncher, OneshotSupplier chromeAndroidTaskSupplier, Supplier isInOverviewModeSupplier, NonNullObservableSupplier modalDialogManagerSupplier, @@ -218,7 +223,6 @@ public class BraveToolbarManager extends ToolbarManager MonotonicObservableSupplier readAloudControllerSupplier, @Nullable DesktopWindowStateManager desktopWindowStateManager, @Nullable TokenHolder lockTopControlsTokenJar, - @Nullable MultiInstanceManager multiInstanceManager, MonotonicObservableSupplier tabBookmarkerSupplier, @Nullable VisibilityDelegate menuButtonVisibilityDelegate, TopControlsStacker topControlsStacker, @@ -226,7 +230,8 @@ public class BraveToolbarManager extends ToolbarManager NonNullObservableSupplier xrSpaceModeObservableSupplier, PageZoomManager pageZoomManager, SnackbarManager snackbarManager, - @Nullable OmniboxChipManager omniboxChipManager) { + @Nullable OmniboxChipManager omniboxChipManager, + @Nullable BottomBarHostManager bottomBarHostManager) { super( activity, bottomControlsStacker, @@ -254,6 +259,8 @@ public class BraveToolbarManager extends ToolbarManager omniboxFocusStateSupplier, promoShownOneshotSupplier, windowAndroid, + activityResultTracker, + deviceLockActivityLauncher, chromeAndroidTaskSupplier, isInOverviewModeSupplier, modalDialogManagerSupplier, @@ -272,7 +279,6 @@ public class BraveToolbarManager extends ToolbarManager readAloudControllerSupplier, desktopWindowStateManager, lockTopControlsTokenJar, - multiInstanceManager, tabBookmarkerSupplier, menuButtonVisibilityDelegate, topControlsStacker, @@ -280,7 +286,8 @@ public class BraveToolbarManager extends ToolbarManager xrSpaceModeObservableSupplier, pageZoomManager, snackbarManager, - omniboxChipManager); + omniboxChipManager, + bottomBarHostManager); mOmniboxFocusStateSupplier = omniboxFocusStateSupplier; mLayoutStateProviderSupplier = layoutStateProviderSupplier; @@ -301,10 +308,11 @@ public class BraveToolbarManager extends ToolbarManager mBraveHomepageStateListener = () -> { - if (mBottomControlsCoordinatorSupplier != null - && mBottomControlsCoordinatorSupplier.get() + if (mTabGroupUiBottomControlsCoordinatorSupplier != null + && mTabGroupUiBottomControlsCoordinatorSupplier.get() instanceof BraveBottomControlsCoordinator) { - ((BraveBottomControlsCoordinator) mBottomControlsCoordinatorSupplier.get()) + ((BraveBottomControlsCoordinator) + mTabGroupUiBottomControlsCoordinatorSupplier.get()) .updateHomeButtonState(); } }; @@ -336,7 +344,8 @@ public class BraveToolbarManager extends ToolbarManager } private void initBraveBottomControls() { - ViewStub bottomControlsStub = (ViewStub) mActivity.findViewById(R.id.bottom_controls_stub); + ViewStub bottomControlsStub = + (ViewStub) mActivity.findViewById(R.id.tab_group_ui_container_stub); mBottomControls = (BraveScrollingBottomViewResourceFrameLayout) bottomControlsStub.inflate(); @@ -399,6 +408,7 @@ public class BraveToolbarManager extends ToolbarManager mFullscreenManager, mEdgeToEdgeControllerSupplier, mBottomControls, + LayerType.TABSTRIP_TOOLBAR, bottomControlsContentDelegateSupplier, mTabObscuringHandler, mOverlayPanelVisibilitySupplier, @@ -441,10 +451,11 @@ public class BraveToolbarManager extends ToolbarManager mActivity.findViewById(R.id.control_container), closeAllTabsAction); } - assert mBottomControlsCoordinatorSupplier != null + assert mTabGroupUiBottomControlsCoordinatorSupplier != null : "It must not be null at this point! Something has changed in the upstream!"; - mBottomControlsCoordinatorSupplier.set(bottomControlsCoordinator); - mBottomControls.setBottomControlsCoordinatorSupplier(mBottomControlsCoordinatorSupplier); + mTabGroupUiBottomControlsCoordinatorSupplier.set(bottomControlsCoordinator); + mBottomControls.setBottomControlsCoordinatorSupplier( + mTabGroupUiBottomControlsCoordinatorSupplier); updateBraveBottomControlsVisibility(); if (mIsBraveBottomControlsVisible) { mBottomControls.setVisibility(View.VISIBLE); @@ -535,8 +546,8 @@ public class BraveToolbarManager extends ToolbarManager protected void onOrientationChange() { if (mActionModeController != null) mActionModeController.showControlsOnOrientationChange(); - if (mBottomControlsCoordinatorSupplier != null - && mBottomControlsCoordinatorSupplier.get() != null + if (mTabGroupUiBottomControlsCoordinatorSupplier != null + && mTabGroupUiBottomControlsCoordinatorSupplier.get() != null && BottomToolbarConfiguration.isBraveBottomControlsEnabled()) { boolean isBraveBottomControlsVisible = mCurrentOrientation != Configuration.ORIENTATION_LANDSCAPE; @@ -564,10 +575,10 @@ public class BraveToolbarManager extends ToolbarManager currentTab == null || bridge == null || bridge.isEditBookmarksEnabled(); mToolbar.updateBookmarkButton(isBookmarked, editingAllowed); - if (mBottomControlsCoordinatorSupplier != null - && mBottomControlsCoordinatorSupplier.get() + if (mTabGroupUiBottomControlsCoordinatorSupplier != null + && mTabGroupUiBottomControlsCoordinatorSupplier.get() instanceof BraveBottomControlsCoordinator) { - ((BraveBottomControlsCoordinator) mBottomControlsCoordinatorSupplier.get()) + ((BraveBottomControlsCoordinator) mTabGroupUiBottomControlsCoordinatorSupplier.get()) .updateBookmarkButton(isBookmarked, editingAllowed); } } @@ -587,10 +598,10 @@ public class BraveToolbarManager extends ToolbarManager if (mToolbar instanceof BraveTopToolbarCoordinator) { ((BraveTopToolbarCoordinator) mToolbar).onBottomControlsVisibilityChanged(visible); } - if (mBottomControlsCoordinatorSupplier != null - && mBottomControlsCoordinatorSupplier.get() + if (mTabGroupUiBottomControlsCoordinatorSupplier != null + && mTabGroupUiBottomControlsCoordinatorSupplier.get() instanceof BraveBottomControlsCoordinator) { - ((BraveBottomControlsCoordinator) mBottomControlsCoordinatorSupplier.get()) + ((BraveBottomControlsCoordinator) mTabGroupUiBottomControlsCoordinatorSupplier.get()) .setBottomToolbarVisible(visible); } } diff --git a/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsCoordinator.java b/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsCoordinator.java index c4774a6e5bc..60792fd4e1e 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsCoordinator.java +++ b/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsCoordinator.java @@ -22,6 +22,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.bookmarks.BookmarkModel; import org.chromium.chrome.browser.browser_controls.BottomControlsStacker; +import org.chromium.chrome.browser.browser_controls.BottomControlsStacker.LayerType; import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; import org.chromium.chrome.browser.fullscreen.FullscreenManager; @@ -75,6 +76,7 @@ public class BraveBottomControlsCoordinator extends BottomControlsCoordinator { FullscreenManager fullscreenManager, MonotonicObservableSupplier edgeToEdgeControllerSupplier, ScrollingBottomViewResourceFrameLayout root, + @LayerType int layerType, OneshotSupplier contentDelegateSupplier, TabObscuringHandler tabObscuringHandler, NonNullObservableSupplier overlayPanelVisibilitySupplier, @@ -89,6 +91,7 @@ public class BraveBottomControlsCoordinator extends BottomControlsCoordinator { fullscreenManager, edgeToEdgeControllerSupplier, root, + layerType, contentDelegateSupplier, tabObscuringHandler, overlayPanelVisibilitySupplier, diff --git a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java index 0d49b3c3dde..39e17d2546c 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java @@ -107,6 +107,7 @@ import org.chromium.chrome.browser.toolbar.home_button.HomeButtonCoordinator; import org.chromium.chrome.browser.toolbar.menu_button.BraveMenuButtonCoordinator; import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator; import org.chromium.chrome.browser.toolbar.reload_button.ReloadButtonCoordinator; +import org.chromium.chrome.browser.toolbar.signin_button.SigninButtonCoordinator; import org.chromium.chrome.browser.toolbar.top.NavigationPopup.HistoryDelegate; import org.chromium.chrome.browser.user_education.UserEducationHelper; import org.chromium.chrome.browser.util.BraveConstants; @@ -1630,6 +1631,7 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout @Nullable BackButtonCoordinator backButtonCoordinator, @Nullable ForwardButtonCoordinator forwardButtonCoordinator, HomeButtonCoordinator homeButtonCoordinator, + @Nullable SigninButtonCoordinator signinButtonCoordinator, ThemeColorProvider themeColorProvider, IncognitoStateProvider incognitoStateProvider, @Nullable Supplier incognitoWindowCountSupplier) { @@ -1646,6 +1648,7 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout backButtonCoordinator, forwardButtonCoordinator, homeButtonCoordinator, + signinButtonCoordinator, themeColorProvider, incognitoStateProvider, incognitoWindowCountSupplier); diff --git a/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java b/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java index 26f46b406e7..6074ab321cf 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java @@ -24,6 +24,7 @@ import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsV import org.chromium.chrome.browser.browser_controls.TopControlsStacker; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.layouts.LayoutStateProvider; +import org.chromium.chrome.browser.omnibox.OmniboxStub; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabObscuringHandler; @@ -42,8 +43,15 @@ import org.chromium.chrome.browser.toolbar.top.NavigationPopup.HistoryDelegate; import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionDelegate; import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionHandler; import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.signin.SigninAndHistorySyncActivityLauncher; import org.chromium.chrome.browser.user_education.UserEducationHelper; +import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager; +import org.chromium.components.browser_ui.device_lock.DeviceLockActivityLauncher; +import org.chromium.ui.base.ActivityResultTracker; +import org.chromium.ui.base.WindowAndroid; +import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; @@ -99,7 +107,15 @@ public class BraveTopToolbarCoordinator extends TopToolbarCoordinator { TopControlsStacker topControlsStacker, BrowserControlsVisibilityManager browserControlsVisibilityManager, Supplier incognitoWindowCountSupplier, - MonotonicObservableSupplier profileSupplier) { + MonotonicObservableSupplier profileSupplier, + OneshotSupplier omniboxStubSupplier, + SigninAndHistorySyncActivityLauncher signinAndHistorySyncActivityLauncher, + WindowAndroid windowAndroid, + ActivityResultTracker activityResultTracker, + DeviceLockActivityLauncher deviceLockActivityLauncher, + BottomSheetController bottomSheetController, + ModalDialogManager modalDialogManager, + SnackbarManager snackbarManager) { super( controlContainer, toolbarLayout, @@ -136,7 +152,15 @@ public class BraveTopToolbarCoordinator extends TopToolbarCoordinator { topControlsStacker, browserControlsVisibilityManager, incognitoWindowCountSupplier, - profileSupplier); + profileSupplier, + omniboxStubSupplier, + signinAndHistorySyncActivityLauncher, + windowAndroid, + activityResultTracker, + deviceLockActivityLauncher, + bottomSheetController, + modalDialogManager, + snackbarManager); mBraveToolbarLayout = toolbarLayout; mBraveMenuButtonCoordinator = browsingModeMenuButtonCoordinator; diff --git a/android/java/res/layout/new_tab_page_layout.xml b/android/java/res/layout/new_tab_page_layout.xml index af0d92d4dd8..77caaa4b605 100644 --- a/android/java/res/layout/new_tab_page_layout.xml +++ b/android/java/res/layout/new_tab_page_layout.xml @@ -112,20 +112,10 @@ android:id="@+id/composeplate_view_stub" android:layout_width="match_parent" android:layout_height="@dimen/composeplate_view_height" - android:layout_marginTop="@dimen/composeplate_view_margin_top_v1" - android:layout_marginStart="@dimen/mvt_container_lateral_margin" - android:layout_marginEnd="@dimen/mvt_container_lateral_margin" - android:layout="@layout/composeplate_view_layout" - android:visibility="gone" /> - - @@ -156,13 +146,6 @@ android:layout_height="match_parent" android:layout="@layout/tab_switcher_module_container" /> - - + mSettingsActivityTestRule = + new SettingsActivityTestRule<>(AutofillPaymentMethodsFragment.class); + + private AutofillPaymentMethodsFragment mFragment; + + @Before + public void setUp() throws Exception { + mSettingsActivityTestRule.startSettingsActivity(); + mFragment = mSettingsActivityTestRule.getFragment(); + } + + @Test + @SmallTest + public void testLoyaltyCardsPrefRemoved() { + assertNull( + "loyalty_cards pref should be removed by BraveAutofillPaymentMethodsFragmentBase", + mFragment.findPreference(AutofillPaymentMethodsFragment.PREF_LOYALTY_CARDS)); + } +} diff --git a/android/javatests/org/chromium/chrome/browser/site_settings/BraveSiteSettingsTest.java b/android/javatests/org/chromium/chrome/browser/site_settings/BraveSiteSettingsTest.java index 74da2099aa2..d47a844c966 100644 --- a/android/javatests/org/chromium/chrome/browser/site_settings/BraveSiteSettingsTest.java +++ b/android/javatests/org/chromium/chrome/browser/site_settings/BraveSiteSettingsTest.java @@ -24,7 +24,6 @@ import org.chromium.components.browser_ui.site_settings.SiteSettings; @Batch(Batch.PER_CLASS) @RunWith(ChromeJUnit4ClassRunner.class) public class BraveSiteSettingsTest { - private static final String DIVIDER_KEY = "divider"; private static final String PERMISSION_AUTOREVOCATION_KEY = "permission_autorevocation"; private static final String SOLANA_CONNECTED_SITES_KEY = "solana_connected_sites"; @@ -40,17 +39,14 @@ public class BraveSiteSettingsTest { final SettingsActivity settingsActivity = SiteSettingsTestUtils.startSiteSettingsMenu(""); SiteSettings siteSettings = (SiteSettings) settingsActivity.getMainFragment(); Assert.assertNotNull(siteSettings); - Preference prefDivider = siteSettings.findPreference(DIVIDER_KEY); - Assert.assertNotNull(prefDivider); Preference prefPermissionAutorevocation = siteSettings.findPreference(PERMISSION_AUTOREVOCATION_KEY); Assert.assertNotNull(prefPermissionAutorevocation); Preference prefSolanaConnectedSites = siteSettings.findPreference(SOLANA_CONNECTED_SITES_KEY); Assert.assertNotNull(prefSolanaConnectedSites); - Assert.assertEquals(prefSolanaConnectedSites.getOrder(), prefDivider.getOrder() - 1); Assert.assertEquals( - prefSolanaConnectedSites.getOrder(), prefPermissionAutorevocation.getOrder() - 2); + prefSolanaConnectedSites.getOrder(), prefPermissionAutorevocation.getOrder() - 1); settingsActivity.finish(); } diff --git a/android/junit/BUILD.gn b/android/junit/BUILD.gn index e0933e4d348..b4d4e6a8b4d 100644 --- a/android/junit/BUILD.gn +++ b/android/junit/BUILD.gn @@ -106,8 +106,8 @@ if (is_android) { sources = [ "src/org/chromium/chrome/browser/rate/BraveAskPlayStoreRatingDialogTest.java" ] deps = [ - "//brave/third_party/android_deps:com_google_android_play_review_java", "//chrome/android/junit:chrome_junit_tests_helper", + "//third_party/android_deps:com_google_android_play_review_java", ] } diff --git a/android/junit/src/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegateUnitTest.java b/android/junit/src/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegateUnitTest.java index 4061780c665..638aad3bf0a 100644 --- a/android/junit/src/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegateUnitTest.java +++ b/android/junit/src/org/chromium/chrome/browser/tabbed_mode/BraveTabbedAppMenuPropertiesDelegateUnitTest.java @@ -56,16 +56,19 @@ import org.chromium.chrome.browser.feed.webfeed.WebFeedBridge; import org.chromium.chrome.browser.feed.webfeed.WebFeedBridgeJni; import org.chromium.chrome.browser.feed.webfeed.WebFeedSnackbarController; import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.hub.HubManager; +import org.chromium.chrome.browser.hub.Pane; +import org.chromium.chrome.browser.hub.PaneId; +import org.chromium.chrome.browser.hub.PaneManager; import org.chromium.chrome.browser.incognito.IncognitoUtils; import org.chromium.chrome.browser.incognito.IncognitoUtilsJni; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthController; import org.chromium.chrome.browser.layouts.LayoutStateProvider; import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher; +import org.chromium.chrome.browser.multiwindow.MultiWindowTestUtils; import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.preferences.BravePref; -import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.readaloud.ReadAloudController; @@ -169,6 +172,9 @@ public class BraveTabbedAppMenuPropertiesDelegateUnitTest { @Mock private TranslateBridge.Natives mTranslateBridgeJniMock; @Mock private PageZoomManager mPageZoomManagerMock; @Mock private DefaultBrowserPromoUtils mDefaultBrowserPromoUtilsMock; + @Mock private HubManager mHubManager; + @Mock private PaneManager mPaneManager; + @Mock private Pane mPane; private ShadowPackageManager mShadowPackageManager; @@ -176,6 +182,7 @@ public class BraveTabbedAppMenuPropertiesDelegateUnitTest { new OneshotSupplierImpl<>(); private final OneshotSupplierImpl mIncognitoReauthControllerSupplier = new OneshotSupplierImpl<>(); + private final OneshotSupplierImpl mHubManagerSupplier = new OneshotSupplierImpl<>(); private final SettableNullableObservableSupplier mBookmarkModelSupplier = ObservableSuppliers.createNullable(); private final SettableMonotonicObservableSupplier @@ -253,6 +260,12 @@ public class BraveTabbedAppMenuPropertiesDelegateUnitTest { Mockito.when(mTranslateBridgeJniMock.canManuallyTranslate(any(), anyBoolean())) .thenReturn(false); + mHubManagerSupplier.set(mHubManager); + when(mHubManager.getPaneManager()).thenReturn(mPaneManager); + when(mPaneManager.getFocusedPaneSupplier()) + .thenReturn(ObservableSuppliers.createMonotonic(mPane)); + when(mPane.getPaneId()).thenReturn(PaneId.TAB_SWITCHER); + PowerBookmarkUtils.setPriceTrackingEligibleForTesting(false); PowerBookmarkUtils.setPowerBookmarkMetaForTesting(PowerBookmarkMeta.newBuilder().build()); BraveTabbedAppMenuPropertiesDelegate delegate = @@ -272,15 +285,13 @@ public class BraveTabbedAppMenuPropertiesDelegateUnitTest { mIncognitoReauthControllerSupplier, mReadAloudControllerSupplier, mPageZoomManagerMock, + mHubManagerSupplier, /* openInAppMenuItemProvider= */ null); delegate.setIsJunitTesting(true); BaseRobolectricTestRule.runAllBackgroundAndUi(); mTabbedAppMenuPropertiesDelegate = Mockito.spy(delegate); - ChromeSharedPreferences.getInstance() - .removeKeysWithPrefix(ChromePreferenceKeys.MULTI_INSTANCE_URL); - ChromeSharedPreferences.getInstance() - .removeKeysWithPrefix(ChromePreferenceKeys.MULTI_INSTANCE_TAB_COUNT); + MultiWindowTestUtils.resetInstanceInfo(); CommerceFeatureUtilsJni.setInstanceForTesting(mCommerceFeatureUtilsJniMock); ShoppingServiceFactory.setShoppingServiceForTesting(mShoppingService); diff --git a/app/BUILD.gn b/app/BUILD.gn index b9515e107fd..15a464d6cd1 100644 --- a/app/BUILD.gn +++ b/app/BUILD.gn @@ -127,6 +127,7 @@ source_set("unit_tests") { "//base/test:test_support", "//brave/components/variations:buildflags", "//chrome/browser", + "//chrome/browser:browser_features", "//chrome/browser/devtools", "//chrome/browser/media/webrtc", "//chrome/browser/policy:policy_util", @@ -155,8 +156,10 @@ source_set("unit_tests") { "//components/metrics", "//components/metrics/private_metrics:private_metrics_features", "//components/metrics/structured:structured_metrics_features", + "//components/multistep_filter/core:features", "//components/network_time", "//components/omnibox/browser", + "//components/one_time_tokens/core/browser:features", "//components/optimization_guide/core", "//components/page_image_service", "//components/page_info/core", @@ -193,6 +196,7 @@ source_set("unit_tests") { ":command_ids", "//brave/components/commands/common", "//chrome/app:command_ids", + "//chrome/browser/sharing_hub", "//chrome/browser/ui/toasts", "//chrome/common:chrome_features", "//components/private_ai", diff --git a/app/DEPS b/app/DEPS index b284ee535b5..b6a04a73efc 100644 --- a/app/DEPS +++ b/app/DEPS @@ -37,6 +37,7 @@ include_rules += [ "+components/history_clusters/core/features.h", "+components/history_clusters/core/on_device_clustering_features.h", "+components/history_embeddings/core/history_embeddings_features.h", + "+components/multistep_filter/core/features.h", "+components/private_ai/features.h", "+components/lens/lens_features.h", "+components/manta/features.h", @@ -44,6 +45,7 @@ include_rules += [ "+components/metrics/structured/structured_metrics_features.h", "+components/network_time/network_time_tracker.h", "+components/omnibox/common/omnibox_features.h", + "+components/one_time_tokens/core/common/one_time_token_features.h", "+components/optimization_guide/core/optimization_guide_features.h", "+components/page_info/core/features.h", "+components/password_manager/core/common/password_manager_features.h", diff --git a/app/actor_strings.grdp b/app/actor_strings.grdp index cb7abd4b3dd..19e7e1c400c 100644 --- a/app/actor_strings.grdp +++ b/app/actor_strings.grdp @@ -59,9 +59,68 @@ $1Wikipedia - Gemini is working on your task... + + + Working on your task… + + + Task Paused + + + Needs your attention + + + Task Complete + You cannot interact with this tab until the task is paused or complete + + Review + + + Done + + + + Working on your task + + + Check your task + + + Task paused + + + Task interrupted + + + Task complete + + + View task + + + Pause task + + + Resume task + + + %sMy Task\nGemini is working on your task, and will let you know if more action is needed. + + + %sMy Task\nGemini needs your help to continue working on your task. + + + %sMy Task\nGemini stopped working on your task. + + + %sMy Task\nGemini completed your task, you can view it in Brave. + + + %sMy Task\nGemini stopped your task. Return to Brave to review it. + diff --git a/app/brave_origin_strings.grd b/app/brave_origin_strings.grd index d132b323155..0bc81dd9702 100644 --- a/app/brave_origin_strings.grd +++ b/app/brave_origin_strings.grd @@ -776,7 +776,7 @@ Brave is unable to recover your settings. Keep your passwords, bookmarks, and history perfectly synced across devices. Easily access the features you know and love by updating your default browser to Brave. Brave will be pinned to your taskbar for quick access. - Use Brave recommended browser settings + Set Brave as your default browser Get easy access to the features you know, love, and trust by setting Brave as your default browser. @@ -929,6 +929,12 @@ Brave is unable to recover your settings. Remove $1Brave Translate from Brave + + Extensions are add-ons that let you customize Brave. From staying organized, to simplifying everyday tasks, extensions help you make Brave your own. + + + Open Web Store + @@ -1134,9 +1140,8 @@ Brave is unable to recover your settings. - - - Sign in to Brave to ask AI mode about your tabs. You'll also get your passwords and more on all your devices. + + To ask AI Mode about your tab without leaving the page, sign in to Brave. You'll also get your passwords and more on all your devices. Sign in to Brave? @@ -1233,9 +1238,6 @@ Brave is unable to recover your settings. Get the Brave app to save passwords on the go - - Sign in to Brave to get your passwords, bookmarks, and more on all your devices - @@ -2405,6 +2407,9 @@ Brave is unable to recover your settings. Sign in to Brave + + Let's get your Brave ready + @@ -2818,7 +2823,7 @@ Brave is unable to recover your settings. Try Gemini in Brave - + Open Gemini in Brave @@ -3059,6 +3064,9 @@ Brave is unable to recover your settings. Indigo tooltip text + + Indigo is available for this page + Google Chrome Beta diff --git a/app/brave_strings.grd b/app/brave_strings.grd index 60b7e42e332..c6a385b8a4b 100644 --- a/app/brave_strings.grd +++ b/app/brave_strings.grd @@ -776,7 +776,7 @@ Brave is unable to recover your settings. Keep your passwords, bookmarks, and history perfectly synced across devices. Easily access the features you know and love by updating your default browser to Brave. Brave will be pinned to your taskbar for quick access. - Use Brave recommended browser settings + Set Brave as your default browser Get easy access to the features you know, love, and trust by setting Brave as your default browser. @@ -929,6 +929,12 @@ Brave is unable to recover your settings. Remove $1Brave Translate from Brave + + Extensions are add-ons that let you customize Brave. From staying organized, to simplifying everyday tasks, extensions help you make Brave your own. + + + Open Web Store + @@ -1134,9 +1140,8 @@ Brave is unable to recover your settings. - - - Sign in to Brave to ask AI mode about your tabs. You'll also get your passwords and more on all your devices. + + To ask AI Mode about your tab without leaving the page, sign in to Brave. You'll also get your passwords and more on all your devices. Sign in to Brave? @@ -1233,9 +1238,6 @@ Brave is unable to recover your settings. Get the Brave app to save passwords on the go - - Sign in to Brave to get your passwords, bookmarks, and more on all your devices - @@ -2405,6 +2407,9 @@ Brave is unable to recover your settings. Sign in to Brave + + Let's get your Brave ready + @@ -2818,7 +2823,7 @@ Brave is unable to recover your settings. Try Gemini in Brave - + Open Gemini in Brave @@ -3059,6 +3064,9 @@ Brave is unable to recover your settings. Indigo tooltip text + + Indigo is available for this page + Google Chrome Beta diff --git a/app/brave_strings_override.grd b/app/brave_strings_override.grd index c15f7a9f8c1..93831a7a29b 100644 --- a/app/brave_strings_override.grd +++ b/app/brave_strings_override.grd @@ -208,7 +208,10 @@ If you update this file, be sure also to update google_chrome_strings.grd. --> - + + Open Web Store + + This extension violates the Web Store policy, and might be unsafe. Remove it from Brave so it can no longer see and change your data on sites you visit, including your personal info. diff --git a/app/feature_defaults_unittest.cc b/app/feature_defaults_unittest.cc index 2b91cfe1e12..38c8cd738f3 100644 --- a/app/feature_defaults_unittest.cc +++ b/app/feature_defaults_unittest.cc @@ -35,6 +35,7 @@ #include "components/metrics/metrics_features.h" #include "components/metrics/private_metrics/private_metrics_features.h" #include "components/metrics/structured/structured_metrics_features.h" +#include "components/multistep_filter/core/features.h" #include "components/network_time/network_time_tracker.h" #include "components/omnibox/common/omnibox_features.h" #include "components/optimization_guide/core/optimization_guide_features.h" @@ -98,9 +99,6 @@ TEST(FeatureDefaultsTest, DisabledFeatures) { &autofill::features::kAutofillEnableBuyNowPayLater, &autofill::features::kAutofillEnableCardBenefitsForAmericanExpress, &autofill::features::kAutofillEnableCardBenefitsForBmo, -#if BUILDFLAG(IS_ANDROID) - &autofill::features::kAutofillEnableLoyaltyCardsFilling, -#endif // BUILDFLAG(IS_ANDROID) &autofill::features::debug::kAutofillServerCommunication, &blink::features::kAdInterestGroupAPI, &blink::features::kAIProofreadingAPI, @@ -159,13 +157,11 @@ TEST(FeatureDefaultsTest, DisabledFeatures) { #if BUILDFLAG(ENABLE_DEVTOOLS_FRONTEND) &features::kDevToolsNewPermissionDialog, #endif // BUILDFLAG(ENABLE_DEVTOOLS_FRONTEND) - &features::kDevToolsPrivacyUI, &features::kDevToolsUseGcaApi, &features::kDigitalGoodsApi, &features::kFedCm, #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) &features::kFewerUpdateConfirmations, - &features::kShortcutsNotApps, #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) &features::kPdfInfoBar, @@ -178,9 +174,8 @@ TEST(FeatureDefaultsTest, DisabledFeatures) { &features::kPrivacySandboxAdsAPIsM1Override, #if !BUILDFLAG(IS_ANDROID) &features::kPwaNavigationCapturing, - &features::kReportPakFileIntegrity, #endif - &features::kSCTAuditing, + &features::kSCTAuditingHashdance, &features::kServiceWorkerAutoPreload, &features::kTabHoverCardImages, #if !BUILDFLAG(IS_ANDROID) @@ -208,6 +203,7 @@ TEST(FeatureDefaultsTest, DisabledFeatures) { &metrics::features::kStructuredMetrics, &metrics::private_metrics::kPrivateMetricsFeature, &metrics::structured::kPhoneHubStructuredMetrics, + &multistep_filter::kMultistepFilter, &net::features::kEnableWebTransportDraft07, &net::features::kTpcdMetadataGrants, &net::features::kWaitForFirstPartySetsInit, @@ -220,7 +216,6 @@ TEST(FeatureDefaultsTest, DisabledFeatures) { &ntp_features::kNtpAlphaBackgroundCollections, &ntp_features::kNtpBackgroundImageErrorDetection, &ntp_features::kNtpChromeCartModule, - &omnibox::kDocumentProviderNoSyncRequirement, &omnibox::kMlUrlScoring, #if BUILDFLAG(IS_ANDROID) &omnibox::kOmniboxMobileParityUpdateV2, @@ -254,7 +249,6 @@ TEST(FeatureDefaultsTest, DisabledFeatures) { &segmentation_platform::features::kSegmentationPlatformTimeDelaySampling, &subresource_filter::kAdTagging, &switches::kSyncEnableBookmarksInTransportMode, - &syncer::kSyncAutofillLoyaltyCard, &syncer::kSyncDetermineAccountManagedStatus, &variations::kReportOmniboxAutofocusHeader, &webapps::features::kWebAppsEnableMLModelForPromotion, @@ -283,7 +277,6 @@ TEST(FeatureDefaultsTest, EnabledFeatures) { &media::kEnableTabMuting, &net::features::kPartitionConnectionsByNetworkIsolationKey, #if !BUILDFLAG(IS_ANDROID) - &features::kSideBySide, &sharing_hub::kDesktopScreenshots, #endif &network::features::kLocalNetworkAccessChecksWebSockets, diff --git a/app/generate_command_metadata.py b/app/generate_command_metadata.py index 75a2376bf93..bb857154f35 100644 --- a/app/generate_command_metadata.py +++ b/app/generate_command_metadata.py @@ -137,6 +137,7 @@ SUPPORTED_CHROMIUM_COMMANDS = [ "IDC_SHOW_MANAGEMENT_PAGE", "IDC_SHOW_PASSWORD_MANAGER", "IDC_SHOW_PAYMENT_METHODS", + "IDC_SHOW_READING_MODE_KEYBOARD", "IDC_STATUS_TRAY_KEEP_CHROME_RUNNING_IN_BACKGROUND", "IDC_STOP", "IDC_TAB_SEARCH_CLOSE", @@ -291,7 +292,8 @@ EXISTING_TRANSLATIONS = { "IDS_TAB_GROUP_HEADER_CXMENU_NEW_TAB_IN_GROUP", "IDC_WINDOW_BRING_ALL_TABS": "IDS_TAB_CXMENU_BRING_ALL_TABS_TO_THIS_WINDOW", "IDC_WINDOW_NAME_GROUP": "IDS_TAB_GROUP_HEADER_BUBBLE_TITLE_PLACEHOLDER", - "IDC_FORCE_PASTE": "IDS_FORCE_PASTE" + "IDC_FORCE_PASTE": "IDS_FORCE_PASTE", + "IDC_SHOW_READING_MODE_KEYBOARD": "IDS_SHOW_READING_MODE_SIDE_PANEL" } diff --git a/app/generated_resources.grd b/app/generated_resources.grd index e3bbc20fb48..acdf6436e5e 100644 --- a/app/generated_resources.grd +++ b/app/generated_resources.grd @@ -2299,7 +2299,7 @@ are declared in tools/grit/grit_args.gni. - Email automaticaly verified + Email automatically verified @@ -2415,7 +2415,7 @@ are declared in tools/grit/grit_args.gni. Actions - Downloaded by <a href="$1adblock.com">$2The Best Brave Extension Ever</a> + Downloaded by extension: <a href="$1adblock.com">$2The Best Brave Extension Ever</a> From $1https://example.com @@ -2674,7 +2674,7 @@ are declared in tools/grit/grit_args.gni. Stop/Reload - + Home @@ -3109,6 +3109,9 @@ are declared in tools/grit/grit_args.gni. Scanning... + + Checking for safety... + This file might be a virus or malware.$1You can send it to Google Safe Browsing to check if it's unsafe. Scans usually take a few seconds. @@ -4110,55 +4113,6 @@ are declared in tools/grit/grit_args.gni. postalCode - - PKCS #1 RSA Encryption - - - PKCS #1 MD2 With RSA Encryption - - - PKCS #1 MD4 With RSA Encryption - - - PKCS #1 MD5 With RSA Encryption - - - PKCS #1 SHA-1 With RSA Encryption - - - PKCS #1 SHA-256 With RSA Encryption - - - PKCS #1 SHA-384 With RSA Encryption - - - PKCS #1 SHA-512 With RSA Encryption - - - X9.62 ECDSA Signature with SHA-1 - - - X9.62 ECDSA Signature with SHA-256 - - - X9.62 ECDSA Signature with SHA-384 - - - X9.62 ECDSA Signature with SHA-512 - - - Elliptic Curve Public Key - - - SECG elliptic curve secp256r1 (aka ANSI X9.62 prime256v1, NIST P-256) - - - SECG elliptic curve secp384r1 (aka NIST P-384) - - - SECG elliptic curve secp521r1 (aka NIST P-521) - - Netscape Certificate Type @@ -4246,36 +4200,9 @@ are declared in tools/grit/grit_args.gni. Extended Key Usage - - Authority Information Access - Signing - - Non-repudiation - - - Key Encipherment - - - Data Encipherment - - - Key Agreement - - - Certificate Signer - - - CRL Signer - - - Encipher Only - - - Decipher Only - Is a Certification Authority @@ -4288,12 +4215,6 @@ are declared in tools/grit/grit_args.gni. unlimited - - Certification Practice Statement Pointer - - - User Notice - Unused @@ -4372,24 +4293,12 @@ are declared in tools/grit/grit_args.gni. Microsoft Domain GUID - - Any - TLS WWW Server Authentication TLS WWW Client Authentication - - Code Signing - - - Email Protection - - - Time Stamping - Signing OCSP Responses @@ -5797,12 +5706,6 @@ are declared in tools/grit/grit_args.gni. - - Allow $13? - - - Allowed - Click to allow "$1Extension A" on $2google.com @@ -6063,11 +5966,6 @@ Keep your key file in a safe place. You will need it to create new versions of y Hide Details - - - Access denied. - - Extension error @@ -6278,6 +6176,12 @@ Keep your key file in a safe place. You will need it to create new versions of y + + Allow $13? + + + Allowed + Click to allow on $1google.com: @@ -6336,34 +6240,34 @@ Keep your key file in a safe place. You will need it to create new versions of y Extensions installed by your administrator can still read and change this site - + To apply your updated settings to this site, reload this page - + Reload - + Reload page - + Requests access - + Allow - + Allow extension to read and change this site - + Allow $1AdBlock to read and change this site - + Dismiss - + Dismiss request - + Dismiss request for $1AdBlock @@ -6566,8 +6470,8 @@ Keep your key file in a safe place. You will need it to create new versions of y } - - Manage + + Manage permissions for parent app @@ -7029,6 +6933,10 @@ Keep your key file in a safe place. You will need it to create new versions of y You are using an unsupported feature flag: $1SignedHTTPExchange. Stability and security will suffer. + + Brave is loading flags from a command-line file. Stability and security may be affected. + + You are using an unsupported environment variable: $1SSLKEYLOGFILE. Stability and security will suffer. @@ -7343,32 +7251,31 @@ Keep your key file in a safe place. You will need it to create new versions of y Ask $1Brave or type a URL - - Ask Brave about this tab - - - Ask Brave about this tab: $1 - Ask Brave about this page Ask Brave about this page: $1 - - Search this tab with Google Lens - - - Search this tab with Google Lens: $1 - - - Search this page with Google Lens - - - Search this page with Google Lens: $1 + + Search with Google Lens + + + + Allow Search to Access Drive Content? + + + Your Google Drive content is accessed only to provide this file search feature. It is not used to improve Brave Search. Brave will not access your Google Drive content unless you explicitly upload a file. + + + Cancel + + + Connect + Search Brave or type a URL @@ -7555,7 +7462,10 @@ Keep your key file in a safe place. You will need it to create new versions of y Customize this page with AI - + + Close + + Dismiss @@ -8430,6 +8340,9 @@ Keep your key file in a safe place. You will need it to create new versions of y Add file + + Add from Drive + Add a tab and more @@ -8437,7 +8350,7 @@ Keep your key file in a safe place. You will need it to create new versions of y Add tabs and more - Add a tab or file to your search, and also use a tool + Enhance your search with tabs, files, or an AI tool Suggestions based on your <a target="_blank" href="$1">Brave activity</a> @@ -8460,7 +8373,7 @@ Keep your key file in a safe place. You will need it to create new versions of y Models - + Auto @@ -9131,6 +9044,16 @@ Keep your key file in a safe place. You will need it to create new versions of y Customize toolbar + + + Tabs From Other Devices + + + + + Tabs from other devices + + Unpin @@ -9395,6 +9318,9 @@ Keep your key file in a safe place. You will need it to create new versions of y Reading mode + + Reading mode opened, full page view + Reading mode isn’t available on this page @@ -9923,36 +9849,6 @@ Keep your key file in a safe place. You will need it to create new versions of y Search tabs - - - Organize tabs? - - - Organize tabs? - - - Dismiss suggestion - - - Send feedback for Suggested Groups - - - - Group Tabs With AI - - - - - Group tabs with AI - - - - Right-click on the tab group name to edit this group or click to collapse - - - Select the tab group and activate the context menu to edit - - Complete your split view @@ -10006,6 +9902,15 @@ Keep your key file in a safe place. You will need it to create new versions of y Create split view + + $1Left View now $250% wide, $3Right View now $450% wide. + + + Left + + + Right + @@ -10034,6 +9939,15 @@ Keep your key file in a safe place. You will need it to create new versions of y You can move your tabs back to the top by right-clicking any tab and selecting “Show Tabs Horizontally” + + Turn on Auto Expanding Tabs + + + Turn off Auto Expanding Tabs + + + Expand Collapsed Tabs by Hovering + @@ -10060,6 +9974,15 @@ Keep your key file in a safe place. You will need it to create new versions of y You can move your tabs back to the top by right-clicking any tab and selecting “Show tabs horizontally” + + Turn on auto expanding tabs + + + Turn off auto expanding tabs + + + Expand collapsed tabs by hovering + @@ -10068,6 +9991,12 @@ Keep your key file in a safe place. You will need it to create new versions of y See entire tab titles, easily manage tab groups, and free up vertical space by moving your tabs to the side. + + You can now expand your tabs by hovering over them. To turn this off, right-click here. + + + You can now expand your tabs by hovering over them. To turn this on, right-click here. + Vertical Tab Strip Resize Handle (Draggable) @@ -10152,6 +10081,22 @@ Keep your key file in a safe place. You will need it to create new versions of y Open "$1Compact SUV Comparison" in AI Mode + + + Unpin Tab Search + + + Pin Tab Search + + + + + Unpin tab search + + + Pin tab search + + Unpin @@ -10464,7 +10409,7 @@ Keep your key file in a safe place. You will need it to create new versions of y Full screen disabled - + Home @@ -10563,9 +10508,6 @@ Keep your key file in a safe place. You will need it to create new versions of y Search tabs - - Group related tabs - Scroll towards the first tab @@ -10750,7 +10692,7 @@ Keep your key file in a safe place. You will need it to create new versions of y {NUM_TABS, plural, =1 {1 Tab} other {# Tabs}} - +$12 More + + $12 More @@ -10764,7 +10706,7 @@ Keep your key file in a safe place. You will need it to create new versions of y {NUM_TABS, plural, =1 {1 tab} other {# tabs}} - +$12 more + + $12 more @@ -11576,6 +11518,12 @@ Check your passwords anytime in $1Brave P Unmute microphone + + Mute + + + Unmute + Turn on camera @@ -11765,9 +11713,6 @@ Check your passwords anytime in $1Brave P New window - - Organize similar tabs - Compare tabs @@ -11884,9 +11829,6 @@ Check your passwords anytime in $1Brave P New Window - - Organize Similar Tabs - Compare Tabs @@ -12109,141 +12051,6 @@ Check your passwords anytime in $1Brave P - - Organize - - - Create group - - - Create groups - - - Dismiss - - - New Tabs - - - Stay organized with tab groups - - - Keep your tabs tidy with AI - - - You can check for tab group suggestions anytime - - - Things to consider - - - This feature uses AI and won't always get it right - - - Your tabs, page titles, and URLs are sent to Brave - - - Data may be seen by trained reviewers to improve this feature - - - Sign in to let Brave suggest tab groups and keep your tabs organized - - - Check now - - - Let's go - - - Sign in - - - Check now if tabs can be organized - - - Let's go and organize your tabs - - - Sign in to let Brave suggest tab groups - - - Grouping your tabs… - - - There are no similar tabs to organize, but you might like these groups - - - Tab group suggested - - - $12 Tab groups suggested - - - Something went wrong - - - No groups found - - - Tab group suggestions are currently unavailable. You can <a href="#">refresh now</a> or try again later - - - You can <a href="#">refresh now</a> or try again later after you open new similar tabs - - - Tip: - - - You can create your own tab group. - - - Show me how - - - Launch tab group tutorial - - - Your tab titles and URLs are sent to Brave and may be seen by human reviewers to improve this feature. - - - This is an experimental AI feature and won't always get it right. - - - Learn how to automatically organize your tabs - - - Learn more about this AI feature - - - Remove $1New Tab from tab group - - - Exclude tab from suggested group - - - Clear - - - Clear group suggestions - - - Tab group name: $1My tab group - - - Edit group name $1My tab group - - - Remove group $1My tab group - - - Thumbs down submits feedback that you dislike this tab group suggestion - - - Thumbs up submits feedback that you like this tab group suggestion - - - Tab excluded from suggested group - @@ -13337,28 +13144,28 @@ Check your passwords anytime in $1Brave P - - Sign in to Security Device + + Unlock Security Device - - Please sign in to $1Software Security Device to import client certificate from $2www.google.com. + + Please unlock $1Software Security Device to import client certificate from $2www.google.com. - - Please sign in to $1Software Security Device to authenticate to $2www.google.com with your certificate. + + Please unlock $1Software Security Device to authenticate to $2www.google.com with your certificate. - - Please sign in to $1Software Security Device. + + Please unlock $1Software Security Device. - - Please sign in to $1Software Security Device to import the client certificate. + + Please unlock $1Software Security Device to import the client certificate. - - Please sign in to $1Software Security Device to export the client certificate. + + Please unlock $1Software Security Device to export the client certificate. - - Password: + + PIN: - + Unlock @@ -13656,15 +13463,6 @@ Check your passwords anytime in $1Brave P Send this page - - Active today - - - Active $1- 1 day ago day ago - - - Active $1- 3 days ago days ago - Shared from $1Ted's Pixel2 @@ -15698,7 +15496,7 @@ Please help our engineers fix this problem. Tell us what happened right before y Task Manager - + Home @@ -15843,7 +15641,7 @@ Please help our engineers fix this problem. Tell us what happened right before y - + Home @@ -16367,66 +16165,6 @@ Please help our engineers fix this problem. Tell us what happened right before y - - $1Compose with $2GMail App - - - $1Harry Potter - $2Brave Search - - - $1Harry Potter, $2Brave Search - - - Remove the suggestion $1Harry Potter - - - New tab - - - New window - - - New tabbed window - - - Pin to shelf - - - Unpin from shelf - - - Pinned by administrator - - - Sort by - - - Name - - - Color - - - Uninstall - - - Remove - - - New window - - - New Private window - - - OEM folder - - - Linux apps - - - $1ManagedVM apps - Open $1Fortnite - $2GeForce Now @@ -16468,8 +16206,8 @@ Please help our engineers fix this problem. Tell us what happened right before y Also share system audio - - Also share application audio (from all its windows) + + Also share app audio (from all its windows and related apps) Also share all audio outputs @@ -18342,7 +18080,7 @@ Please help our engineers fix this problem. Tell us what happened right before y This file - $1foo.txt has sensitive or dangerous data. Your organization will let you save it to cloud storage or discard it + $1foo.txt has sensitive data. Your organization will let you save it to cloud storage or discard it @@ -18760,6 +18498,15 @@ Please help our engineers fix this problem. Tell us what happened right before y You can't sign in using this account + + Sign in with $1google.com + + + Signing in ... + + + Sign up with $1google.com + @@ -18995,6 +18742,18 @@ Please help our engineers fix this problem. Tell us what happened right before y Undo + + Apply $1 filters from $2 ago? $3 + + + Apply + + + Recall $1 filters from $2? $3 + + + Apply + Link copied @@ -19028,9 +18787,21 @@ Please help our engineers fix this problem. Tell us what happened right before y Gemini Selection Overlay + + Select any text or image to ask Gemini + Copied to clipboard + + Split view created + + + Separate views + + + Undo + @@ -19063,7 +18834,7 @@ Please help our engineers fix this problem. Tell us what happened right before y Forward - + Home @@ -19163,11 +18934,14 @@ Please help our engineers fix this problem. Tell us what happened right before y The installation could not be completed. Please try again or close this window - - This application can't be installed by the user. Please contact the developer + + Can't install app - - This application has been blocked. Please contact the developer + + To learn why, contact the app developer + + + This app is potentially dangerous and was blocked by Brave Retry @@ -19449,6 +19223,15 @@ Please help our engineers fix this problem. Tell us what happened right before y + + Don't show this promo + + + More actions + + + More actions for promo + Add extensions to stay organized, simplify tasks, and enhance your browsing @@ -19685,6 +19468,9 @@ Please help our engineers fix this problem. Tell us what happened right before y Expand All + + Export History Files + App: $1Brave, Brave Beta, Brave Canary, {6BBAE539-2232-434A-A4E5-9A33560C6284} @@ -19721,6 +19507,12 @@ Please help our engineers fix this problem. Tell us what happened right before y Last Periodic Task Run: + + Load History Files + + + Failed to load history. Ensure files contain valid updater logs. + No applications are installed. @@ -19799,6 +19591,9 @@ Please help our engineers fix this problem. Tell us what happened right before y Remove filter + + View Local Data + Updater Scope @@ -19835,6 +19630,9 @@ Please help our engineers fix this problem. Tell us what happened right before y Version: + + {NUM_EVENTS, plural, =1 {Viewing history from 1 file} other {Viewing history from # files}} + Update operation failed @@ -19864,6 +19662,36 @@ Please help our engineers fix this problem. Tell us what happened right before y URL + + + + + Generated by Brave + + + Expand + + + Collapse + + + Regenerate + + + Replace original photo + + + Delete original photo + + + + + + Open in Brave + + + Not interested + diff --git a/app/generated_resources_override.grd b/app/generated_resources_override.grd index 0350c4d8c91..243cd897193 100644 --- a/app/generated_resources_override.grd +++ b/app/generated_resources_override.grd @@ -656,6 +656,10 @@ are declared in tools/grit/grit_args.gni. + + + + @@ -664,22 +668,22 @@ are declared in tools/grit/grit_args.gni. + + + + + + + + + + + + - - - - - - - - - - - - @@ -863,6 +867,7 @@ are declared in tools/grit/grit_args.gni. + @@ -1170,9 +1175,6 @@ are declared in tools/grit/grit_args.gni. - - New Private window - @@ -1381,6 +1383,9 @@ are declared in tools/grit/grit_args.gni. + + + diff --git a/app/glic_strings.grdp b/app/glic_strings.grdp index 10b5bf39716..516e352c9a2 100644 --- a/app/glic_strings.grdp +++ b/app/glic_strings.grdp @@ -8,6 +8,9 @@ You're sharing this tab with Gemini + + Dismiss suggestion + $1Wikipedia @@ -286,6 +289,9 @@ Customize how Gemini responds to you + + Allow experimental triggering + Let Brave browse for you @@ -304,12 +310,42 @@ Use Gemini carefully and <a href="$1" target="_blank">safely</a>. You are responsible for Gemini's actions during a task, including mistakes and <a href="$2" target="_blank">unexpected results</a> like purchases. + + Sites Gemini can sign you in to + + + Let Gemini automatically sign you in to complete tasks for you on the web + + + Sites and accounts + + + You’re offline. Check your internet connection to manage sites Gemini can sign you in to. + + + You've allowed Gemini to automatically sign you in to these sites and apps using your accounts + + + Sites where Gemini can sign you in will appear here + + + Remove permission for $1google.com + + + Remove permission + + + Gemini will no longer be able to sign you in to $1google.com + + + Couldn't remove permission. Try again later. + - + Pin Gemini - + Unpin Gemini @@ -393,7 +429,7 @@ - + Unpin @@ -415,14 +451,14 @@ Create Image with Gemini - Summarize this page with Gemini + Summarize this page with Gemini Create image with Gemini - Summarize this page with Gemini + Summarize this page with Gemini - Summarize this page + Summarize this page diff --git a/app/profiles_strings.grdp b/app/profiles_strings.grdp index fb5d3257e37..5a8b907cf35 100644 --- a/app/profiles_strings.grdp +++ b/app/profiles_strings.grdp @@ -188,9 +188,11 @@ - - - Continue the conversation with AI Mode + + Keep AI Mode nearby while you browse + + + To ask AI Mode about your tab without leaving the page, verify it's you. You'll also get your passwords and more on all your devices. @@ -852,6 +854,14 @@ You currently have $110 bookmarks, and more. Your organization, $2example.com, will be able to see and manage this data. + + + Your avatar + + + An icon indicating that this profile is managed by your organization + + Welcome, $1Charlie @@ -980,7 +990,7 @@ Continue without an account - + Don't sign in @@ -1071,6 +1081,9 @@ Store your passwords, bookmarks, and more + + Store your passwords, bookmarks, and settings + Don't sign in @@ -1093,12 +1106,24 @@ Sign In + + Use your Brave account or create a new one + + + Welcome, $1John! + Your device is managed by your organization. Administrators can access the data in any profile on this device. Your device is managed by $1example.com. Administrators can access the data in any profile on this device. + + Don't sign in + + + Next + diff --git a/app/settings_brave_strings.grdp b/app/settings_brave_strings.grdp index 348627e403f..ce972238332 100644 --- a/app/settings_brave_strings.grdp +++ b/app/settings_brave_strings.grdp @@ -106,6 +106,9 @@ Make Brave the default browser and pin to the taskbar + + You can use Brave anytime you click links in messages, documents, and other apps. It will also be pinned to your taskbar. + Brave cannot determine or set the default browser diff --git a/app/settings_strings.grdp b/app/settings_strings.grdp index 2b6672efd02..7c3bf8c056f 100644 --- a/app/settings_strings.grdp +++ b/app/settings_strings.grdp @@ -273,6 +273,9 @@ Tab position + + Auto expand tabs on hover + Allow split view drag-and-drop on left or right edge of window @@ -372,7 +375,10 @@ An extension is controlling this setting - The "$1Adblocker plusplus" extension is controlling this setting. To change your default search engine, <a href="#" id="disableLink">disable the extension</a> or <a target="_blank" href="$2" id="manageLink">manage its settings</a>. + The "$1Adblocker plusplus" extension is controlling this setting. To change your default search engine, <a href="#" id="disableLink">disable the extension</a> or <a href="#" id="manageLink">manage its settings</a>. + + + The "$1Adblocker plusplus" extension was added by your organization's policy and is controlling this setting. <a href="#" id="manageLink">See details</a> Delete @@ -553,9 +559,6 @@ Visit Brave Wallet to add or manage <a href="$1" target="_blank">loyalty cards</a> or Google Pay <a href="$2" target="_blank">payment methods</a> - - Your Brave Wallet passes - This card will be saved to this device only @@ -706,9 +709,6 @@ Autofill can offer to save info when you submit forms, like your driver's license or passport number - - Your content will not be used to improve AI. Your organization may change these settings at any time. - Saved information @@ -2381,6 +2381,12 @@ Manage extension + + No site shortcuts found + + + No feature or extension shortcuts found + @@ -3548,6 +3554,12 @@ The next time you visit, $1www.example.com will use default permissions + + Permissions you allow for $1Parent app will also be allowed for its installed apps. + + + Permissions you allow for $1Sub app will also be allowed for $2Parent app and its installed apps. + Delete site data? @@ -4134,6 +4146,14 @@ Use graphics acceleration when available + + + Enable Process Isolation + + + Process Isolation prevents other applications from tampering with $1Brave. + + Show system notifications about Brave features and tips @@ -4161,7 +4181,7 @@ On-device AI - To power features like scam detection, Brave can use AI models that run directly on your device without sending your data to Brave servers. When this is off, these features might not work. <a href="$1" target="_blank" aria-description="$2">Learn more about on-device AI</a> + To power features like scam detection, Brave can use AI models that run directly on your device. When this is off, these features might not work. <a href="$1" target="_blank" aria-description="$2">Learn more about on-device AI</a> @@ -4561,22 +4581,22 @@ - + AI innovations - + Reimagine Brave, supercharged with AI - + These features use AI, are in early development, and won’t always get it right - + When you use these features, relevant data is sent to Brave in order to create AI experiences - + Data sent to Brave may be seen by human reviewers to improve Brave AI’s technology - + Your organization manages how data collected by these features may be used. @@ -4595,26 +4615,6 @@ This feature is disabled by your organization - - - Tab organizer - - - Automatically creates tab groups based on your open tabs - - - Learn more about tab organizer - - - Automatically suggests and creates groups from your open tabs - - - Helps you focus on whatever you’re working on - - - When you use organize tabs, the titles and URLs of your open tabs are sent to Brave to generate suggested tab groups - - Easily compare similar products diff --git a/app/settings_strings_override.grdp b/app/settings_strings_override.grdp index 847cf304046..a2d762e0013 100644 --- a/app/settings_strings_override.grdp +++ b/app/settings_strings_override.grdp @@ -119,6 +119,8 @@ + + diff --git a/app/skills_strings.grdp b/app/skills_strings.grdp index dc2661226e8..ca2ddf56fa7 100644 --- a/app/skills_strings.grdp +++ b/app/skills_strings.grdp @@ -8,7 +8,7 @@ Deleted skill - + Undo @@ -21,120 +21,120 @@ - + Skills - + Search skills - + Main menu - + Manage your custom workflows powered by - + Gemini in Brave - + Skills isn't available - + To use Skills, sign in to Brave with a Brave account that has Gemini in Brave enabled - + No search results - + It looks like there aren't any search results for your search - + Browse skills - + Our top picks - + Unable to add skill - + You’ll find your skills here - + Skills can help you summarize web pages, search for great deals, and more - + Your skills - + Skills allow you to easily reuse prompts for repetitive tasks - + Delete - + Copy instructions - + Unable to add skill - + Add skill - + Edit skill - + Skills allow you to easily reuse prompts for repetitive tasks - + Name - + Give your skill a name - + Choose icon - + Instructions - + Example: Simplify this concept for a child who is 8 years old. Use simple language and an analogy they would understand. Keep the total explanation concise, under 150 words. - + Undo - + Redo - + Improve with Gemini - + Something went wrong - + $120,000 character limit reached - + Your skills get saved to your Brave sync chain, - + Unable to save. Try again - + Search - + Emoji Picker diff --git a/app/support_tool_strings.grdp b/app/support_tool_strings.grdp index ef85aab10be..b9ef7360428 100644 --- a/app/support_tool_strings.grdp +++ b/app/support_tool_strings.grdp @@ -179,7 +179,7 @@ ChromeOS Kiosk App Logs - Brave Updater + Updater diff --git a/app/vector_icons/BUILD.gn b/app/vector_icons/BUILD.gn index fc4ec3ec6c0..0f3e409972a 100644 --- a/app/vector_icons/BUILD.gn +++ b/app/vector_icons/BUILD.gn @@ -21,6 +21,7 @@ aggregate_vector_icons("brave_vector_icons") { "brave_sad.icon", "brave_tooltips_stopwatch.icon", "download_unlock.icon", + "incognito_profile.icon", "sidebar_toolbar_button.icon", "sidebar_toolbar_button_right.icon", "user_menu_guest.icon", diff --git a/chromium_src/chrome/app/vector_icons/incognito_profile.icon b/app/vector_icons/incognito_profile.icon similarity index 100% rename from chromium_src/chrome/app/vector_icons/incognito_profile.icon rename to app/vector_icons/incognito_profile.icon diff --git a/browser/ai_chat/BUILD.gn b/browser/ai_chat/BUILD.gn index e0c0bfc16a8..3ecd566a339 100644 --- a/browser/ai_chat/BUILD.gn +++ b/browser/ai_chat/BUILD.gn @@ -169,6 +169,7 @@ if (enable_print_preview) { "//brave/components/text_recognition/common/buildflags", "//chrome/browser/pdf", "//chrome/browser/pdf:pdf_pref_names", + "//chrome/browser/printing", "//chrome/browser/profiles", "//chrome/common:constants", "//chrome/services/printing/public/mojom", @@ -281,6 +282,7 @@ source_set("unit_tests") { "//brave/components/ai_chat/core/common", "//brave/components/ai_chat/core/common/mojom", "//brave/components/constants", + "//chrome/browser/ui/select_file_policy", "//chrome/common", "//chrome/test:test_support", "//components/paint_preview/common:test_utils", diff --git a/browser/ai_chat/DEPS b/browser/ai_chat/DEPS index e3cea864cae..346fed9908c 100644 --- a/browser/ai_chat/DEPS +++ b/browser/ai_chat/DEPS @@ -9,6 +9,9 @@ specific_include_rules = { "brave_open_ai_chat_permission_context_unittest\.cc": [ "+brave/components/permissions/contexts/brave_open_ai_chat_permission_context.h", ], + "content_agent_tool_provider\.cc": [ + "+components/actor/task_source_info.h", + ], "full_screenshotter_unittest\.cc" : [ "+components/paint_preview/common/mock_paint_preview_recorder.h", "+components/paint_preview/common/mojom", diff --git a/browser/ai_chat/ai_chat_policy_browsertest.cc b/browser/ai_chat/ai_chat_policy_browsertest.cc index 0989175459f..4f98de1c286 100644 --- a/browser/ai_chat/ai_chat_policy_browsertest.cc +++ b/browser/ai_chat/ai_chat_policy_browsertest.cc @@ -25,7 +25,6 @@ #include "chrome/browser/ui/omnibox/omnibox_controller.h" #include "chrome/browser/ui/omnibox/omnibox_view.h" #include "chrome/browser/ui/side_panel/side_panel_registry.h" -#include "chrome/browser/ui/tabs/public/tab_features.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/test/base/in_process_browser_test.h" @@ -170,10 +169,8 @@ IN_PROC_BROWSER_TEST_P(AIChatPolicyTest, ContextMenu) { } IN_PROC_BROWSER_TEST_P(AIChatPolicyTest, SidePanelRegistry) { - auto* registry = browser() - ->GetActiveTabInterface() - ->GetTabFeatures() - ->side_panel_registry(); + auto* registry = SidePanelRegistry::From(browser()->GetActiveTabInterface()); + ASSERT_TRUE(registry); auto* entry = registry->GetEntryForKey( SidePanelEntry::Key(SidePanelEntry::Id::kChatUI)); if (IsAIChatEnabledTest()) { diff --git a/browser/ai_chat/ai_chat_profiles_enabled_browsertest.cc b/browser/ai_chat/ai_chat_profiles_enabled_browsertest.cc index f0447894a6a..1858b5836a9 100644 --- a/browser/ai_chat/ai_chat_profiles_enabled_browsertest.cc +++ b/browser/ai_chat/ai_chat_profiles_enabled_browsertest.cc @@ -21,7 +21,6 @@ #include "chrome/browser/ui/omnibox/omnibox_controller.h" #include "chrome/browser/ui/omnibox/omnibox_view.h" #include "chrome/browser/ui/side_panel/side_panel_registry.h" -#include "chrome/browser/ui/tabs/public/tab_features.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" #include "components/omnibox/browser/autocomplete_controller.h" @@ -154,9 +153,8 @@ IN_PROC_BROWSER_TEST_P(AIChatProfilesEnabledTest, ContextMenu) { } IN_PROC_BROWSER_TEST_P(AIChatProfilesEnabledTest, SidePanelRegistry) { - auto* registry = browser_->GetActiveTabInterface() - ->GetTabFeatures() - ->side_panel_registry(); + auto* registry = SidePanelRegistry::From(browser_->GetActiveTabInterface()); + ASSERT_TRUE(registry); auto* entry = registry->GetEntryForKey( SidePanelEntry::Key(SidePanelEntry::Id::kChatUI)); if (IsAIChatEnabled()) { diff --git a/browser/ai_chat/content_agent_tool_provider.cc b/browser/ai_chat/content_agent_tool_provider.cc index 399e5f76ec4..81ddfa5e1f1 100644 --- a/browser/ai_chat/content_agent_tool_provider.cc +++ b/browser/ai_chat/content_agent_tool_provider.cc @@ -35,7 +35,9 @@ #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window/public/browser_window_interface.h" #include "chrome/common/actor.mojom.h" +#include "chrome/common/actor/action_result.h" #include "chrome/common/actor/task_id.h" +#include "components/actor/task_source_info.h" #include "components/optimization_guide/content/browser/page_content_proto_provider.h" #include "components/tabs/public/tab_interface.h" #include "content/public/browser/web_contents.h" @@ -77,6 +79,8 @@ ContentAgentToolProvider::ContentAgentToolProvider( // not have access to any tabs previously acted on in the same conversation, // we should create a new task inside `ToolProvider::OnNewGenerationLoop`. task_id_ = actor_service_->CreateTask( + actor::TaskSourceInfo(actor::TaskSourceInfo::Client::kExperimentalActor, + /*id=*/std::nullopt), AIChatEnterprisePolicyChecker::NoEnterprisePolicyChecker()); actor_task_state_changed_subscription_ = @@ -132,6 +136,8 @@ void ContentAgentToolProvider::StopAllTasks() { if (!task_id_.is_null()) { actor::TaskId stopping_task_id = std::move(task_id_); task_id_ = actor_service_->CreateTask( + actor::TaskSourceInfo(actor::TaskSourceInfo::Client::kExperimentalActor, + /*id=*/std::nullopt), AIChatEnterprisePolicyChecker::NoEnterprisePolicyChecker()); actor_service_->StopTask(stopping_task_id, actor::ActorTask::StoppedReason::kTaskComplete); @@ -212,12 +218,10 @@ void ContentAgentToolProvider::ExecuteActions( weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } -void ContentAgentToolProvider::OnActorTaskStateChanged( - actor::TaskId task_id, - actor::ActorTask::State task_state) { - DVLOG(4) << __func__ << " " << task_state; - if (!task_id_.is_null() && task_id_ == task_id && - kActorStatesToNotify.contains(task_state)) { +void ContentAgentToolProvider::OnActorTaskStateChanged(actor::ActorTask& task) { + DVLOG(4) << __func__ << " " << task.GetState(); + if (!task_id_.is_null() && task_id_ == task.id() && + kActorStatesToNotify.contains(task.GetState())) { NotifyTaskStateChanged(); } } @@ -238,9 +242,11 @@ void ContentAgentToolProvider::CreateTools() { void ContentAgentToolProvider::OnActionsFinished( Tool::UseToolCallback callback, - actor::mojom::ActionResultCode result_code, - std::optional index_of_failed_action, std::vector action_results) { + actor::mojom::ActionResultCode result_code = + actor::mojom::ActionResultCode::kOk; + std::optional index_of_failed_action; + ExtractErrorResult(action_results, &result_code, index_of_failed_action); if (result_code == actor::mojom::ActionResultCode::kOk) { // Send current page content for result diff --git a/browser/ai_chat/content_agent_tool_provider.h b/browser/ai_chat/content_agent_tool_provider.h index 5d8488d4363..73bcb21d3ea 100644 --- a/browser/ai_chat/content_agent_tool_provider.h +++ b/browser/ai_chat/content_agent_tool_provider.h @@ -63,8 +63,7 @@ class ContentAgentToolProvider : public ToolProvider, friend class ContentAgentToolProviderTest; friend class ContentAgentToolProviderBrowserTest; - void OnActorTaskStateChanged(actor::TaskId task_id, - actor::ActorTask::State task_state); + void OnActorTaskStateChanged(actor::ActorTask& task); void CreateTools(); @@ -72,8 +71,6 @@ class ContentAgentToolProvider : public ToolProvider, actor::mojom::ActionResultPtr result); void OnActionsFinished( Tool::UseToolCallback callback, - actor::mojom::ActionResultCode result_code, - std::optional index_of_failed_action, std::vector action_results); void ReceivedAnnotatedPageContent( Tool::UseToolCallback callback, diff --git a/browser/ai_chat/content_agent_tool_provider_browsertest.cc b/browser/ai_chat/content_agent_tool_provider_browsertest.cc index c41ddfdb2d0..3457a8f79db 100644 --- a/browser/ai_chat/content_agent_tool_provider_browsertest.cc +++ b/browser/ai_chat/content_agent_tool_provider_browsertest.cc @@ -137,8 +137,7 @@ class ContentAgentToolProviderBrowserTest : public InProcessBrowserTest { actor::mojom::ActionResultCode result_code, std::optional index_of_failed_action, std::vector action_results) { - tool_provider_->OnActionsFinished(std::move(callback), result_code, - std::move(index_of_failed_action), + tool_provider_->OnActionsFinished(std::move(callback), std::move(action_results)); } diff --git a/browser/ai_chat/upload_file_helper.cc b/browser/ai_chat/upload_file_helper.cc index c112f8552c1..e95002aa7ec 100644 --- a/browser/ai_chat/upload_file_helper.cc +++ b/browser/ai_chat/upload_file_helper.cc @@ -250,11 +250,8 @@ void UploadFileHelper::MultiFilesSelected( base::OnceCallback>, base::FilePath, std::optional>)> callback, - std::tuple>, base::FilePath> - result) { - auto file_data = std::get<0>(result); - auto filepath = std::get<1>(result); - + std::optional> file_data, + base::FilePath filepath) { if (!file_data) { std::move(callback).Run(std::make_tuple( std::nullopt, std::move(filepath), std::nullopt)); @@ -311,43 +308,41 @@ void UploadFileHelper::FileSelectionCanceled() { } } -void UploadFileHelper::OnFileRead( - std::tuple>, base::FilePath> result) { +void UploadFileHelper::OnFileRead(std::optional> data, + base::FilePath path) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - auto file_data = std::get<0>(result); - if (!file_data) { + if (!data) { std::move(upload_file_callback_).Run(std::nullopt); return; } // Determine file type based on extension and validate PDF content - auto file_type_opt = DetermineFileType(std::get<1>(result), *file_data); + auto file_type_opt = DetermineFileType(path, *data); if (file_type_opt && (*file_type_opt == mojom::UploadedFileType::kPdf || *file_type_opt == mojom::UploadedFileType::kText)) { // Return raw data; text extraction happens via ProcessPdfFile or // ProcessTextFile mojo endpoint. std::vector files; - files.push_back(mojom::UploadedFile::New(std::get<1>(result).AsUTF8Unsafe(), - file_data->size(), *file_data, - *file_type_opt, std::nullopt)); + files.push_back(mojom::UploadedFile::New(path.AsUTF8Unsafe(), data->size(), + *data, *file_type_opt, + std::nullopt)); std::move(upload_file_callback_).Run(std::make_optional(std::move(files))); } else if (file_type_opt && *file_type_opt == mojom::UploadedFileType::kImage) { // For images, process them as before UploadFileHelper::ProcessImageData( - &data_decoder_, *file_data, + &data_decoder_, *data, base::BindOnce(&UploadFileHelper::OnImageEncoded, - weak_ptr_factory_.GetWeakPtr(), - std::get<1>(result).AsUTF8Unsafe())); + weak_ptr_factory_.GetWeakPtr(), path.AsUTF8Unsafe())); } else { // Include as empty stub so the frontend can detect the unsupported // file and show an error (as opposed to nullopt which means the user // cancelled the file picker). std::vector files; - files.push_back(mojom::UploadedFile::New( - std::get<1>(result).AsUTF8Unsafe(), 0, std::vector(), - mojom::UploadedFileType::kText, std::nullopt)); + files.push_back( + mojom::UploadedFile::New(path.AsUTF8Unsafe(), 0, std::vector(), + mojom::UploadedFileType::kText, std::nullopt)); std::move(upload_file_callback_).Run(std::make_optional(std::move(files))); } } diff --git a/browser/ai_chat/upload_file_helper.h b/browser/ai_chat/upload_file_helper.h index b4d8d688582..2120bfaaef1 100644 --- a/browser/ai_chat/upload_file_helper.h +++ b/browser/ai_chat/upload_file_helper.h @@ -68,8 +68,8 @@ class UploadFileHelper : public ui::SelectFileDialog::Listener { const std::vector& files) override; void FileSelectionCanceled() override; - void OnFileRead( - std::tuple>, base::FilePath> result); + void OnFileRead(std::optional> data, + base::FilePath path); void OnImageEncoded(std::string filename, std::optional> output); diff --git a/browser/ai_chat/upload_file_helper_unittest.cc b/browser/ai_chat/upload_file_helper_unittest.cc index 83bf25a7c4b..bbca285a32f 100644 --- a/browser/ai_chat/upload_file_helper_unittest.cc +++ b/browser/ai_chat/upload_file_helper_unittest.cc @@ -16,7 +16,7 @@ #include "brave/components/ai_chat/core/common/mojom/ai_chat.mojom-forward.h" #include "brave/components/ai_chat/core/common/mojom/ai_chat.mojom-shared.h" #include "brave/components/ai_chat/core/common/mojom/common.mojom-forward.h" -#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" diff --git a/browser/android/brave_sync_worker.cc b/browser/android/brave_sync_worker.cc index a8ebbb1e93f..953f4d65208 100644 --- a/browser/android/brave_sync_worker.cc +++ b/browser/android/brave_sync_worker.cc @@ -138,8 +138,7 @@ void BraveSyncWorker::MarkFirstSetupComplete() { // We're done configuring, so notify SyncService that it is OK to start // syncing. - service->GetUserSettings()->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + service->GetUserSettings()->SetInitialSyncFeatureSetupComplete(); } void BraveSyncWorker::FinalizeSyncSetup(JNIEnv* env) { @@ -334,7 +333,7 @@ JNI_BraveSyncWorker_GetSeedHexFromWords( std::vector bytes; if (brave_sync::crypto::PassphraseToBytes32(str_seed_words, &bytes)) { DCHECK_EQ(bytes.size(), SEED_BYTES_COUNT); - sync_code_hex = base::HexEncode(&bytes.at(0), bytes.size()); + sync_code_hex = base::HexEncode(bytes); } else { VLOG(1) << __func__ << " PassphraseToBytes32 failed"; } diff --git a/browser/android/preferences/BUILD.gn b/browser/android/preferences/BUILD.gn index 1c7b408023f..9faba665ee9 100644 --- a/browser/android/preferences/BUILD.gn +++ b/browser/android/preferences/BUILD.gn @@ -24,6 +24,7 @@ source_set("preferences") { "//chrome/browser:browser_public_dependencies", "//chrome/browser/content_settings:content_settings_factory", "//chrome/browser/profiles:profile", + "//chrome/browser/profiles:profile_manager", "//chrome/common", "//components/content_settings/core/browser", "//components/content_settings/core/browser:cookie_settings", diff --git a/browser/bluetooth/BUILD.gn b/browser/bluetooth/BUILD.gn new file mode 100644 index 00000000000..7f6d4e3fabc --- /dev/null +++ b/browser/bluetooth/BUILD.gn @@ -0,0 +1,12 @@ +# Copyright (c) 2026 The Brave Authors. All rights reserved. +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at https://mozilla.org/MPL/2.0/. + +source_set("bluetooth") { + sources = [ + "brave_bluetooth_delegate.cc", + "brave_bluetooth_delegate.h", + ] + deps = [ "//chrome/browser/bluetooth" ] +} diff --git a/browser/bluetooth/brave_bluetooth_delegate.cc b/browser/bluetooth/brave_bluetooth_delegate.cc new file mode 100644 index 00000000000..df1e7567f02 --- /dev/null +++ b/browser/bluetooth/brave_bluetooth_delegate.cc @@ -0,0 +1,24 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#include "brave/browser/bluetooth/brave_bluetooth_delegate.h" + +#include "base/feature_list.h" +#include "third_party/blink/public/common/features.h" + +BraveBluetoothDelegate::BraveBluetoothDelegate(std::unique_ptr client) + : ChromeBluetoothDelegate(std::move(client)) {} + +ChromeBluetoothDelegate::AllowWebBluetoothResult +BraveBluetoothDelegate::AllowWebBluetooth( + content::BrowserContext* browser_context, + const url::Origin& requesting_origin, + const url::Origin& embedding_origin) { + if (!base::FeatureList::IsEnabled(blink::features::kBraveWebBluetoothAPI)) { + return AllowWebBluetoothResult::kBlockGloballyDisabled; + } + return ChromeBluetoothDelegate::AllowWebBluetooth( + browser_context, requesting_origin, embedding_origin); +} diff --git a/browser/bluetooth/brave_bluetooth_delegate.h b/browser/bluetooth/brave_bluetooth_delegate.h new file mode 100644 index 00000000000..beb36a08286 --- /dev/null +++ b/browser/bluetooth/brave_bluetooth_delegate.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_BROWSER_BLUETOOTH_BRAVE_BLUETOOTH_DELEGATE_H_ +#define BRAVE_BROWSER_BLUETOOTH_BRAVE_BLUETOOTH_DELEGATE_H_ + +#include + +#include "chrome/browser/bluetooth/chrome_bluetooth_delegate.h" +#include "url/origin.h" + +namespace content { +class BrowserContext; +} + +class BraveBluetoothDelegate : public ChromeBluetoothDelegate { + public: + explicit BraveBluetoothDelegate(std::unique_ptr client); + + AllowWebBluetoothResult AllowWebBluetooth( + content::BrowserContext* browser_context, + const url::Origin& requesting_origin, + const url::Origin& embedding_origin) override; +}; + +#endif // BRAVE_BROWSER_BLUETOOTH_BRAVE_BLUETOOTH_DELEGATE_H_ diff --git a/browser/brave_ads/BUILD.gn b/browser/brave_ads/BUILD.gn index d1d0d30b33e..90bbf2e4c33 100644 --- a/browser/brave_ads/BUILD.gn +++ b/browser/brave_ads/BUILD.gn @@ -71,6 +71,7 @@ source_set("impl") { "//chrome/browser/history", "//chrome/browser/notifications", "//chrome/browser/profiles:profile", + "//chrome/browser/profiles:profile_manager", "//chrome/browser/profiles:profile_util", "//chrome/browser/search_engines", "//chrome/browser/ui", diff --git a/browser/brave_browser_main_extra_parts.cc b/browser/brave_browser_main_extra_parts.cc index 5ece93295d2..da4788d7880 100644 --- a/browser/brave_browser_main_extra_parts.cc +++ b/browser/brave_browser_main_extra_parts.cc @@ -26,6 +26,10 @@ #include "extensions/common/extension.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_BRAVE_ADS) +#include "brave/browser/brave_ads/analytics/p3a/brave_stats_helper.h" +#endif + namespace { // Records default values for some histograms because we want these stats to be @@ -65,6 +69,17 @@ void BraveBrowserMainExtraParts::PreProfileInit() { extensions::Extension:: set_silence_deprecated_manifest_version_warnings_for_testing(true); #endif // BUILDFLAG(ENABLE_EXTENSIONS) + + // Early initialize referrals + g_brave_browser_process->brave_referrals_service(); + +#if BUILDFLAG(ENABLE_BRAVE_ADS) + // Initialize ads stats helper + g_brave_browser_process->ads_brave_stats_helper(); +#endif // BUILDFLAG(ENABLE_BRAVE_ADS) + + // Early initialize brave stats + g_brave_browser_process->brave_stats_updater(); } void BraveBrowserMainExtraParts::PostBrowserStart() { diff --git a/browser/brave_browser_main_parts_mac.h b/browser/brave_browser_main_parts_mac.h index 295474d4bdb..63eef285d2b 100644 --- a/browser/brave_browser_main_parts_mac.h +++ b/browser/brave_browser_main_parts_mac.h @@ -25,6 +25,7 @@ class BraveBrowserMainPartsMac : public ChromeBrowserMainPartsMac { // ChromeBrowserMainPartsMac overrides: void PreCreateMainMessageLoop() override; void PostProfileInit(Profile* profile, bool is_initial_profile) override; + int PreMainMessageLoopRun() override; void PostMainMessageLoopRun() override; std::unique_ptr upgrade_when_idle_; diff --git a/browser/brave_browser_main_parts_mac.mm b/browser/brave_browser_main_parts_mac.mm index b74b097c27d..bdcc707d0e7 100644 --- a/browser/brave_browser_main_parts_mac.mm +++ b/browser/brave_browser_main_parts_mac.mm @@ -28,6 +28,18 @@ BASE_FEATURE(kUpgradeWhenIdle, base::FEATURE_DISABLED_BY_DEFAULT); } +namespace { + +bool UsesOmaha4() { +#if BUILDFLAG(ENABLE_OMAHA4) + return brave_updater::ShouldUseOmaha4(); +#else + return false; +#endif +} + +} // namespace + BraveBrowserMainPartsMac::BraveBrowserMainPartsMac(bool is_integration_test, StartupData* startup_data) : ChromeBrowserMainPartsMac(is_integration_test, startup_data) {} @@ -37,13 +49,19 @@ BraveBrowserMainPartsMac::~BraveBrowserMainPartsMac() = default; void BraveBrowserMainPartsMac::PreCreateMainMessageLoop() { ChromeBrowserMainPartsMac::PreCreateMainMessageLoop(); - bool use_omaha4 = false; -#if BUILDFLAG(ENABLE_OMAHA4) - use_omaha4 = brave_updater::ShouldUseOmaha4(); -#endif +#if BUILDFLAG(ENABLE_SPARKLE) + if (!UsesOmaha4()) { + // It would be a no-op if updates are disabled. + [[SparkleGlue sharedSparkleGlue] registerWithSparkle]; + } +#endif // BUILDFLAG(ENABLE_SPARKLE) +} + +int BraveBrowserMainPartsMac::PreMainMessageLoopRun() { + int result = ChromeBrowserMainPartsMac::PreMainMessageLoopRun(); if (base::FeatureList::IsEnabled(brave::kUpgradeWhenIdle)) { - if (use_omaha4) { + if (UsesOmaha4()) { upgrade_when_idle_ = std::make_unique( // It's OK to pass profile_manager() here because it stays constant // until we reset upgrade_when_idle_ in PostMainMessageLoopRun below. @@ -61,12 +79,7 @@ void BraveBrowserMainPartsMac::PreCreateMainMessageLoop() { } } -#if BUILDFLAG(ENABLE_SPARKLE) - if (!use_omaha4) { - // It would be a no-op if updates are disabled. - [[SparkleGlue sharedSparkleGlue] registerWithSparkle]; - } -#endif // BUILDFLAG(ENABLE_SPARKLE) + return result; } void BraveBrowserMainPartsMac::PostProfileInit(Profile* profile, diff --git a/browser/brave_browser_process_impl.cc b/browser/brave_browser_process_impl.cc index acdc17cdae4..f43541f705d 100644 --- a/browser/brave_browser_process_impl.cc +++ b/browser/brave_browser_process_impl.cc @@ -28,7 +28,6 @@ #include "brave/components/brave_component_updater/browser/local_data_files_service.h" #include "brave/components/brave_origin/brave_origin_policy_manager.h" #include "brave/components/brave_policy/ad_block_only_mode/ad_block_only_mode_policy_manager.h" -#include "brave/components/brave_referrals/browser/brave_referrals_service.h" #include "brave/components/brave_shields/content/browser/ad_block_service.h" #include "brave/components/brave_shields/content/browser/ad_block_subscription_service_manager.h" #include "brave/components/brave_shields/core/common/features.h" @@ -79,6 +78,7 @@ #endif #if BUILDFLAG(ENABLE_TOR) +#include "brave/browser/tor/tor_profile_manager.h" #include "brave/components/tor/brave_tor_client_updater.h" #include "brave/components/tor/brave_tor_pluggable_transport_updater.h" #include "brave/components/tor/pref_names.h" @@ -146,23 +146,12 @@ BraveBrowserProcessImpl::BraveBrowserProcessImpl(StartupData* startup_data) g_browser_process = this; g_brave_browser_process = this; - // early initialize referrals - brave_referrals_service(); - // Disabled on mobile platforms, see for instance issues/6176 // Create P3A Service early to catch more histograms. The full initialization // should be started once browser process impl is ready. p3a_service(); histogram_braveizer_ = p3a::HistogramsBraveizer::Create(); -#if BUILDFLAG(ENABLE_BRAVE_ADS) - // initialize ads stats helper - ads_brave_stats_helper(); -#endif // BUILDFLAG(ENABLE_BRAVE_ADS) - - // early initialize brave stats - brave_stats_updater(); - // early initialize misc metrics process_misc_metrics(); } @@ -248,11 +237,22 @@ void BraveBrowserProcessImpl::StartTearDown() { } #if BUILDFLAG(ENABLE_BRAVE_AI_CHAT_AGENT_PROFILE) ai_chat_agent_profile_manager_.reset(); +#endif +#if BUILDFLAG(ENABLE_BRAVE_WALLET) + // Reset WalletDataFilesInstaller to prevent dangling pointer to + // CrxUpdateService. WalletDataFilesInstaller instance is a static + // base::NoDestructor<> and makes use of + // component_updater::ComponentUpdateService::Observer, so it needs to be + // reset before the CrxUpdateService is destroyed. + brave_wallet::WalletDataFilesInstaller::GetInstance().Reset(); #endif // Reset BraveOriginPolicyManager to prevent dangling pointer to local_state_ brave_origin::BraveOriginPolicyManager::GetInstance()->Shutdown(); brave_policy::AdBlockOnlyModePolicyManager::GetInstance()->Shutdown(); brave_sync::NetworkTimeHelper::GetInstance()->Shutdown(); +#if BUILDFLAG(ENABLE_TOR) + TorProfileManager::GetInstance().Shutdown(); +#endif BrowserProcessImpl::StartTearDown(); } diff --git a/browser/brave_content_browser_client.cc b/browser/brave_content_browser_client.cc index d70f9618f9f..0dc0737c44a 100644 --- a/browser/brave_content_browser_client.cc +++ b/browser/brave_content_browser_client.cc @@ -20,6 +20,7 @@ #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" #include "base/system/sys_info.h" +#include "brave/browser/bluetooth/brave_bluetooth_delegate.h" #include "brave/browser/brave_account/brave_account_navigation_throttle.h" #include "brave/browser/brave_browser_features.h" #include "brave/browser/brave_browser_main_extra_parts.h" @@ -100,6 +101,7 @@ #include "brave/grit/brave_generated_resources.h" #include "brave/third_party/blink/renderer/brave_farbling_constants.h" #include "build/build_config.h" +#include "chrome/browser/bluetooth/chrome_bluetooth_delegate_impl_client.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_browser_interface_binders.h" #include "chrome/browser/chrome_browser_main.h" @@ -756,8 +758,8 @@ void BraveContentBrowserClient::RegisterTrustedWebUIInterfaceBrokers( #endif if (base::FeatureList::IsEnabled(features::kBraveNtpSearchWidget)) { - ntp_refresh_registration.Add(); - ntp_registration.Add(); + ntp_refresh_registration.Add(); + ntp_registration.Add(); } #if BUILDFLAG(ENABLE_BRAVE_NEWS) @@ -864,19 +866,6 @@ BraveContentBrowserClient::WorkerGetBraveShieldSettings( IsJsBlockingEnforced(browser_context, url)); } -content::ContentBrowserClient::AllowWebBluetoothResult -BraveContentBrowserClient::AllowWebBluetooth( - content::BrowserContext* browser_context, - const url::Origin& requesting_origin, - const url::Origin& embedding_origin) { - if (!base::FeatureList::IsEnabled(blink::features::kBraveWebBluetoothAPI)) { - return ContentBrowserClient::AllowWebBluetoothResult:: - BLOCK_GLOBALLY_DISABLED; - } - return ChromeContentBrowserClient::AllowWebBluetooth( - browser_context, requesting_origin, embedding_origin); -} - bool BraveContentBrowserClient::CanCreateWindow( content::RenderFrameHost* opener, const GURL& opener_url, @@ -1602,6 +1591,14 @@ content::HidDelegate* BraveContentBrowserClient::GetHidDelegate() { } #endif // !BUILDFLAG(IS_ANDROID) +content::BluetoothDelegate* BraveContentBrowserClient::GetBluetoothDelegate() { + if (!bluetooth_delegate_) { + bluetooth_delegate_ = std::make_unique( + std::make_unique()); + } + return bluetooth_delegate_.get(); +} + bool BraveContentBrowserClient::IsJitDisabledForSite( content::BrowserContext* browser_context, const GURL& site_url) { diff --git a/browser/brave_content_browser_client.h b/browser/brave_content_browser_client.h index 5649fa4d0c8..388af8f8568 100644 --- a/browser/brave_content_browser_client.h +++ b/browser/brave_content_browser_client.h @@ -21,6 +21,7 @@ #include "services/metrics/public/cpp/ukm_source_id.h" #include "third_party/blink/public/mojom/loader/referrer.mojom.h" +class BraveBluetoothDelegate; class PrefChangeRegistrar; class BraveHidDelegate; @@ -92,11 +93,6 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { const GURL& url, content::BrowserContext* browser_context) override; - content::ContentBrowserClient::AllowWebBluetoothResult AllowWebBluetooth( - content::BrowserContext* browser_context, - const url::Origin& requesting_origin, - const url::Origin& embedding_origin) override; - void RegisterBrowserInterfaceBindersForFrame( content::RenderFrameHost* render_frame_host, mojo::BinderMapWithContext* map) override; @@ -201,6 +197,8 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { content::HidDelegate* GetHidDelegate() override; #endif + content::BluetoothDelegate* GetBluetoothDelegate() override; + private: void OnAllowGoogleAuthChanged(); @@ -220,6 +218,7 @@ class BraveContentBrowserClient : public ChromeContentBrowserClient { #if !BUILDFLAG(IS_ANDROID) std::unique_ptr brave_hid_delegate_; #endif + std::unique_ptr bluetooth_delegate_; }; #endif // BRAVE_BROWSER_BRAVE_CONTENT_BROWSER_CLIENT_H_ diff --git a/browser/brave_profile_prefs.cc b/browser/brave_profile_prefs.cc index 908a778125c..eb79a28797b 100644 --- a/browser/brave_profile_prefs.cc +++ b/browser/brave_profile_prefs.cc @@ -194,11 +194,6 @@ void OverrideDefaultPrefValues(user_prefs::PrefRegistrySyncable* registry) { base::Value(false)); registry->SetDefaultPrefValue(feed::prefs::kEnableSnippetsByDse, base::Value(false)); - - // Explicitly disable safe browsing extended reporting by default in case they - // change it in upstream. - registry->SetDefaultPrefValue(prefs::kSafeBrowsingScoutReportingEnabled, - base::Value(false)); #else // Turn on most visited mode on NTP by default. // We can turn customization mode on when we have add-shortcut feature. @@ -226,6 +221,11 @@ void OverrideDefaultPrefValues(user_prefs::PrefRegistrySyncable* registry) { registry->SetDefaultPrefValue( prefs::kSafeBrowsingExtendedReportingOptInAllowed, base::Value(false)); + // Explicitly disable safe browsing extended reporting by default in case they + // change it in upstream. + registry->SetDefaultPrefValue(prefs::kSafeBrowsingScoutReportingEnabled, + base::Value(false)); + #if defined(TOOLKIT_VIEWS) // Disable side search by default. // Copied from side_search_prefs.cc because it's not exported. diff --git a/browser/brave_rewards/test/util/rewards_browsertest_response.cc b/browser/brave_rewards/test/util/rewards_browsertest_response.cc index 6ac1a742d80..00f96130fcf 100644 --- a/browser/brave_rewards/test/util/rewards_browsertest_response.cc +++ b/browser/brave_rewards/test/util/rewards_browsertest_response.cc @@ -60,8 +60,7 @@ std::string GetPublisherChannelResponse( bool use_alternate_publisher_list) { std::string key; for (const auto& pair : prefix_map) { - std::string hex = base::ToLowerASCII( - base::HexEncode(pair.first.data(), pair.first.size())); + std::string hex = base::HexEncodeLower(pair.first); if (hex.find(prefix) == 0) { key = pair.second; break; diff --git a/browser/brave_shields/BUILD.gn b/browser/brave_shields/BUILD.gn index 83e83453329..ac908bb49ac 100644 --- a/browser/brave_shields/BUILD.gn +++ b/browser/brave_shields/BUILD.gn @@ -56,6 +56,7 @@ source_set("brave_shields_impl") { "//brave/components/constants", "//chrome/browser:browser_process", "//chrome/browser/content_settings:content_settings_factory", + "//chrome/browser/download", "//chrome/browser/profiles", "//chrome/common:mojo_bindings", "//components/content_settings/core/browser:cookie_settings", diff --git a/browser/brave_stats/BUILD.gn b/browser/brave_stats/BUILD.gn index d9d3c1df6fd..8427d357485 100644 --- a/browser/brave_stats/BUILD.gn +++ b/browser/brave_stats/BUILD.gn @@ -46,6 +46,7 @@ source_set("brave_stats") { "//chrome/browser:browser_process", "//chrome/browser/headless", "//chrome/browser/profiles:profile", + "//chrome/browser/profiles:profile_manager", "//chrome/browser/profiles:profile_util", "//chrome/browser/ui", "//chrome/common", diff --git a/browser/brave_wallet/js_ethereum_provider_browsertest.cc b/browser/brave_wallet/js_ethereum_provider_browsertest.cc index 9c435de17fc..98b579e1451 100644 --- a/browser/brave_wallet/js_ethereum_provider_browsertest.cc +++ b/browser/brave_wallet/js_ethereum_provider_browsertest.cc @@ -119,7 +119,7 @@ class JSEthereumProviderBrowserTest : public InProcessBrowserTest { // We need to prevent the wallet creation from being stuck waiting to // download a restrictions list that doesn't exist. - brave_wallet::WalletDataFilesInstaller::GetInstance().ResetForTesting(); + brave_wallet::WalletDataFilesInstaller::GetInstance().Reset(); } content::WebContents* web_contents() { diff --git a/browser/brave_wallet/notifications/wallet_notification_service.cc b/browser/brave_wallet/notifications/wallet_notification_service.cc index a60126bb65c..ce148ed1d05 100644 --- a/browser/brave_wallet/notifications/wallet_notification_service.cc +++ b/browser/brave_wallet/notifications/wallet_notification_service.cc @@ -64,7 +64,7 @@ void PushNotification(content::BrowserContext* context, GURL("brave://wallet/crypto/accounts/" + from + "#" + uuid)); auto* profile = Profile::FromBrowserContext(context); NotificationDisplayServiceFactory::GetForProfile(profile)->Display( - NotificationHandler::Type::SEND_TAB_TO_SELF, *notification, nullptr); + NotificationHandler::Type::ANNOUNCEMENT, *notification, nullptr); } } // namespace diff --git a/browser/brave_wallet/notifications/wallet_notification_service_unittest.cc b/browser/brave_wallet/notifications/wallet_notification_service_unittest.cc index 783729311c9..3e0de9da09f 100644 --- a/browser/brave_wallet/notifications/wallet_notification_service_unittest.cc +++ b/browser/brave_wallet/notifications/wallet_notification_service_unittest.cc @@ -73,7 +73,7 @@ class WalletNotificationServiceUnitTest : public testing::Test { meta.set_status(status); notification_service_->OnTransactionStatusChanged(meta.ToTransactionInfo()); auto notification = tester_->GetNotification(meta.id()); - tester_->RemoveAllNotifications(NotificationHandler::Type::SEND_TAB_TO_SELF, + tester_->RemoveAllNotifications(NotificationHandler::Type::ANNOUNCEMENT, true /* by_user */); return notification.has_value(); } diff --git a/browser/content_settings/sources.gni b/browser/content_settings/sources.gni index 40c563e8308..884805208de 100644 --- a/browser/content_settings/sources.gni +++ b/browser/content_settings/sources.gni @@ -7,3 +7,14 @@ brave_browser_content_settings_deps = [ "//brave/components/brave_shields/content/browser", "//components/user_prefs", ] + +# In upstream Chromium, extensions/common/url_pattern_set.h +# belongs to //extensions/common which is a real target. +# But on Android where enable_extensions=false, that target +# doesn't exist/isn't built. So effectively, on Android, the +# header has no upstream owner - and Brave's source_set +# //brave/extensions:common "claims" to make it available. +# +# So //chrome/browser/content_settings:unit_tests needs +# //brave/extensions:common to satisfy gn_check +brave_browser_content_settings_unit_tests_deps = [ "//brave/extensions:common" ] diff --git a/browser/customize_menu/android/java/src/org/chromium/brave/browser/customize_menu/CustomizeBraveMenu.java b/browser/customize_menu/android/java/src/org/chromium/brave/browser/customize_menu/CustomizeBraveMenu.java index 184de4b96c1..2ada6d8dcf6 100644 --- a/browser/customize_menu/android/java/src/org/chromium/brave/browser/customize_menu/CustomizeBraveMenu.java +++ b/browser/customize_menu/android/java/src/org/chromium/brave/browser/customize_menu/CustomizeBraveMenu.java @@ -114,7 +114,6 @@ public class CustomizeBraveMenu { MENU_ICON_MAP.put(R.id.move_to_other_window_menu_id, R.drawable.ic_open_in_browser); MENU_ICON_MAP.put(R.id.manage_all_windows_menu_id, R.drawable.ic_select_window); MENU_ICON_MAP.put(R.id.open_history_menu_id, R.drawable.brave_menu_history); - MENU_ICON_MAP.put(R.id.tinker_tank_menu_id, R.drawable.ic_add_box_rounded_corner); MENU_ICON_MAP.put(R.id.downloads_menu_id, R.drawable.brave_menu_downloads); MENU_ICON_MAP.put(R.id.all_bookmarks_menu_id, R.drawable.brave_menu_bookmarks); MENU_ICON_MAP.put(R.id.recent_tabs_menu_id, R.drawable.brave_menu_recent_tabs); diff --git a/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/BraveHubManagerImpl.java b/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/BraveHubManagerImpl.java index 7356934ee46..5d3a7b339c1 100644 --- a/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/BraveHubManagerImpl.java +++ b/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/BraveHubManagerImpl.java @@ -17,17 +17,21 @@ import org.chromium.base.BravePreferenceKeys; import org.chromium.base.BraveReflectionUtil; import org.chromium.base.supplier.MonotonicObservableSupplier; import org.chromium.base.supplier.NonNullObservableSupplier; +import org.chromium.base.supplier.NullableObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; +import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator; import org.chromium.chrome.browser.toolbar.settings.AddressBarPreference; +import org.chromium.chrome.browser.ui.bottombar.BottomBarHostManager; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerFactory; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient; +import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.widget.MenuOrKeyboardActionController; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.edge_to_edge.EdgeToEdgePadAdjuster; @@ -52,7 +56,9 @@ public class BraveHubManagerImpl extends HubManagerImpl { BackPressManager backPressManager, MenuOrKeyboardActionController menuOrKeyboardActionController, SnackbarManager snackbarManager, - MonotonicObservableSupplier tabSupplier, + BottomSheetController bottomSheetController, + @Nullable BottomBarHostManager bottomBarHostManager, + NullableObservableSupplier tabSupplier, MenuButtonCoordinator menuButtonCoordinator, HubShowPaneHelper hubShowPaneHelper, MonotonicObservableSupplier edgeToEdgeSupplier, @@ -66,6 +72,8 @@ public class BraveHubManagerImpl extends HubManagerImpl { backPressManager, menuOrKeyboardActionController, snackbarManager, + bottomSheetController, + bottomBarHostManager, tabSupplier, menuButtonCoordinator, hubShowPaneHelper, diff --git a/browser/net/brave_network_audit_browsertest.cc b/browser/net/brave_network_audit_browsertest.cc index b51ee4cd082..b7b77ef9b2b 100644 --- a/browser/net/brave_network_audit_browsertest.cc +++ b/browser/net/brave_network_audit_browsertest.cc @@ -19,7 +19,7 @@ #include "brave/browser/net/brave_network_audit_allowed_lists.h" #include "brave/browser/net/brave_network_audit_test_helper.h" #include "brave/components/playlist/core/common/buildflags/buildflags.h" -#include "chrome/browser/password_manager/profile_password_store_factory.h" +#include "chrome/browser/password_manager/factories/profile_password_store_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/ui/browser.h" diff --git a/browser/password_entry_edit/android/BUILD.gn b/browser/password_entry_edit/android/BUILD.gn index 76fc79fe18c..832eaaff45d 100644 --- a/browser/password_entry_edit/android/BUILD.gn +++ b/browser/password_entry_edit/android/BUILD.gn @@ -75,6 +75,7 @@ android_library_factory("factory_java") { ":java", "//chrome/browser/feedback/android:java", "//chrome/browser/profiles/android:java", + "//ui/android:ui_java", ] # This internal file will be replaced by a generated file so the resulting diff --git a/browser/password_entry_edit/android/internal/BUILD.gn b/browser/password_entry_edit/android/internal/BUILD.gn index 2406e892f36..996977fdb41 100644 --- a/browser/password_entry_edit/android/internal/BUILD.gn +++ b/browser/password_entry_edit/android/internal/BUILD.gn @@ -45,6 +45,7 @@ android_library("java") { "//chrome/browser/settings:factory_java", "//chrome/browser/ui/android/strings:ui_strings_grd", "//components/browser_ui/settings/android:java", + "//components/browser_ui/widget/android:java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_fragment_fragment_java", "//third_party/androidx:androidx_preference_preference_java", diff --git a/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditCoordinator.java b/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditCoordinator.java index 2601543e353..79f9d35bdf8 100644 --- a/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditCoordinator.java +++ b/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditCoordinator.java @@ -20,9 +20,9 @@ import org.chromium.build.annotations.Initializer; import org.chromium.build.annotations.NullMarked; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherFactory; import org.chromium.chrome.browser.password_entry_edit.CredentialEntryFragmentViewBase.ComponentStateDelegate; -import org.chromium.chrome.browser.password_manager.ConfirmationDialogHelper; import org.chromium.chrome.browser.password_manager.settings.PasswordAccessReauthenticationHelper; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; @@ -52,6 +52,7 @@ class CredentialEditCoordinator implements ComponentStateDelegate { CredentialEditCoordinator( Profile profile, + ModalDialogManager modalDialogManager, CredentialEntryFragmentViewBase fragmentView, UiDismissalHandler dismissalHandler, CredentialActionDelegate credentialActionDelegate) { @@ -61,11 +62,11 @@ class CredentialEditCoordinator implements ComponentStateDelegate { new PasswordAccessReauthenticationHelper( fragmentView.getActivity(), fragmentView.getParentFragmentManager()); Resources resources = mFragmentView.getContext().getResources(); - mMediator = new CredentialEditMediator( + mFragmentView.getActivity(), + modalDialogManager, mReauthenticationHelper, - new ConfirmationDialogHelper(mFragmentView.getContext()), resources, credentialActionDelegate, this::handleHelp, @@ -120,6 +121,7 @@ class CredentialEditCoordinator implements ComponentStateDelegate { @Override public void onDestroy() { + mMediator.dismiss(); mDismissalHandler.onUiDismissed(); } diff --git a/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java b/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java index 6104350922e..c7a775e2f47 100644 --- a/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java +++ b/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java @@ -30,6 +30,7 @@ import static org.chromium.chrome.browser.password_entry_edit.CredentialEditProp import static org.chromium.chrome.browser.password_entry_edit.CredentialEditProperties.URL_OR_APP; import static org.chromium.chrome.browser.password_entry_edit.CredentialEditProperties.USERNAME; +import android.app.Activity; import android.content.Context; import android.content.res.Resources; @@ -40,12 +41,19 @@ import org.chromium.base.CallbackUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.build.annotations.Initializer; import org.chromium.build.annotations.NullMarked; +import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.password_entry_edit.CredentialEditCoordinator.CredentialActionDelegate; import org.chromium.chrome.browser.password_entry_edit.CredentialEntryFragmentViewBase.UiActionHandler; -import org.chromium.chrome.browser.password_manager.ConfirmationDialogHelper; import org.chromium.chrome.browser.password_manager.settings.PasswordAccessReauthenticationHelper; import org.chromium.chrome.browser.password_manager.settings.PasswordAccessReauthenticationHelper.ReauthReason; +import org.chromium.components.browser_ui.widget.ActionConfirmationDialog; +import org.chromium.components.browser_ui.widget.ActionConfirmationDialog.ConfirmationDialogParams; +import org.chromium.components.browser_ui.widget.ActionConfirmationDialog.DialogDismissType; +import org.chromium.components.browser_ui.widget.ActionConfirmationDialog.DialogHandle; +import org.chromium.components.browser_ui.widget.StrictButtonPressController.ButtonClickResult; import org.chromium.ui.base.Clipboard; +import org.chromium.ui.modaldialog.DialogDismissalCause; +import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.widget.Toast; @@ -68,7 +76,8 @@ public class CredentialEditMediator implements UiActionHandler { static final String BLOCKED_CREDENTIAL_ACTION_HISTOGRAM = "PasswordManager.CredentialEntryActions.BlockedCredential"; private final PasswordAccessReauthenticationHelper mReauthenticationHelper; - private final ConfirmationDialogHelper mDeleteDialogHelper; + private final ActionConfirmationDialog mActionConfirmationDialog; + private @Nullable DialogHandle mConfirmationDialogDismissHandler; private final Resources mResources; private final CredentialActionDelegate mCredentialActionDelegate; private final Runnable mHelpLauncher; @@ -78,6 +87,7 @@ public class CredentialEditMediator implements UiActionHandler { private String mOriginalPassword; private boolean mIsInsecureCredential; private Set mExistingUsernames; + private final Activity mActivity; /** * The action that the user takes within the credential entry UI. @@ -149,14 +159,16 @@ public class CredentialEditMediator implements UiActionHandler { } CredentialEditMediator( + Activity activity, + ModalDialogManager modalDialogManager, PasswordAccessReauthenticationHelper reauthenticationHelper, - ConfirmationDialogHelper deleteDialogHelper, Resources resources, CredentialActionDelegate credentialActionDelegate, Runnable helpLauncher, boolean isBlockedCredential) { mReauthenticationHelper = reauthenticationHelper; - mDeleteDialogHelper = deleteDialogHelper; + mActivity = activity; + mActionConfirmationDialog = new ActionConfirmationDialog(mActivity, modalDialogManager); mResources = resources; mCredentialActionDelegate = credentialActionDelegate; mHelpLauncher = helpLauncher; @@ -185,6 +197,10 @@ public class CredentialEditMediator implements UiActionHandler { } void dismiss() { + if (mConfirmationDialogDismissHandler != null) { + mConfirmationDialogDismissHandler.dismiss(DialogDismissalCause.UNKNOWN); + mConfirmationDialogDismissHandler = null; + } mModel.set(UI_DISMISSED_BY_NATIVE, true); } @@ -255,15 +271,35 @@ public class CredentialEditMediator implements UiActionHandler { mModel.get(URL_OR_APP)); String confirmation = mResources.getString(R.string.password_entry_edit_delete_credential_dialog_confirm); - mDeleteDialogHelper.showConfirmation( - title, - message, - confirmation, - () -> { - recordDeleted(); - mCredentialActionDelegate.deleteCredential(); - }, - CallbackUtils.emptyRunnable()); + mConfirmationDialogDismissHandler = + mActionConfirmationDialog.show( + new ConfirmationDialogParams(mActivity) + .withTitle(title) + .withDescription(message) + .withPositiveButton(confirmation) + .withNegativeButton(android.R.string.cancel) + .withSupportStopShowing(false), + (handler, result, stopShowing) -> + onConfirmationDialogInteracted( + result, + () -> { + recordDeleted(); + mCredentialActionDelegate.deleteCredential(); + }, + CallbackUtils.emptyRunnable())); + } + + private @DialogDismissType int onConfirmationDialogInteracted( + @ButtonClickResult int buttonClickResult, + Runnable confirmedCallback, + Runnable declinedCallback) { + mConfirmationDialogDismissHandler = null; + if (buttonClickResult == ButtonClickResult.POSITIVE) { + confirmedCallback.run(); + } else { + declinedCallback.run(); + } + return DialogDismissType.DISMISS_IMMEDIATELY; } @Override diff --git a/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditUiFactory.java b/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditUiFactory.java index 05359569ed9..fcd11f9cb1b 100644 --- a/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditUiFactory.java +++ b/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditUiFactory.java @@ -13,6 +13,7 @@ import androidx.annotation.VisibleForTesting; import org.chromium.build.annotations.NullMarked; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.ui.modaldialog.ModalDialogManager; /** Use {@link #create()} to instantiate a {@link CredentialEditCoordinator}. */ @NullMarked @@ -23,22 +24,25 @@ public class CredentialEditUiFactory { */ interface CreationStrategy { /** Creates a component that connects to the given fragment and manipulates its data. */ - void create(CredentialEntryFragmentViewBase fragmentView, Profile profile); + void create( + CredentialEntryFragmentViewBase fragmentView, + Profile profile, + ModalDialogManager modalDialogManager); } private CredentialEditUiFactory() {} private static CreationStrategy sCreationStrategy = - (fragmentView, profile) -> { + (fragmentView, profile, modalDialogManager) -> { CredentialEditBridge bridge = CredentialEditBridge.get(); if (bridge == null) { // There is no backend to talk to, so the UI shouldn't be shown. fragmentView.dismiss(); return; } - bridge.initialize( - new CredentialEditCoordinator(profile, fragmentView, bridge, bridge)); + new CredentialEditCoordinator( + profile, modalDialogManager, fragmentView, bridge, bridge)); }; /** @@ -46,8 +50,11 @@ public class CredentialEditUiFactory { * * @param fragmentView the view which will be managed by the coordinator. */ - public static void create(CredentialEntryFragmentViewBase fragmentView, Profile profile) { - sCreationStrategy.create(fragmentView, profile); + public static void create( + CredentialEntryFragmentViewBase fragmentView, + Profile profile, + ModalDialogManager modalDialogManager) { + sCreationStrategy.create(fragmentView, profile, modalDialogManager); } @VisibleForTesting diff --git a/browser/password_manager/BUILD.gn b/browser/password_manager/BUILD.gn index 544a3841ae4..bfc465582a4 100644 --- a/browser/password_manager/BUILD.gn +++ b/browser/password_manager/BUILD.gn @@ -13,7 +13,7 @@ if (!is_android) { deps = [ "//brave/browser", "//chrome/browser", - "//chrome/browser/password_manager/factories:password_factory_headers", + "//chrome/browser/password_manager/factories", "//chrome/browser/ui", "//chrome/test:test_support", "//chrome/test:test_support_ui", diff --git a/browser/password_manager/android/password_ui_view_android.h b/browser/password_manager/android/password_ui_view_android.h index c761ddf1d41..c7163d4ab72 100644 --- a/browser/password_manager/android/password_ui_view_android.h +++ b/browser/password_manager/android/password_ui_view_android.h @@ -22,8 +22,8 @@ #include "base/memory/scoped_refptr.h" #include "brave/browser/password_entry_edit/android/credential_edit_bridge.h" #include "chrome/browser/affiliations/affiliation_service_factory.h" -#include "chrome/browser/password_manager/account_password_store_factory.h" -#include "chrome/browser/password_manager/profile_password_store_factory.h" +#include "chrome/browser/password_manager/factories/account_password_store_factory.h" +#include "chrome/browser/password_manager/factories/profile_password_store_factory.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "components/password_manager/core/browser/password_store/password_store_consumer.h" #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h" diff --git a/browser/password_manager/password_manager_browsertest.cc b/browser/password_manager/password_manager_browsertest.cc index 8268e985a34..e9e27994e4d 100644 --- a/browser/password_manager/password_manager_browsertest.cc +++ b/browser/password_manager/password_manager_browsertest.cc @@ -5,7 +5,7 @@ #include "base/memory/scoped_refptr.h" #include "base/test/bind.h" -#include "chrome/browser/password_manager/profile_password_store_factory.h" +#include "chrome/browser/password_manager/factories/profile_password_store_factory.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/common/webui_url_constants.h" diff --git a/browser/playlist/sources.gni b/browser/playlist/sources.gni index 24326b922a1..370534838f8 100644 --- a/browser/playlist/sources.gni +++ b/browser/playlist/sources.gni @@ -13,6 +13,7 @@ brave_browser_playlist_deps = [ "//brave/components/playlist/content/browser", "//chrome/browser:browser_process", "//chrome/browser/profiles:profile", + "//chrome/browser/ui/side_panel:side_panel_views_dependent", "//chrome/common", "//components/keyed_service/content", "//components/pref_registry", diff --git a/browser/renderer_context_menu/test/render_view_context_menu_unittest.cc b/browser/renderer_context_menu/test/render_view_context_menu_unittest.cc index bab4bc559e3..bd1a791a1b7 100644 --- a/browser/renderer_context_menu/test/render_view_context_menu_unittest.cc +++ b/browser/renderer_context_menu/test/render_view_context_menu_unittest.cc @@ -97,7 +97,7 @@ class BraveRenderViewContextMenuTest : public testing::Test { ResetBrowser(); auto menu = std::make_unique( *web_contents->GetPrimaryMainFrame(), params, - /*is_paste_enabled=*/false); + /*is_paste_enabled=*/false, /*is_paste_and_match_style_enabled=*/false); Browser::CreateParams create_params( is_pwa_browser ? Browser::Type::TYPE_APP : Browser::Type::TYPE_NORMAL, diff --git a/browser/resources/brave_education/brave_education_app.ts b/browser/resources/brave_education/brave_education_app.ts index a15017a3866..67753611cc0 100644 --- a/browser/resources/brave_education/brave_education_app.ts +++ b/browser/resources/brave_education/brave_education_app.ts @@ -121,7 +121,7 @@ export class BraveEducationAppElement extends CrLitElement { }), ) - const commandId = commandNames.get(String(data.command || '')) + const commandId = commandNames.get(data.command || '') if (commandId === undefined) { throw new Error(`Unrecognized command "${data.command}"`) } diff --git a/browser/resources/brave_new_tab_page_refresh/state/search_box_proxy.ts b/browser/resources/brave_new_tab_page_refresh/state/search_box_proxy.ts index 563b727dd11..5d55c812c94 100644 --- a/browser/resources/brave_new_tab_page_refresh/state/search_box_proxy.ts +++ b/browser/resources/brave_new_tab_page_refresh/state/search_box_proxy.ts @@ -28,8 +28,11 @@ export class SearchBoxProxy { static getInstance(): SearchBoxProxy { if (!instance) { const callbackRouter = new mojom.PageCallbackRouter() - const handler = mojom.PageHandler.getRemote() - handler.setPage(callbackRouter.$.bindNewPipeAndPassRemote()) + const handler = new mojom.PageHandlerRemote() + mojom.PageHandlerFactory.getRemote().createPageHandler( + callbackRouter.$.bindNewPipeAndPassRemote(), + handler.$.bindNewPipeAndPassReceiver(), + ) instance = new SearchBoxProxy(callbackRouter, handler) } return instance diff --git a/browser/resources/settings/br/page_visibility.ts b/browser/resources/settings/br/page_visibility.ts index eb83759d64d..b4b9525c354 100644 --- a/browser/resources/settings/br/page_visibility.ts +++ b/browser/resources/settings/br/page_visibility.ts @@ -6,11 +6,12 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.js' import { - type PageVisibility, pageVisibility as chromiumPageVisibility, resetPageVisibilityForTesting } from '../page_visibility.js' +import type { PageVisibility } from '../page_visibility.js' + // Merge our interface additions with upstream's interface declare module '../page_visibility.js' { export interface PageVisibility { diff --git a/browser/resources/settings/br/search_page.ts b/browser/resources/settings/br/search_page.ts index dbc06c88464..e8b4bc0f52c 100644 --- a/browser/resources/settings/br/search_page.ts +++ b/browser/resources/settings/br/search_page.ts @@ -15,7 +15,7 @@ import { import {SettingsSearchPageElement} from '../search_page/search_page.js' import {routes} from '../route.js' -import {type Route, RouteObserverMixin, Router} from '../router.js' +import {RouteObserverMixin, Router} from '../router.js' import {getTrustedHTML} from 'chrome://resources/js/static_types.js' import {loadTimeData} from '../i18n_setup.js' @@ -46,18 +46,26 @@ RegisterPolymerTemplateModifications({ } } - const enginesSubpageTrigger = - templateContent.getElementById('enginesSubpageTrigger') - if (!enginesSubpageTrigger) { - console.error(`[Settings] Couldn't find enginesSubpageTrigger`) + const searchSettingsUpdateTemplate = templateContent.querySelector( + 'template[is=dom-if][if="[[!searchSettingsUpdateEnabled_]]"]') + if (!searchSettingsUpdateTemplate) { + console.error( + `[Settings] Couldn't find searchSettingsUpdateEnabled_ template`) } else { - enginesSubpageTrigger.insertAdjacentHTML( - 'beforebegin', - getTrustedHTML` - - - `) + const enginesSubpageTrigger = searchSettingsUpdateTemplate.content. + getElementById('enginesSubpageTrigger') + if (!enginesSubpageTrigger) { + console.error(`[Settings] Couldn't find enginesSubpageTrigger`) + } else { + enginesSubpageTrigger.insertAdjacentHTML( + 'beforebegin', + getTrustedHTML` + + + `) + } } + const searchEngineTitleElement = templateContent.querySelector('.default-search-engine') if (searchEngineTitleElement?.firstChild?.nodeType === Node.TEXT_NODE) { diff --git a/browser/resources/settings/brave_appearance_page/tabs.ts b/browser/resources/settings/brave_appearance_page/tabs.ts index 4c5b66a19ae..918aac72581 100644 --- a/browser/resources/settings/brave_appearance_page/tabs.ts +++ b/browser/resources/settings/brave_appearance_page/tabs.ts @@ -109,7 +109,7 @@ export class SettingsBraveAppearanceTabsElement extends SettingsBraveAppearanceT override connectedCallback() { super.connectedCallback() - sendWithPromise('getIsVerticalTabsToggleEnabled').then( + sendWithPromise('getIsVerticalTabsToggleEnabled').then( (enabled: boolean) => { this.verticalTabsToggleEnabled_ = enabled }) this.addWebUiListener( 'vertical-tabs-toggle-enabled-changed', diff --git a/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_proxy.ts b/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_proxy.ts index b9440ddbcaf..93343b370d5 100644 --- a/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_proxy.ts +++ b/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_proxy.ts @@ -14,7 +14,7 @@ implements BraveClearBrowsingDataDialogBrowserProxy { getBraveRewardsEnabled() { - return sendWithPromise('getBraveRewardsEnabled') + return sendWithPromise('getBraveRewardsEnabled') } clearBraveAdsData() { diff --git a/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_v2_behavior.ts b/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_v2_behavior.ts index 69ee6980c3c..1ebd26bc9f6 100644 --- a/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_v2_behavior.ts +++ b/browser/resources/settings/brave_clear_browsing_data_dialog/brave_clear_browsing_data_dialog_v2_behavior.ts @@ -16,7 +16,8 @@ import { SettingsBraveClearBrowsingDataOnExitPageV2Element } from './brave_clear_browsing_data_on_exit_page_v2.js' -import {BrowsingDataType, type UpdateSyncStateEvent} from '../clear_browsing_data_dialog/clear_browsing_data_browser_proxy.js'; +import {BrowsingDataType} from '../clear_browsing_data_dialog/clear_browsing_data_browser_proxy.js'; +import type {UpdateSyncStateEvent} from '../clear_browsing_data_dialog/clear_browsing_data_browser_proxy.js'; import {loadTimeData} from '../i18n_setup.js' import { diff --git a/browser/resources/settings/brave_data_collection_page/brave_data_collection_browser_proxy.ts b/browser/resources/settings/brave_data_collection_page/brave_data_collection_browser_proxy.ts index 41fbc11da50..010c2ac2280 100644 --- a/browser/resources/settings/brave_data_collection_page/brave_data_collection_browser_proxy.ts +++ b/browser/resources/settings/brave_data_collection_page/brave_data_collection_browser_proxy.ts @@ -43,7 +43,7 @@ implements BraveDataCollectionBrowserProxy } getMetricsReporting() { - return sendWithPromise('getMetricsReporting') + return sendWithPromise('getMetricsReporting') } getNewTabPageSponsoredImagesSurveyPanelistVisible(): Promise { diff --git a/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_browser_proxy.ts b/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_browser_proxy.ts index 630decb84d6..530b8e83b39 100644 --- a/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_browser_proxy.ts +++ b/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_browser_proxy.ts @@ -37,11 +37,11 @@ export class BraveDefaultExtensionsBrowserProxyImpl implements BraveDefaultExten } isWidevineEnabled() { - return sendWithPromise('isWidevineEnabled') + return sendWithPromise('isWidevineEnabled') } getRestartNeeded() { - return sendWithPromise('getRestartNeeded') + return sendWithPromise('getRestartNeeded') } wasSignInEnabledAtStartup() { @@ -53,15 +53,15 @@ export class BraveDefaultExtensionsBrowserProxyImpl implements BraveDefaultExten } getExtensionsManifestV2() { - return sendWithPromise('getExtensionsManifestV2') + return sendWithPromise('getExtensionsManifestV2') } enableExtensionManifestV2(id: string, enabled: boolean) { - return sendWithPromise('enableExtensionManifestV2', id, enabled) + return sendWithPromise('enableExtensionManifestV2', id, enabled) } removeExtensionManifestV2(id:string) { - return sendWithPromise('removeExtensionManifestV2', id) + return sendWithPromise('removeExtensionManifestV2', id) } static getInstance(): BraveDefaultExtensionsBrowserProxy { diff --git a/browser/resources/settings/brave_leo_assistant_page/brave_leo_assistant_browser_proxy.ts b/browser/resources/settings/brave_leo_assistant_page/brave_leo_assistant_browser_proxy.ts index 72402c007f6..e8b0ddc5ddd 100644 --- a/browser/resources/settings/brave_leo_assistant_page/brave_leo_assistant_browser_proxy.ts +++ b/browser/resources/settings/brave_leo_assistant_page/brave_leo_assistant_browser_proxy.ts @@ -58,7 +58,7 @@ } getLeoIconVisibility() { - return sendWithPromise('getLeoIconVisibility') + return sendWithPromise('getLeoIconVisibility') } toggleLeoIcon() { diff --git a/browser/resources/settings/brave_leo_assistant_page/model_list_section.ts b/browser/resources/settings/brave_leo_assistant_page/model_list_section.ts index 89dda782fc3..a8f7c3073bf 100644 --- a/browser/resources/settings/brave_leo_assistant_page/model_list_section.ts +++ b/browser/resources/settings/brave_leo_assistant_page/model_list_section.ts @@ -16,12 +16,14 @@ import { BaseMixin } from '../base_mixin.js' import { getTemplate } from './model_list_section.html.js' import { - type BraveLeoAssistantBrowserProxy, - type Model, OperationResult, BraveLeoAssistantBrowserProxyImpl, OLLAMA_ENDPOINT } from './brave_leo_assistant_browser_proxy.js' +import type { + BraveLeoAssistantBrowserProxy, + Model +} from './brave_leo_assistant_browser_proxy.js' const ModelListSectionBase = PrefsMixin(I18nMixin(BaseMixin(PolymerElement))) @@ -172,7 +174,7 @@ class ModelListSection extends ModelListSectionBase { // 3. Ollama is actually connected const isOllamaEndpoint = model.options.customModelOptions?.endpoint === OLLAMA_ENDPOINT - return !!(isOllamaEndpoint && ollamaSyncEnabled && isOllamaConnected) + return isOllamaEndpoint && ollamaSyncEnabled && isOllamaConnected } } diff --git a/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.ts b/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.ts index 19ad1021fa9..46f43a8557e 100644 --- a/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.ts +++ b/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.ts @@ -17,11 +17,11 @@ export interface BraveNewTabBrowserProxy { export class BraveNewTabBrowserProxyImpl implements BraveNewTabBrowserProxy { getNewTabShowsOptionsList() { - return sendWithPromise('getNewTabShowsOptionsList') + return sendWithPromise('getNewTabShowsOptionsList') } shouldShowNewTabDashboardSettings() { - return sendWithPromise('shouldShowNewTabDashboardSettings') + return sendWithPromise('shouldShowNewTabDashboardSettings') } static getInstance(): BraveNewTabBrowserProxyImpl { diff --git a/browser/resources/settings/brave_search_engines_page/brave_search_engines_page_browser_proxy.ts b/browser/resources/settings/brave_search_engines_page/brave_search_engines_page_browser_proxy.ts index 6c1d8be1f06..909d6e05fc1 100644 --- a/browser/resources/settings/brave_search_engines_page/brave_search_engines_page_browser_proxy.ts +++ b/browser/resources/settings/brave_search_engines_page/brave_search_engines_page_browser_proxy.ts @@ -12,7 +12,7 @@ export interface BraveSearchEnginesPageBrowserProxy { export class BraveSearchEnginesPageBrowserProxyImpl implements BraveSearchEnginesPageBrowserProxy { getPrivateSearchEnginesList() { - return sendWithPromise('getPrivateSearchEnginesList') + return sendWithPromise('getPrivateSearchEnginesList') } setDefaultPrivateSearchEngine(modelIndex: number) { chrome.send('setDefaultPrivateSearchEngine', [modelIndex]) diff --git a/browser/resources/settings/brave_search_engines_page/normal_search_engine_list_dialog.ts b/browser/resources/settings/brave_search_engines_page/normal_search_engine_list_dialog.ts index 6949282bea1..418ad0f08ac 100644 --- a/browser/resources/settings/brave_search_engines_page/normal_search_engine_list_dialog.ts +++ b/browser/resources/settings/brave_search_engines_page/normal_search_engine_list_dialog.ts @@ -112,7 +112,7 @@ export class SettingsNormalSearchEngineListDialogElement extends assert(searchEngine) this.browserProxy_.setDefaultSearchEngine( - searchEngine.modelIndex, ChoiceMadeLocation.SEARCH_SETTINGS, + searchEngine.id, ChoiceMadeLocation.SEARCH_SETTINGS, this.saveGuestChoice_) this.dispatchEvent(new CustomEvent('search-engine-changed', { diff --git a/browser/resources/settings/brave_search_engines_page/private_search_engine_list_dialog.ts b/browser/resources/settings/brave_search_engines_page/private_search_engine_list_dialog.ts index ab853cd291b..205859659c2 100644 --- a/browser/resources/settings/brave_search_engines_page/private_search_engine_list_dialog.ts +++ b/browser/resources/settings/brave_search_engines_page/private_search_engine_list_dialog.ts @@ -82,7 +82,7 @@ export class SettingsPrivateSearchEngineListDialogElement extends engine => engine.id === parseInt(this.selectedEngineId_)) assert(searchEngine) - this.browserProxy_.setDefaultPrivateSearchEngine(searchEngine.modelIndex) + this.browserProxy_.setDefaultPrivateSearchEngine(searchEngine.id) this.dispatchEvent(new CustomEvent('private-search-engine-changed', { bubbles: true, diff --git a/browser/resources/settings/brave_sync_page/brave_sync_subpage.ts b/browser/resources/settings/brave_sync_page/brave_sync_subpage.ts index 70c7a5c9e4a..ededc0613bb 100644 --- a/browser/resources/settings/brave_sync_page/brave_sync_subpage.ts +++ b/browser/resources/settings/brave_sync_page/brave_sync_subpage.ts @@ -200,11 +200,11 @@ class SettingBraveSyncSubpage extends SettingBraveSyncSubpageBase { private computeSyncSectionDisabled_(): boolean { return this.syncStatus !== undefined && (!!this.syncStatus.disabled || - !!this.syncStatus.hasSyncWordsDecryptionError || - (!!this.syncStatus.hasError && - this.syncStatus.statusAction !== + this.syncStatus.hasSyncWordsDecryptionError || + (!!this.syncStatus.hasError && + this.syncStatus.statusAction !== StatusAction.ENTER_PASSPHRASE && - this.syncStatus.statusAction !== + this.syncStatus.statusAction !== StatusAction.RETRIEVE_TRUSTED_VAULT_KEYS)) } @@ -213,15 +213,15 @@ class SettingBraveSyncSubpage extends SettingBraveSyncSubpageBase { } private computeLockedSafeStorage_(): boolean { - return this.syncStatus && - !!this.syncStatus.hasSyncWordsDecryptionError && - !this.syncStatus.isOsEncryptionAvailable + return this.syncStatus && + this.syncStatus.hasSyncWordsDecryptionError && + !this.syncStatus.isOsEncryptionAvailable } private computeUnlockedSafeStorageCannotDecryptSeed_(): boolean { return this.syncStatus && - !!this.syncStatus.hasSyncWordsDecryptionError && - !!this.syncStatus.isOsEncryptionAvailable + this.syncStatus.hasSyncWordsDecryptionError && + !this.syncStatus.isOsEncryptionAvailable } private isStatus_(expectedPageStatus: PageStatus): boolean { diff --git a/browser/resources/settings/brave_system_page/brave_vpn_browser_proxy.ts b/browser/resources/settings/brave_system_page/brave_vpn_browser_proxy.ts index d782de007a4..1d83edc6f49 100644 --- a/browser/resources/settings/brave_system_page/brave_vpn_browser_proxy.ts +++ b/browser/resources/settings/brave_system_page/brave_vpn_browser_proxy.ts @@ -14,15 +14,15 @@ export interface BraveVPNBrowserProxy { export class BraveVPNBrowserProxyImpl implements BraveVPNBrowserProxy { isWireguardServiceInstalled () { - return sendWithPromise('isWireguardServiceInstalled'); + return sendWithPromise('isWireguardServiceInstalled'); } isBraveVpnConnected () { - return sendWithPromise('isBraveVpnConnected'); + return sendWithPromise('isBraveVpnConnected'); } showInSystemTray () { - return sendWithPromise('showInSystemTray'); + return sendWithPromise('showInSystemTray'); } setShowInSystemTray (value: boolean) { diff --git a/browser/resources/settings/brave_tor_page/brave_tor_browser_proxy.ts b/browser/resources/settings/brave_tor_page/brave_tor_browser_proxy.ts index 898d6d59e3a..29c8561b041 100644 --- a/browser/resources/settings/brave_tor_page/brave_tor_browser_proxy.ts +++ b/browser/resources/settings/brave_tor_page/brave_tor_browser_proxy.ts @@ -25,7 +25,7 @@ export class BraveTorBrowserProxyImpl implements BraveTorBrowserProxy { } getBridgesConfig() { - return sendWithPromise('brave_tor.getBridgesConfig') + return sendWithPromise('brave_tor.getBridgesConfig') } setBridgesConfig(config: any) { @@ -33,11 +33,11 @@ export class BraveTorBrowserProxyImpl implements BraveTorBrowserProxy { } requestBridgesCaptcha() { - return sendWithPromise('brave_tor.requestBridgesCaptcha') + return sendWithPromise('brave_tor.requestBridgesCaptcha') } resolveBridgesCaptcha(captcha: any) { - return sendWithPromise('brave_tor.resolveBridgesCaptcha', captcha) + return sendWithPromise('brave_tor.resolveBridgesCaptcha', captcha) } setTorEnabled(value: boolean) { @@ -45,23 +45,23 @@ export class BraveTorBrowserProxyImpl implements BraveTorBrowserProxy { } isTorEnabled() { - return sendWithPromise('brave_tor.isTorEnabled') + return sendWithPromise('brave_tor.isTorEnabled') } isTorManaged() { - return sendWithPromise('brave_tor.isTorManaged') + return sendWithPromise('brave_tor.isTorManaged') } isSnowflakeExtensionAllowed() { - return sendWithPromise('brave_tor.isSnowflakeExtensionAllowed') + return sendWithPromise('brave_tor.isSnowflakeExtensionAllowed') } isSnowflakeExtensionEnabled() { - return sendWithPromise('brave_tor.isSnowflakeExtensionEnabled') + return sendWithPromise('brave_tor.isSnowflakeExtensionEnabled') } enableSnowflakeExtension(enable: boolean) { - return sendWithPromise('brave_tor.enableSnowflakeExtension', enable) + return sendWithPromise('brave_tor.enableSnowflakeExtension', enable) } } diff --git a/browser/resources/settings/brave_wallet_page/brave_wallet_browser_proxy.ts b/browser/resources/settings/brave_wallet_page/brave_wallet_browser_proxy.ts index 5d52907e243..1e72810af68 100644 --- a/browser/resources/settings/brave_wallet_page/brave_wallet_browser_proxy.ts +++ b/browser/resources/settings/brave_wallet_page/brave_wallet_browser_proxy.ts @@ -81,91 +81,91 @@ export class BraveWalletBrowserProxyImpl implements BraveWalletBrowserProxy { } getNetworksList (coin: number) { - return sendWithPromise('getNetworksList', coin) + return sendWithPromise('getNetworksList', coin) } getPrepopulatedNetworksList () { - return sendWithPromise('getPrepopulatedNetworksList') + return sendWithPromise('getPrepopulatedNetworksList') } setDefaultNetwork (chainId: string, coin: number) { - return sendWithPromise('setDefaultNetwork', chainId, coin) + return sendWithPromise('setDefaultNetwork', chainId, coin) } removeChain (chainId: string, coin: number) { - return sendWithPromise('removeChain', chainId, coin) + return sendWithPromise('removeChain', chainId, coin) } resetChain (chainId: string, coin: number) { - return sendWithPromise('resetChain', chainId, coin) + return sendWithPromise('resetChain', chainId, coin) } addChain (payload: NetworkInfo) { - return sendWithPromise('addChain', payload) + return sendWithPromise<[boolean, string]>('addChain', payload) } addHiddenNetwork (chainId: string, coin: number) { - return sendWithPromise('addHiddenNetwork', chainId, coin) + return sendWithPromise('addHiddenNetwork', chainId, coin) } removeHiddenNetwork (chainId: string, coin: number) { - return sendWithPromise('removeHiddenNetwork', chainId, coin) + return sendWithPromise('removeHiddenNetwork', chainId, coin) } getWeb3ProviderList () { - return sendWithPromise('getWeb3ProviderList') + return sendWithPromise('getWeb3ProviderList') } getAutoLockMinutes () { - return sendWithPromise('getAutoLockMinutes') + return sendWithPromise('getAutoLockMinutes') } getSolanaProviderOptions() { - return sendWithPromise('getSolanaProviderOptions') + return sendWithPromise('getSolanaProviderOptions') } getCardanoProviderOptions() { - return sendWithPromise('getCardanoProviderOptions') + return sendWithPromise('getCardanoProviderOptions') } isBitcoinEnabled() { - return sendWithPromise('isBitcoinEnabled') + return sendWithPromise('isBitcoinEnabled') } isZCashEnabled() { - return sendWithPromise('isZCashEnabled') + return sendWithPromise('isZCashEnabled') } isZCashShieldedTxEnabled() { - return sendWithPromise('isZCashShieldedTxEnabled') + return sendWithPromise('isZCashShieldedTxEnabled') } isCardanoEnabled() { - return sendWithPromise('isCardanoEnabled') + return sendWithPromise('isCardanoEnabled') } isCardanoDAppSupportEnabled() { - return sendWithPromise('isCardanoDAppSupportEnabled') + return sendWithPromise('isCardanoDAppSupportEnabled') } isPolkadotEnabled() { - return sendWithPromise('isPolkadotEnabled') + return sendWithPromise('isPolkadotEnabled') } getTransactionSimulationOptInStatusOptions() { - return sendWithPromise('getTransactionSimulationOptInStatusOptions') + return sendWithPromise('getTransactionSimulationOptInStatusOptions') } isTransactionSimulationsFeatureEnabled() { - return sendWithPromise('isTransactionSimulationsFeatureEnabled') + return sendWithPromise('isTransactionSimulationsFeatureEnabled') } getWalletInPrivateWindowsEnabled() { - return sendWithPromise('getWalletInPrivateWindowsEnabled') + return sendWithPromise('getWalletInPrivateWindowsEnabled') } setWalletInPrivateWindowsEnabled(value: boolean) { - return sendWithPromise('setWalletInPrivateWindowsEnabled', value) + return sendWithPromise('setWalletInPrivateWindowsEnabled', value) } static getInstance() { diff --git a/browser/resources/settings/brave_wallet_page/brave_wallet_page.ts b/browser/resources/settings/brave_wallet_page/brave_wallet_page.ts index 94514b70ea3..beec65d9359 100644 --- a/browser/resources/settings/brave_wallet_page/brave_wallet_page.ts +++ b/browser/resources/settings/brave_wallet_page/brave_wallet_page.ts @@ -17,10 +17,13 @@ import {SettingsViewMixin} from '../settings_page/settings_view_mixin.js' import { BraveWalletBrowserProxy, - BraveWalletBrowserProxyImpl, - type Option, - type SolanaProvider, - type CardanoProvider + BraveWalletBrowserProxyImpl +} from './brave_wallet_browser_proxy.js' + +import type { + Option, + SolanaProvider, + CardanoProvider } from './brave_wallet_browser_proxy.js' import {assert} from 'chrome://resources/js/assert.js' diff --git a/browser/resources/settings/brave_wallet_page/wallet_networks_list.ts b/browser/resources/settings/brave_wallet_page/wallet_networks_list.ts index 3c0cf8475fe..f9c718ad51a 100644 --- a/browser/resources/settings/brave_wallet_page/wallet_networks_list.ts +++ b/browser/resources/settings/brave_wallet_page/wallet_networks_list.ts @@ -6,10 +6,8 @@ import 'chrome://resources/cr_elements/cr_button/cr_button.js' import './add_wallet_network_dialog.js' -import { - BraveWalletBrowserProxyImpl, - type NetworkInfo, -} from './brave_wallet_browser_proxy.js' +import {BraveWalletBrowserProxyImpl} from './brave_wallet_browser_proxy.js' +import type {NetworkInfo} from './brave_wallet_browser_proxy.js' import type {CrActionMenuElement} from 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.js' import type {CrLazyRenderElement} from 'chrome://resources/cr_elements/cr_lazy_render/cr_lazy_render.js' diff --git a/browser/resources/settings/brave_web3_domains_page/brave_web3_domains_browser_proxy.ts b/browser/resources/settings/brave_web3_domains_page/brave_web3_domains_browser_proxy.ts index b733210de31..59f85cc4229 100644 --- a/browser/resources/settings/brave_web3_domains_page/brave_web3_domains_browser_proxy.ts +++ b/browser/resources/settings/brave_web3_domains_page/brave_web3_domains_browser_proxy.ts @@ -16,11 +16,11 @@ export interface BraveWeb3DomainsBrowserProxy { export class BraveWeb3DomainsBrowserProxyImpl implements BraveWeb3DomainsBrowserProxy { getDecentralizedDnsResolveMethodList() { - return sendWithPromise('getDecentralizedDnsResolveMethodList') + return sendWithPromise('getDecentralizedDnsResolveMethodList') } getEnsOffchainResolveMethodList() { - return sendWithPromise('getEnsOffchainResolveMethodList') + return sendWithPromise('getEnsOffchainResolveMethodList') } static getInstance(): BraveWeb3DomainsBrowserProxy { diff --git a/browser/resources/settings/default_brave_shields_page/brave_adblock_browser_proxy.ts b/browser/resources/settings/default_brave_shields_page/brave_adblock_browser_proxy.ts index 7fab1fe0d7f..4affa8ba507 100644 --- a/browser/resources/settings/default_brave_shields_page/brave_adblock_browser_proxy.ts +++ b/browser/resources/settings/default_brave_shields_page/brave_adblock_browser_proxy.ts @@ -68,7 +68,7 @@ export class BraveAdblockBrowserProxyImpl implements BraveAdblockBrowserProxy { } getRegionalLists () { - return sendWithPromise('brave_adblock.getRegionalLists') + return sendWithPromise('brave_adblock.getRegionalLists') } enableFilterList (uuid: string, enabled: boolean) { @@ -76,11 +76,11 @@ export class BraveAdblockBrowserProxyImpl implements BraveAdblockBrowserProxy { } updateFilterLists () { - return sendWithPromise('brave_adblock.updateFilterLists') + return sendWithPromise('brave_adblock.updateFilterLists') } getCustomFilters () { - return sendWithPromise('brave_adblock.getCustomFilters') + return sendWithPromise('brave_adblock.getCustomFilters') } updateCustomFilters (value: string) { @@ -88,7 +88,7 @@ export class BraveAdblockBrowserProxyImpl implements BraveAdblockBrowserProxy { } getListSubscriptions () { - return sendWithPromise('brave_adblock.getListSubscriptions') + return sendWithPromise('brave_adblock.getListSubscriptions') } setSubscriptionEnabled (url: string, enabled: boolean) { @@ -112,7 +112,7 @@ export class BraveAdblockBrowserProxyImpl implements BraveAdblockBrowserProxy { } getCustomScriptlets () { - return sendWithPromise('brave_adblock.getCustomScriptlets') + return sendWithPromise('brave_adblock.getCustomScriptlets') .then((scriptlets) => { for (const scriptlet of scriptlets) { scriptlet.content = this.base64ToUtf8_(scriptlet.content) @@ -126,18 +126,18 @@ export class BraveAdblockBrowserProxyImpl implements BraveAdblockBrowserProxy { addCustomScriptlet (scriptlet: Scriptlet) { scriptlet.content = this.utf8ToBase64_(scriptlet.content) - return sendWithPromise('brave_adblock.addCustomScriptlet', scriptlet) + return sendWithPromise('brave_adblock.addCustomScriptlet', scriptlet) } updateCustomScriptlet (name: string, scriptlet: Scriptlet) { scriptlet.content = this.utf8ToBase64_(scriptlet.content) - return sendWithPromise( + return sendWithPromise( 'brave_adblock.updateCustomScriptlet', name, scriptlet ) } removeCustomScriptlet (name: string) { - return sendWithPromise('brave_adblock.removeCustomScriptlet', name) + return sendWithPromise('brave_adblock.removeCustomScriptlet', name) } addWebUiListener (eventName: string, callback: Function) { diff --git a/browser/resources/settings/default_brave_shields_page/brave_adblock_subpage.ts b/browser/resources/settings/default_brave_shields_page/brave_adblock_subpage.ts index 7d1bf416ebf..e12713af832 100644 --- a/browser/resources/settings/default_brave_shields_page/brave_adblock_subpage.ts +++ b/browser/resources/settings/default_brave_shields_page/brave_adblock_subpage.ts @@ -9,8 +9,10 @@ import './components/brave_adblock_subscribe_dropdown.js' import {PrefsMixin} from '/shared/settings/prefs/prefs_mixin.js' import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js' +import type { + DomRepeatEvent +} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js' import { - type DomRepeatEvent, PolymerElement } from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js' diff --git a/browser/resources/settings/default_brave_shields_page/default_brave_shields_browser_proxy.ts b/browser/resources/settings/default_brave_shields_page/default_brave_shields_browser_proxy.ts index 07cb6440daa..22ef85e2075 100644 --- a/browser/resources/settings/default_brave_shields_page/default_brave_shields_browser_proxy.ts +++ b/browser/resources/settings/default_brave_shields_page/default_brave_shields_browser_proxy.ts @@ -47,7 +47,7 @@ export interface DefaultBraveShieldsBrowserProxy { export class DefaultBraveShieldsBrowserProxyImpl implements DefaultBraveShieldsBrowserProxy { isAdControlEnabled () { - return sendWithPromise('isAdControlEnabled') + return sendWithPromise('isAdControlEnabled') } setAdControlType (value: boolean) { @@ -55,7 +55,7 @@ implements DefaultBraveShieldsBrowserProxy { } isFirstPartyCosmeticFilteringEnabled () { - return sendWithPromise('isFirstPartyCosmeticFilteringEnabled') + return sendWithPromise('isFirstPartyCosmeticFilteringEnabled') } setCosmeticFilteringControlType (value: string) { @@ -63,7 +63,7 @@ implements DefaultBraveShieldsBrowserProxy { } getCookieControlType () { - return sendWithPromise('getCookieControlType') + return sendWithPromise('getCookieControlType') } setCookieControlType (value: string) { @@ -71,7 +71,7 @@ implements DefaultBraveShieldsBrowserProxy { } getFingerprintingControlType () { - return sendWithPromise('getFingerprintingControlType') + return sendWithPromise('getFingerprintingControlType') } setFingerprintingControlType (value: string) { @@ -79,7 +79,7 @@ implements DefaultBraveShieldsBrowserProxy { } getFingerprintingBlockEnabled () { - return sendWithPromise('getFingerprintingBlockEnabled') + return sendWithPromise('getFingerprintingBlockEnabled') } setFingerprintingBlockEnabled (value: boolean) { @@ -87,7 +87,7 @@ implements DefaultBraveShieldsBrowserProxy { } getHttpsUpgradeControlType () { - return sendWithPromise('getHttpsUpgradeControlType') + return sendWithPromise('getHttpsUpgradeControlType') } setHttpsUpgradeControlType (value: string) { @@ -95,7 +95,7 @@ implements DefaultBraveShieldsBrowserProxy { } getNoScriptControlType () { - return sendWithPromise('getNoScriptControlType') + return sendWithPromise('getNoScriptControlType') } setNoScriptControlType (value: boolean) { @@ -103,7 +103,7 @@ implements DefaultBraveShieldsBrowserProxy { } getForgetFirstPartyStorageEnabled () { - return sendWithPromise('getForgetFirstPartyStorageEnabled') + return sendWithPromise('getForgetFirstPartyStorageEnabled') } setForgetFirstPartyStorageEnabled (value: boolean) { @@ -115,15 +115,15 @@ implements DefaultBraveShieldsBrowserProxy { } getContactInfo () { - return sendWithPromise('getContactInfo') + return sendWithPromise('getContactInfo') } getHideBlockAllCookieTogle () { - return sendWithPromise('getHideBlockAllCookieTogle') + return sendWithPromise('getHideBlockAllCookieTogle') } getAllowElementBlockerInPrivateModeEnabled () { - return sendWithPromise('getAllowElementBlockerInPrivateModeEnabled') + return sendWithPromise('getAllowElementBlockerInPrivateModeEnabled') } setAllowElementBlockerInPrivateModeEnabled (value: boolean) { chrome.send('setAllowElementBlockerInPrivateModeEnabled', [value]) diff --git a/browser/resources/tab_search/tab_focus/tab_focus_page.ts b/browser/resources/tab_search/tab_focus/tab_focus_page.ts index b70da0e8a15..983b7e574a1 100644 --- a/browser/resources/tab_search/tab_focus/tab_focus_page.ts +++ b/browser/resources/tab_search/tab_focus/tab_focus_page.ts @@ -30,11 +30,6 @@ export class TabFocusPageElement extends CrLitElement { return getHtml.bind(this)() } - protected topics_: string[] = [] - protected topic = '' - protected undoTopic_ = '' - protected showFRE_ = loadTimeData.getBoolean('showTabOrganizationFRE') - private apiProxy_: BraveTabSearchApiProxy = TabSearchApiProxyImpl.getInstance() as BraveTabSearchApiProxy private listenerIds_: number[] = [] @@ -56,6 +51,13 @@ export class TabFocusPageElement extends CrLitElement { } } + protected accessor topics_: string[] = [] + protected accessor topic = '' + protected accessor undoTopic_ = '' + protected accessor showFRE_ = loadTimeData.getBoolean( + 'showTabOrganizationFRE', + ) + accessor availableHeight: number = 0 accessor isLoadingTopics: boolean = false accessor errorMessage: string = '' diff --git a/browser/serp_metrics/BUILD.gn b/browser/serp_metrics/BUILD.gn index 634dcd2f000..9c36d84bb78 100644 --- a/browser/serp_metrics/BUILD.gn +++ b/browser/serp_metrics/BUILD.gn @@ -53,6 +53,7 @@ static_library("impl") { "//chrome/browser:browser_process", "//chrome/browser:browser_public_dependencies", "//chrome/browser/profiles:profile", + "//chrome/browser/profiles:profile_manager", "//chrome/browser/profiles:profile_util", "//components/keyed_service/core", "//components/prefs", diff --git a/browser/sharing_hub/BUILD.gn b/browser/sharing_hub/BUILD.gn index f35972073a3..3177e751fa4 100644 --- a/browser/sharing_hub/BUILD.gn +++ b/browser/sharing_hub/BUILD.gn @@ -13,6 +13,7 @@ source_set("browser_tests") { deps = [ "//chrome/browser", + "//chrome/browser/sharing_hub", "//chrome/browser/ui", "//chrome/browser/ui/page_action:icon_type", "//chrome/test:test_support_ui", diff --git a/browser/signin/services/android/BUILD.gn b/browser/signin/services/android/BUILD.gn new file mode 100644 index 00000000000..34ee658ef44 --- /dev/null +++ b/browser/signin/services/android/BUILD.gn @@ -0,0 +1,25 @@ +# Copyright (c) 2026 The Brave Authors. All rights reserved. +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at https://mozilla.org/MPL/2.0/. + +import("//build/config/android/rules.gni") +import("//third_party/jni_zero/jni_zero.gni") + +generate_jni("jni_headers") { + sources = [ "java/src/org/chromium/chrome/browser/signin/services/BraveSigninManager.java" ] +} + +android_library("java") { + sources = [ "java/src/org/chromium/chrome/browser/signin/services/BraveSigninManager.java" ] + deps = [ + "//base:base_java", + "//chrome/browser/signin/services/android:java", + "//components/prefs/android:java", + "//components/signin/public/android:java", + "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/androidx:androidx_appcompat_appcompat_resources_java", + "//third_party/jni_zero:jni_zero_java", + ] + srcjar_deps = [ ":jni_headers" ] +} diff --git a/android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java b/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/BraveSigninManager.java similarity index 97% rename from android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java rename to browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/BraveSigninManager.java index 46490467975..f4171178ee1 100644 --- a/android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java +++ b/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/BraveSigninManager.java @@ -3,7 +3,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at https://mozilla.org/MPL/2.0/. */ -package org.chromium.chrome.browser.signin; +package org.chromium.chrome.browser.signin.services; import androidx.annotation.MainThread; @@ -13,7 +13,6 @@ import org.jni_zero.JniType; import org.chromium.base.Callback; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.components.prefs.PrefService; import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.signin.identitymanager.IdentityManager; diff --git a/browser/sources.gni b/browser/sources.gni index da3a21af0d6..d8a991109d8 100644 --- a/browser/sources.gni +++ b/browser/sources.gni @@ -140,6 +140,7 @@ brave_chrome_browser_deps = [ "//brave/browser:brave_global_features_impl", "//brave/browser:browser_process", "//brave/browser:sparkle_buildflags", + "//brave/browser/bluetooth", "//brave/browser/brave_account", "//brave/browser/brave_adaptive_captcha", "//brave/browser/brave_adaptive_captcha:impl", diff --git a/browser/tor/test/tor_profile_manager_browsertest.cc b/browser/tor/test/tor_profile_manager_browsertest.cc index ddd20cdf778..f99673a8c4c 100644 --- a/browser/tor/test/tor_profile_manager_browsertest.cc +++ b/browser/tor/test/tor_profile_manager_browsertest.cc @@ -25,7 +25,9 @@ #include "chrome/browser/net/profile_network_context_service_test_utils.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/browser_finder.h" +#include "chrome/browser/ui/browser_window/public/browser_window_interface.h" #include "chrome/browser/ui/browser_window/public/global_browser_collection.h" +#include "chrome/browser/ui/browser_window/public/profile_browser_collection.h" #include "chrome/test/base/chrome_test_utils.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" @@ -75,6 +77,20 @@ Browser* SwitchToTorProfile(Profile* parent_profile, return tor_browser; } +#if !BUILDFLAG(IS_MAC) +size_t GetTabbedBrowserCount(Profile* profile) { + size_t tabbed_browser_count = 0; + ProfileBrowserCollection::GetForProfile(profile)->ForEach( + [&tabbed_browser_count](BrowserWindowInterface* browser) { + if (browser->GetType() == BrowserWindowInterface::Type::TYPE_NORMAL) { + tabbed_browser_count++; + } + return true; + }); + return tabbed_browser_count; +} +#endif + } // namespace class TorProfileManagerTest : public InProcessBrowserTest { @@ -139,7 +155,7 @@ class MockWebContentsDelegate : public content::WebContentsDelegate { #if !BUILDFLAG(IS_MAC) IN_PROC_BROWSER_TEST_F(TorProfileManagerTest, LaunchWithTorUrl) { // We should start with one normal window. - ASSERT_EQ(1u, chrome::GetTabbedBrowserCount(browser()->profile())); + ASSERT_EQ(1u, GetTabbedBrowserCount(browser()->profile())); // Run with --tor switch and a URL specified. base::FilePath test_file_path = chrome_test_utils::GetTestFilePath( @@ -154,7 +170,7 @@ IN_PROC_BROWSER_TEST_F(TorProfileManagerTest, LaunchWithTorUrl) { Relaunch(new_command_line); ui_test_utils::WaitForBrowserToOpen(); ASSERT_EQ(2u, chrome::GetTotalBrowserCount()); - ASSERT_EQ(1u, chrome::GetTabbedBrowserCount(browser()->profile())); + ASSERT_EQ(1u, GetTabbedBrowserCount(browser()->profile())); } #endif diff --git a/browser/tor/tor_profile_manager.cc b/browser/tor/tor_profile_manager.cc index a07f3cb7cd3..cd018b613a3 100644 --- a/browser/tor/tor_profile_manager.cc +++ b/browser/tor/tor_profile_manager.cc @@ -257,6 +257,10 @@ void TorProfileManager::CloseAllTorWindows() { } } +void TorProfileManager::Shutdown() { + browser_collection_observer_.reset(); +} + void TorProfileManager::OnProfileWillBeDestroyed(Profile* profile) { const std::string context_id = profile->UniqueId(); tor_profiles_.erase(context_id); diff --git a/browser/tor/tor_profile_manager.h b/browser/tor/tor_profile_manager.h index 150211656c3..cfafbef3924 100644 --- a/browser/tor/tor_profile_manager.h +++ b/browser/tor/tor_profile_manager.h @@ -34,6 +34,8 @@ class TorProfileManager : public ProfileObserver { // Close all Tor windows for all tor profiles void CloseAllTorWindows(); + void Shutdown(); + private: friend class base::NoDestructor; TorProfileManager(); diff --git a/browser/ui/BUILD.gn b/browser/ui/BUILD.gn index 373af6e1534..902cacec75a 100644 --- a/browser/ui/BUILD.gn +++ b/browser/ui/BUILD.gn @@ -97,6 +97,7 @@ source_set("ui") { "//chrome/browser/ui:browser_navigator_params_headers", "//chrome/browser/ui:tab_search_feature", "//chrome/browser/ui/browser_window", + "//chrome/browser/ui/select_file_policy", "//chrome/browser/ui/startup", "//chrome/browser/ui/tabs:tabs_public", "//chrome/browser/ui/toolbar", @@ -295,6 +296,7 @@ source_set("ui") { "tabs/brave_tab_color_mixer.h", "tabs/brave_tab_menu_model.cc", "tabs/brave_tab_menu_model.h", + "tabs/shared_pinned_tab_dummy_view.cc", "tabs/shared_pinned_tab_dummy_view.h", "tabs/shared_pinned_tab_service.cc", "tabs/shared_pinned_tab_service.h", @@ -427,6 +429,7 @@ source_set("ui") { "//chrome/browser/ui:url_identity", "//chrome/browser/ui/content_settings", "//chrome/browser/ui/extensions", + "//chrome/browser/ui/frame", "//chrome/browser/ui/omnibox", "//chrome/browser/ui/prefs", "//chrome/browser/ui/profiles", diff --git a/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/BraveDropdownItemViewInfoListBuilder.java b/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/BraveDropdownItemViewInfoListBuilder.java index 44ea360de9f..43a577bdb20 100644 --- a/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/BraveDropdownItemViewInfoListBuilder.java +++ b/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/BraveDropdownItemViewInfoListBuilder.java @@ -163,16 +163,17 @@ class BraveDropdownItemViewInfoListBuilder extends DropdownItemViewInfoListBuild viewInfoList .get(viewInfoList.size() - 1) .model - .set(DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED, false); + .set(SuggestionCommonProperties.BG_BOTTOM_CORNER_ROUNDED, false); viewInfoList .get(viewInfoList.size() - 1) .model - .set(DropdownCommonProperties.SHOW_DIVIDER, true); + .set(SuggestionCommonProperties.SHOW_DIVIDER, true); } - leoModel.set(DropdownCommonProperties.BG_TOP_CORNER_ROUNDED, viewInfoList.size() == 0); - leoModel.set(DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED, true); - leoModel.set(DropdownCommonProperties.SHOW_DIVIDER, false); + leoModel.set( + SuggestionCommonProperties.BG_TOP_CORNER_ROUNDED, viewInfoList.size() == 0); + leoModel.set(SuggestionCommonProperties.BG_BOTTOM_CORNER_ROUNDED, true); + leoModel.set(SuggestionCommonProperties.SHOW_DIVIDER, false); viewInfoList.add( tileNavSuggestPosition, diff --git a/browser/ui/android/strings/android_chrome_strings.grd b/browser/ui/android/strings/android_chrome_strings.grd index 9faafa62048..5900a0be50a 100644 --- a/browser/ui/android/strings/android_chrome_strings.grd +++ b/browser/ui/android/strings/android_chrome_strings.grd @@ -236,6 +236,12 @@ CHAR_LIMIT guidelines: Try searching the help center + + Recently Used + + + Delete + @@ -308,6 +314,9 @@ CHAR_LIMIT guidelines: Brave Tips + + Brave finds + @@ -536,12 +545,23 @@ For more settings that use data to improve your Brave experience, go to Inactive shortcuts + + Additional inactive sites + Extensions Some extensions can add search engines to Brave + + + Manage + + + Disable + + Add site search @@ -569,6 +589,18 @@ For more settings that use data to improve your Brave experience, go to Not valid + + Delete search engine + + + Are you sure you want to delete this search engine? + + + Delete + + + Cancel + @@ -699,6 +731,9 @@ For more settings that use data to improve your Brave experience, go to A virtual card hides your actual card to help protect you from potential fraud. <link1>Learn more about virtual cards</link1> + + A virtual card number will be filled when you check out with this card to protect your actual details. Manage in Brave Wallet. <link1>Learn more about virtual cards</link1> + Virtual card @@ -712,6 +747,9 @@ For more settings that use data to improve your Brave experience, go to Passwords and Autofill + + Autofill and passwords + Autofill services @@ -923,6 +961,11 @@ For more settings that use data to improve your Brave experience, go to Hidden on narrow screens + + + Pin to toolbar + + @@ -2918,6 +2961,9 @@ To change this setting, BEGIN_LINKdelete the Brave da Share… + + Open the menu to go back + Share via %sGmail @@ -2927,6 +2973,9 @@ To change this setting, BEGIN_LINKdelete the Brave da This page can't be printed + + Go back + Bookmark this page @@ -3651,6 +3700,12 @@ To change this setting, BEGIN_LINKdelete the Brave da Sign in to get the most out of Brave + + Sign in to Brave + + + Your organization requires you to sign in to use Brave. + Signing in\u2026 @@ -3980,9 +4035,6 @@ To change this setting, BEGIN_LINKdelete the Brave da <link>Learn more</link> about suggested content - - Manage - Apply your appearance preferences? @@ -4049,56 +4101,12 @@ To change this setting, BEGIN_LINKdelete the Brave da Personalize the background of this page - - Following - - - You'll find sites you follow here - - - Updates Unavailable - - - Waiting for content - - - Something went wrong. Try again later. - - - No connection. Try again later. - - - Discover - - - Discover by Brave - Discover - off Discover by Brave - off - - Following - - Control your stories and activity here - - New - - Options for Discover - - - Control your stories from the Options for Discover button - - - Unread stories ready - - Open sort options - Close sort options - Sort by Site - Sort by Latest - Site No stories available Check back later for new stories Can't refresh Discover @@ -4154,9 +4162,6 @@ To change this setting, BEGIN_LINKdelete the Brave da %sVacation” tab group has new activity - - Explore content to follow - @@ -4326,6 +4331,9 @@ To change this setting, BEGIN_LINKdelete the Brave da Manage windows + + Back + Forward @@ -4371,15 +4379,15 @@ To change this setting, BEGIN_LINKdelete the Brave da Extensions + + Open extensions menu + Manage Extensions Visit Web Store - - Tinker tank - Brave history @@ -4389,6 +4397,9 @@ To change this setting, BEGIN_LINKdelete the Brave da Delete browsing data + + Site controls + Downloads @@ -4505,15 +4516,6 @@ To change this setting, BEGIN_LINKdelete the Brave da Bookmark all tabs - - Unpin - - - Pin Gemini - - - Unpin Gemini - @@ -5044,9 +5046,6 @@ To change this setting, BEGIN_LINKdelete the Brave da other {See %1$d2 tabs with new activity in shared tab groups} } - - Manage account - Signed in as %1$sPeter Parker. %2$speter.parker@gmail.com. Brave sync chain error. Opens settings. @@ -5572,12 +5571,6 @@ To change this setting, BEGIN_LINKdelete the Brave da To restore a new window, reduce the total number of active windows to %1$d or fewer. Inactive windows are deleted after 6 months. - - To open a new window, reduce the total number of windows across active and inactive to %1$d or fewer. - - - To restore a new window, reduce the total number of windows across active and inactive to %1$d or fewer. Inactive windows are deleted after 6 months. - You can find all open tabs in the tab switcher @@ -5871,6 +5864,9 @@ To change this setting, BEGIN_LINKdelete the Brave da Open a new tab + + Search tabs + Reopen closed tab @@ -6111,12 +6107,6 @@ To change this setting, BEGIN_LINKdelete the Brave da - - Only %1$s5 windows can be shown - - - Select manage to see all windows - Manage @@ -6203,6 +6193,12 @@ To change this setting, BEGIN_LINKdelete the Brave da Pinch, hold, and drag to open tabs in a new window + + Swipe from the edge to go back + + + Tap to dismiss + @@ -6281,15 +6277,6 @@ To change this setting, BEGIN_LINKdelete the Brave da Send to - - Active %1$d5 days ago - - - Active 1 day ago - - - Active today - <link>Your devices</link> · %1$sfoo@gmail.com @@ -7459,6 +7446,18 @@ To change this setting, BEGIN_LINKdelete the Brave da + + Set Brave as your default + + + Fast and secure web browsing + + + Easily open links from message, documents and other apps + + + Seamlessly continue on any device + Make Brave default @@ -7746,16 +7745,27 @@ To change this setting, BEGIN_LINKdelete the Brave da No, thanks - Brave Finds opt-in bottom sheet + Brave finds opt-in bottom sheet - Brave Finds opt-in closed + Brave finds opt-in closed - Brave Finds opt-in opened at half height + Brave finds opt-in opened at half height - Brave Finds opt-in opened at full height + Brave finds opt-in opened at full height + + + Brave finds notifications turned on + + + Manage + + + + + Your task is still in progress diff --git a/browser/ui/android/strings/android_chrome_strings_override.grd b/browser/ui/android/strings/android_chrome_strings_override.grd index afde95b14fc..b3adc0a90df 100644 --- a/browser/ui/android/strings/android_chrome_strings_override.grd +++ b/browser/ui/android/strings/android_chrome_strings_override.grd @@ -132,6 +132,11 @@ CHAR_LIMIT guidelines: Use screen lock to see open Private windows + + + + + Brave Private diff --git a/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java b/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java index e56d0475384..e7e3e2d2cd5 100644 --- a/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java +++ b/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java @@ -8,8 +8,10 @@ package org.chromium.chrome.browser.toolbar.bottom; import org.chromium.base.supplier.MonotonicObservableSupplier; import org.chromium.base.supplier.NonNullObservableSupplier; import org.chromium.base.supplier.ObservableSuppliers; +import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.SettableNonNullObservableSupplier; import org.chromium.chrome.browser.browser_controls.BottomControlsStacker; +import org.chromium.chrome.browser.browser_controls.BottomControlsStacker.LayerType; import org.chromium.chrome.browser.browser_controls.BrowserStateBrowserControlsVisibilityDelegate; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.tab.TabObscuringHandler; @@ -38,6 +40,8 @@ class BraveBottomControlsMediator extends BottomControlsMediator { BottomControlsStacker controlsStacker, BrowserStateBrowserControlsVisibilityDelegate browserControlsVisibilityDelegate, FullscreenManager fullscreenManager, + @LayerType int layerType, + OneshotSupplier contentDelegateSupplier, TabObscuringHandler tabObscuringHandler, int bottomControlsHeight, int bottomControlsShadowHeight, @@ -50,6 +54,8 @@ class BraveBottomControlsMediator extends BottomControlsMediator { controlsStacker, browserControlsVisibilityDelegate, fullscreenManager, + layerType, + contentDelegateSupplier, tabObscuringHandler, bottomControlsHeight, bottomControlsShadowHeight, diff --git a/browser/ui/brave_browser_command_controller.cc b/browser/ui/brave_browser_command_controller.cc index 3cd2472da1a..8cfaae0b214 100644 --- a/browser/ui/brave_browser_command_controller.cc +++ b/browser/ui/brave_browser_command_controller.cc @@ -166,8 +166,7 @@ void BraveBrowserCommandController::OnTabStripModelChanged( UpdateCommandsForSend(); UpdateCommandsForPin(); - if (base::FeatureList::IsEnabled(features::kSideBySide) && - browser_->is_type_normal() && selection.active_tab_changed()) { + if (browser_->is_type_normal() && selection.active_tab_changed()) { UpdateCommandForSplitView(); } } @@ -515,13 +514,6 @@ void BraveBrowserCommandController::UpdateCommandsForPin() { } void BraveBrowserCommandController::UpdateCommandForSplitView() { - // Some upstream unit test calls split tab apis w/o enabling SideBySide - // feature. - if (!base::FeatureList::IsEnabled(features::kSideBySide)) { - CHECK_IS_TEST(); - return; - } - UpdateCommandEnabled( IDC_NEW_SPLIT_VIEW, brave::CanOpenNewSplitTabsWithSideBySide(base::to_address(browser_))); @@ -776,25 +768,21 @@ bool BraveBrowserCommandController::ExecuteBraveCommandWithDisposition( brave::BringAllTabs(&*browser_); break; case IDC_NEW_SPLIT_VIEW: { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); chrome::NewSplitTab(base::to_address(browser_), split_tabs::SplitTabCreatedSource::kToolbarButton); break; } case IDC_TILE_TABS: { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); brave::SplitTabsWithSideBySide( base::to_address(browser_), split_tabs::SplitTabCreatedSource::kToolbarButton); break; } case IDC_BREAK_TILE: { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); brave::RemoveSplitWithSideBySide(base::to_address(browser_)); break; } case IDC_SWAP_SPLIT_VIEW: { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); brave::SwapTabsInSplitWithSideBySide(base::to_address(browser_)); break; } diff --git a/browser/ui/brave_browser_command_controller_browsertest.cc b/browser/ui/brave_browser_command_controller_browsertest.cc index 6f195e83884..08a6be7cf29 100644 --- a/browser/ui/brave_browser_command_controller_browsertest.cc +++ b/browser/ui/brave_browser_command_controller_browsertest.cc @@ -580,17 +580,12 @@ class BraveBrowserCommandControllerWithSideBySideTest : public BraveBrowserCommandControllerTest { public: BraveBrowserCommandControllerWithSideBySideTest() { - scoped_features_.InitWithFeatures( - /*enabled_features*/ {features::kSideBySide}, {}); } ~BraveBrowserCommandControllerWithSideBySideTest() override = default; TabStripModel* tab_strip_model() { return browser()->tab_strip_model(); } CommandUpdater* command_updater() { return browser()->command_controller(); } - - private: - base::test::ScopedFeatureList scoped_features_; }; IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerWithSideBySideTest, diff --git a/browser/ui/browser_commands.cc b/browser/ui/browser_commands.cc index c2a60a34ced..ba319898861 100644 --- a/browser/ui/browser_commands.cc +++ b/browser/ui/browser_commands.cc @@ -245,13 +245,14 @@ void NewOffTheRecordWindowTor(Profile* profile) { TorProfileManager::SwitchToTorProfile(profile); } -void NewTorConnectionForSite(Browser* browser) { - Profile* profile = browser->profile(); +void NewTorConnectionForSite(BrowserWindowInterface* browser) { + Profile* profile = browser->GetProfile(); DCHECK(profile); tor::TorProfileService* service = TorProfileServiceFactory::GetForContext(profile); DCHECK(service); - WebContents* current_tab = browser->tab_strip_model()->GetActiveWebContents(); + WebContents* current_tab = + browser->GetTabStripModel()->GetActiveWebContents(); if (!current_tab) { return; } @@ -1040,8 +1041,6 @@ void ToggleAllBookmarksButtonVisibility(Browser* browser) { } bool CanOpenNewSplitTabsWithSideBySide(Browser* browser) { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); - auto* tab_strip_model = browser->tab_strip_model(); auto active_index = tab_strip_model->active_index(); if (active_index == TabStripModel::kNoTab) { @@ -1052,8 +1051,6 @@ bool CanOpenNewSplitTabsWithSideBySide(Browser* browser) { } bool CanSplitTabsWithSideBySide(Browser* browser) { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); - auto* tab_strip_model = browser->tab_strip_model(); if (tab_strip_model->empty()) { return false; @@ -1103,8 +1100,6 @@ void SplitTabsWithSideBySide(Browser* browser, } void RemoveSplitWithSideBySide(Browser* browser) { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); - auto selected_indices = GetSelectedIndices(browser); auto* tab_strip_model = browser->tab_strip_model(); for (auto index : selected_indices) { @@ -1115,8 +1110,6 @@ void RemoveSplitWithSideBySide(Browser* browser) { } void SwapTabsInSplitWithSideBySide(Browser* browser) { - CHECK(base::FeatureList::IsEnabled(features::kSideBySide)); - auto* tab_strip_model = browser->tab_strip_model(); auto active_index = tab_strip_model->active_index(); CHECK_NE(TabStripModel::kNoTab, active_index); diff --git a/browser/ui/browser_commands.h b/browser/ui/browser_commands.h index be76214c6ce..ab5f8b25649 100644 --- a/browser/ui/browser_commands.h +++ b/browser/ui/browser_commands.h @@ -38,7 +38,7 @@ void CleanAndCopySelectedURL(Browser* browser); #if BUILDFLAG(ENABLE_TOR) void NewOffTheRecordWindowTor(Browser* browser); void NewOffTheRecordWindowTor(Profile* profile); -void NewTorConnectionForSite(Browser*); +void NewTorConnectionForSite(BrowserWindowInterface*); #endif void ToggleAIChat(Browser* browser); diff --git a/browser/ui/content_settings/brave_autoplay_blocked_image_model.cc b/browser/ui/content_settings/brave_autoplay_blocked_image_model.cc index 9e034669154..bc5911df74a 100644 --- a/browser/ui/content_settings/brave_autoplay_blocked_image_model.cc +++ b/browser/ui/content_settings/brave_autoplay_blocked_image_model.cc @@ -17,7 +17,7 @@ using content::WebContents; BraveAutoplayBlockedImageModel::BraveAutoplayBlockedImageModel() - : ContentSettingSimpleImageModel(ImageType::MEDIASTREAM, + : ContentSettingSimpleImageModel(ImageType::kMediaStream, ContentSettingsType::AUTOPLAY) {} bool BraveAutoplayBlockedImageModel::UpdateAndGetVisibility( diff --git a/browser/ui/content_settings/brave_autoplay_blocked_image_model_browsertest.cc b/browser/ui/content_settings/brave_autoplay_blocked_image_model_browsertest.cc index 493a0909bef..0ff7689348e 100644 --- a/browser/ui/content_settings/brave_autoplay_blocked_image_model_browsertest.cc +++ b/browser/ui/content_settings/brave_autoplay_blocked_image_model_browsertest.cc @@ -35,6 +35,6 @@ IN_PROC_BROWSER_TEST_F(BraveAutoplayBlockedImageModelTest, CreateBubbleModel) { EXPECT_EQ(static_cast(model.get()) ->content_type(), simple_bubble->content_type()); - EXPECT_EQ(ImageType::MEDIASTREAM, model->image_type()); + EXPECT_EQ(ImageType::kMediaStream, model->image_type()); EXPECT_EQ(ContentSettingsType::AUTOPLAY, model->content_type()); } diff --git a/browser/ui/content_settings/brave_content_setting_image_models.cc b/browser/ui/content_settings/brave_content_setting_image_models.cc index bfb4f4d91a7..9dd5eeb600e 100644 --- a/browser/ui/content_settings/brave_content_setting_image_models.cc +++ b/browser/ui/content_settings/brave_content_setting_image_models.cc @@ -18,8 +18,8 @@ void BraveGenerateContentSettingImageModels( // https://github.com/brave/brave-browser/issues/1197 // https://github.com/brave/brave-browser/issues/199 auto to_remove = std::ranges::remove_if(*result, [](const auto& m) { - return m->image_type() == ImageType::COOKIES || - m->image_type() == ImageType::JAVASCRIPT; + return m->image_type() == ImageType::kCookies || + m->image_type() == ImageType::kJavaScript; }); result->erase(to_remove.begin(), to_remove.end()); diff --git a/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarManager.java b/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarManager.java index 7f1c6fc0694..e629be11d7e 100644 --- a/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarManager.java +++ b/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarManager.java @@ -9,10 +9,9 @@ import android.app.Activity; import android.view.ViewGroup; import org.chromium.base.Log; -import org.chromium.base.supplier.MonotonicObservableSupplier; +import org.chromium.base.supplier.NonNullObservableSupplier; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; @@ -31,14 +30,13 @@ public class BraveSnackbarManager extends SnackbarManager { Activity activity, ViewGroup snackbarParentView, @Nullable WindowAndroid windowAndroid, - @Nullable MonotonicObservableSupplier - edgeToEdgeControllerSupplier, + @Nullable NonNullObservableSupplier additionalBottomMarginPxSupplier, @Nullable ModalDialogManager modalDialogManager) { super( activity, snackbarParentView, windowAndroid, - edgeToEdgeControllerSupplier, + additionalBottomMarginPxSupplier, modalDialogManager); } diff --git a/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarView.java b/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarView.java index f75e4a553af..3ffba64f18a 100644 --- a/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarView.java +++ b/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/BraveSnackbarView.java @@ -18,9 +18,9 @@ import android.widget.LinearLayout; import android.widget.TextView; import org.chromium.base.Log; +import org.chromium.base.supplier.NonNullObservableSupplier; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.ui.messages.R; import org.chromium.ui.base.WindowAndroid; @@ -55,8 +55,14 @@ public class BraveSnackbarView extends SnackbarView { Snackbar snackbar, ViewGroup parentView, @Nullable WindowAndroid windowAndroid, - @Nullable EdgeToEdgeController edgeToEdgeSupplier) { - super(activity, manager, snackbar, parentView, windowAndroid, edgeToEdgeSupplier); + NonNullObservableSupplier additionalBottomMarginPxSupplier) { + super( + activity, + manager, + snackbar, + parentView, + windowAndroid, + additionalBottomMarginPxSupplier); } /** diff --git a/browser/ui/sidebar/sidebar_browsertest.cc b/browser/ui/sidebar/sidebar_browsertest.cc index e46182e10c0..dc089ddf77d 100644 --- a/browser/ui/sidebar/sidebar_browsertest.cc +++ b/browser/ui/sidebar/sidebar_browsertest.cc @@ -62,7 +62,6 @@ #include "chrome/browser/ui/side_panel/side_panel_registry.h" #include "chrome/browser/ui/side_panel/side_panel_ui.h" #include "chrome/browser/ui/tabs/features.h" -#include "chrome/browser/ui/tabs/public/tab_features.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/frame/multi_contents_view.h" @@ -1904,10 +1903,7 @@ IN_PROC_BROWSER_TEST_P(SidebarBrowserTestV1AndV2, auto* sidebar_container = GetSidebarContainerView(); // Get the tab registry and create a kToolbar type entry - auto* registry = browser() - ->GetActiveTabInterface() - ->GetTabFeatures() - ->side_panel_registry(); + auto* registry = SidePanelRegistry::From(browser()->GetActiveTabInterface()); ASSERT_TRUE(registry); // Create a kToolbar type SidePanelEntry diff --git a/browser/ui/sidebar/sidebar_utils.cc b/browser/ui/sidebar/sidebar_utils.cc index bc096867a39..a4e9f5d98e9 100644 --- a/browser/ui/sidebar/sidebar_utils.cc +++ b/browser/ui/sidebar/sidebar_utils.cc @@ -135,8 +135,7 @@ bool CanAddCurrentActiveTabToSidebar(Browser* browser) { } bool IsWebPanelFeatureEnabled() { - return base::FeatureList::IsEnabled(features::kSidebarWebPanel) && - base::FeatureList::IsEnabled(::features::kSideBySide); + return base::FeatureList::IsEnabled(features::kSidebarWebPanel); } SidePanelEntryId SidePanelIdFromSideBarItemType(BuiltInItemType type) { diff --git a/browser/ui/split_view/split_view_link_navigation_throttle.cc b/browser/ui/split_view/split_view_link_navigation_throttle.cc index 2f29cbf588d..9c3edd21c39 100644 --- a/browser/ui/split_view/split_view_link_navigation_throttle.cc +++ b/browser/ui/split_view/split_view_link_navigation_throttle.cc @@ -16,8 +16,7 @@ // static void SplitViewLinkNavigationThrottle::MaybeCreateAndAdd( content::NavigationThrottleRegistry& registry) { - if (base::FeatureList::IsEnabled(features::kSideBySide) && - base::FeatureList::IsEnabled(split_view::features::kSplitViewLink)) { + if (base::FeatureList::IsEnabled(split_view::features::kSplitViewLink)) { registry.AddThrottle( std::make_unique(registry)); } diff --git a/browser/ui/split_view/split_view_link_redirect_utils.cc b/browser/ui/split_view/split_view_link_redirect_utils.cc index d97dd68b4d0..036da911f47 100644 --- a/browser/ui/split_view/split_view_link_redirect_utils.cc +++ b/browser/ui/split_view/split_view_link_redirect_utils.cc @@ -155,8 +155,7 @@ namespace split_view { bool MaybeRedirectToRightPane(content::WebContents* source, const GURL& url, const content::Referrer& referrer) { - CHECK(base::FeatureList::IsEnabled(features::kSplitViewLink) && - base::FeatureList::IsEnabled(::features::kSideBySide)); + CHECK(base::FeatureList::IsEnabled(features::kSplitViewLink)); CHECK(source); bool from_window_open = false; diff --git a/browser/ui/tabs/BUILD.gn b/browser/ui/tabs/BUILD.gn index 375f6e09d3b..970b297a7df 100644 --- a/browser/ui/tabs/BUILD.gn +++ b/browser/ui/tabs/BUILD.gn @@ -40,6 +40,7 @@ if (!is_android) { "//brave/components/psst/common", "//chrome/browser/content_settings:content_settings_factory", "//chrome/browser/profiles", + "//chrome/browser/ui/side_panel:side_panel_views_dependent", "//chrome/browser/ui/tabs:impl", ] diff --git a/browser/ui/tabs/brave_tab_features.cc b/browser/ui/tabs/brave_tab_features.cc index 6c82bb0ac82..8a3d8b01c1c 100644 --- a/browser/ui/tabs/brave_tab_features.cc +++ b/browser/ui/tabs/brave_tab_features.cc @@ -14,6 +14,7 @@ #include "brave/browser/ui/side_panel/brave_side_panel_utils.h" #include "brave/components/ai_chat/core/common/buildflags/buildflags.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/side_panel/side_panel_registry.h" #include "chrome/browser/ui/tabs/public/tab_features.h" #include "chrome/common/chrome_isolated_world_ids.h" #include "components/tabs/public/tab_interface.h" @@ -51,8 +52,9 @@ void BraveTabFeatures::Init(TabInterface& tab, Profile* profile) { TabFeatures::Init(tab, profile); // Expect upstream's Init to create the registry. - CHECK(side_panel_registry()); - brave::RegisterContextualSidePanel(side_panel_registry(), tab.GetContents()); + auto* side_panel_registry = SidePanelRegistry::From(&tab); + CHECK(side_panel_registry); + brave::RegisterContextualSidePanel(side_panel_registry, tab.GetContents()); #if BUILDFLAG(ENABLE_AI_CHAT) if (ai_chat::IsAllowedForContext(profile)) { diff --git a/browser/ui/tabs/brave_tab_menu_browsertest.cc b/browser/ui/tabs/brave_tab_menu_browsertest.cc index 6fe17516881..28d2c58b790 100644 --- a/browser/ui/tabs/brave_tab_menu_browsertest.cc +++ b/browser/ui/tabs/brave_tab_menu_browsertest.cc @@ -66,7 +66,7 @@ class BraveTabMenuBrowserTest : public InProcessBrowserTest { return model_ptr; } - Browser* CreateBrowser(bool incognito) { + BrowserWindowInterface* CreateBrowser(bool incognito) { if (incognito) { return chrome::OpenEmptyWindow( browser()->profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true), @@ -76,23 +76,27 @@ class BraveTabMenuBrowserTest : public InProcessBrowserTest { /*should_trigger_session_restore=*/false); } - void AddTabs(Browser* browser, int new_tab_count, int pinned_tab_count) { - std::vector expected = {browser->tab_strip_model()->GetWebContentsAt(0)}; + void AddTabs(BrowserWindowInterface* browser, + int new_tab_count, + int pinned_tab_count) { + std::vector expected = {browser->GetTabStripModel()->GetWebContentsAt(0)}; for (int i = 0; i < new_tab_count; ++i) { expected.push_back(chrome::AddAndReturnTabAt(browser, GURL(), /*index=*/-1, /*foreground=*/false)); } for (int i = 0; i < pinned_tab_count; ++i) { - browser->tab_strip_model()->SetTabPinned(i, true); + browser->GetTabStripModel()->SetTabPinned(i, true); } } - std::vector GetWebContentses(Browser* browser) { + std::vector GetWebContentses( + BrowserWindowInterface* browser) { std::vector web_contentses; - const auto count = browser->tab_strip_model()->count(); + const auto count = browser->GetTabStripModel()->count(); for (int i = 0; i < count; i++) { - web_contentses.push_back(browser->tab_strip_model()->GetWebContentsAt(i)); + web_contentses.push_back( + browser->GetTabStripModel()->GetWebContentsAt(i)); } return web_contentses; } @@ -135,7 +139,7 @@ IN_PROC_BROWSER_TEST_F(BraveTabMenuBrowserTest, // Open a new browser and the command becomes visible. auto* new_browser = CreateBrowser(/*incognito=*/false); - ASSERT_FALSE(new_browser->tab_strip_model()->empty()); + ASSERT_FALSE(new_browser->GetTabStripModel()->empty()); EXPECT_TRUE(is_command_visible()); // Close the new browser and the command becomes invisible again. @@ -144,7 +148,7 @@ IN_PROC_BROWSER_TEST_F(BraveTabMenuBrowserTest, // New incognito window shouldn't affect the visibility of the command. new_browser = CreateBrowser(/*incognito=*/true); - ASSERT_FALSE(new_browser->tab_strip_model()->empty()); + ASSERT_FALSE(new_browser->GetTabStripModel()->empty()); EXPECT_FALSE(is_command_visible()); } @@ -155,12 +159,12 @@ IN_PROC_BROWSER_TEST_F(BraveTabMenuBrowserTest, constexpr auto kNewTabCount = 4; constexpr auto kPinnedTabCount = 2; AddTabs(new_browser, kNewTabCount, kPinnedTabCount); - ASSERT_EQ(new_browser->tab_strip_model()->count(), kNewTabCount + 1); - ASSERT_EQ(new_browser->tab_strip_model()->IndexOfFirstNonPinnedTab(), + ASSERT_EQ(new_browser->GetTabStripModel()->count(), kNewTabCount + 1); + ASSERT_EQ(new_browser->GetTabStripModel()->IndexOfFirstNonPinnedTab(), kPinnedTabCount); auto expected = GetWebContentses(new_browser); - auto* tab_strip_model = browser()->tab_strip_model(); + auto* tab_strip_model = browser()->GetTabStripModel(); AddTabs(browser(), /*new_tab_count*/ 1, /*pinned_tab*/ 1); ASSERT_EQ(tab_strip_model->count(), 2); ASSERT_TRUE(tab_strip_model->IsTabPinned(0)); @@ -190,16 +194,16 @@ IN_PROC_BROWSER_TEST_F(BraveTabMenuBrowserTest, BringAllTabsToThisWindow_MultipleWindows) { auto* new_browser_1 = CreateBrowser(/*incognito=*/false); AddTabs(new_browser_1, /*new_tab_count=*/2, /*pinned_tab_count=*/0); - auto tab_count = new_browser_1->tab_strip_model()->count(); + auto tab_count = new_browser_1->GetTabStripModel()->count(); auto* new_browser_2 = CreateBrowser(/*incognito=*/false); AddTabs(new_browser_2, /*new_tab_count=*/3, /*pinned_tab_count=*/0); - tab_count += new_browser_2->tab_strip_model()->count(); + tab_count += new_browser_2->GetTabStripModel()->count(); auto* incognito_browser = CreateBrowser(/*incognito=*/true); AddTabs(incognito_browser, /*new_tab_count=*/4, /*pinned_tab_count=*/0); const auto incognito_tab_count = - incognito_browser->tab_strip_model()->count(); + incognito_browser->GetTabStripModel()->count(); auto menu = CreateMenuControllerAt(0); auto* menu_model = CreateMenuModelAt(menu.get(), 0); @@ -211,7 +215,8 @@ IN_PROC_BROWSER_TEST_F(BraveTabMenuBrowserTest, /*event_flags=*/0); EXPECT_EQ(browser()->tab_strip_model()->count(), tab_count + 1); - EXPECT_EQ(incognito_browser->tab_strip_model()->count(), incognito_tab_count); + EXPECT_EQ(incognito_browser->GetTabStripModel()->count(), + incognito_tab_count); } IN_PROC_BROWSER_TEST_F(BraveTabMenuBrowserTest, diff --git a/browser/ui/tabs/shared_pinned_tab_dummy_view.cc b/browser/ui/tabs/shared_pinned_tab_dummy_view.cc new file mode 100644 index 00000000000..06d446f0b08 --- /dev/null +++ b/browser/ui/tabs/shared_pinned_tab_dummy_view.cc @@ -0,0 +1,13 @@ +// Copyright (c) 2026 The Brave Authors. All rights reserved. +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this file, +// You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "brave/browser/ui/tabs/shared_pinned_tab_dummy_view.h" + +SharedPinnedTabDummyView::SharedPinnedTabDummyView( + content::WebContents* shared_contents, + content::WebContents* dummy_contents) + : shared_contents_(shared_contents), dummy_contents_(dummy_contents) {} + +SharedPinnedTabDummyView::~SharedPinnedTabDummyView() = default; diff --git a/browser/ui/tabs/shared_pinned_tab_dummy_view.h b/browser/ui/tabs/shared_pinned_tab_dummy_view.h index cebbe1671de..9eebd4c5d5a 100644 --- a/browser/ui/tabs/shared_pinned_tab_dummy_view.h +++ b/browser/ui/tabs/shared_pinned_tab_dummy_view.h @@ -6,7 +6,7 @@ #ifndef BRAVE_BROWSER_UI_TABS_SHARED_PINNED_TAB_DUMMY_VIEW_H_ #define BRAVE_BROWSER_UI_TABS_SHARED_PINNED_TAB_DUMMY_VIEW_H_ -#include +#include "base/memory/raw_ptr.h" namespace content { class WebContents; @@ -20,16 +20,20 @@ class WebContents; // * Don't need to plumb tabs data to web ui. class SharedPinnedTabDummyView { public: - SharedPinnedTabDummyView() = default; - virtual ~SharedPinnedTabDummyView() = default; + // Install the view on given web contents by transferring ownership of dummy + // view to the web view. The dummy view will be uninstalled automatically when + // the web view's web contents changes. + static void CreateAndInstall(content::WebContents* shared_contents, + content::WebContents* dummy_contents); - static std::unique_ptr Create( - content::WebContents* shared_contents, - content::WebContents* dummy_contents); + virtual ~SharedPinnedTabDummyView(); - // Install the view on given web contents. Note that the view will be - // uninstalled automatically by the web view. - virtual void Install() = 0; + protected: + SharedPinnedTabDummyView(content::WebContents* shared_contents, + content::WebContents* dummy_contents); + + raw_ptr shared_contents_; + raw_ptr dummy_contents_; }; #endif // BRAVE_BROWSER_UI_TABS_SHARED_PINNED_TAB_DUMMY_VIEW_H_ diff --git a/browser/ui/tabs/shared_pinned_tab_service.cc b/browser/ui/tabs/shared_pinned_tab_service.cc index 723f43c7548..ed2b20ae2a9 100644 --- a/browser/ui/tabs/shared_pinned_tab_service.cc +++ b/browser/ui/tabs/shared_pinned_tab_service.cc @@ -75,8 +75,6 @@ class DummyContentsData raw_ptr shared_contents_ = nullptr; bool stop_propagation_ = false; - - std::unique_ptr dummy_view_; }; //////////////////////////////////////////////////////////////////////////////// @@ -189,12 +187,7 @@ void DummyContentsData::SynchronizeURL() { } void DummyContentsData::ShowDummyView() { - if (!dummy_view_) { - dummy_view_ = - SharedPinnedTabDummyView::Create(shared_contents_, dummy_contents_); - } - - dummy_view_->Install(); + SharedPinnedTabDummyView::CreateAndInstall(shared_contents_, dummy_contents_); } WEB_CONTENTS_USER_DATA_KEY_IMPL(DummyContentsData); diff --git a/browser/ui/tabs/test/shared_pinned_tab_service_browsertest.cc b/browser/ui/tabs/test/shared_pinned_tab_service_browsertest.cc index d53ec2246c0..c936d4639e4 100644 --- a/browser/ui/tabs/test/shared_pinned_tab_service_browsertest.cc +++ b/browser/ui/tabs/test/shared_pinned_tab_service_browsertest.cc @@ -42,7 +42,8 @@ SharedPinnedTabServiceBrowserTest::~SharedPinnedTabServiceBrowserTest() = Browser* SharedPinnedTabServiceBrowserTest::CreateNewBrowser() { auto* new_browser = chrome::OpenEmptyWindow(browser()->profile(), - /*should_trigger_session_restore= */ false); + /*should_trigger_session_restore= */ false) + ->GetBrowserForMigrationOnly(); browsers_.push_back(new_browser->AsWeakPtr()); return new_browser; } diff --git a/browser/ui/toolbar/brave_bookmark_context_menu_controller.cc b/browser/ui/toolbar/brave_bookmark_context_menu_controller.cc index b0d4b6b332d..86368194295 100644 --- a/browser/ui/toolbar/brave_bookmark_context_menu_controller.cc +++ b/browser/ui/toolbar/brave_bookmark_context_menu_controller.cc @@ -35,13 +35,15 @@ BraveBookmarkContextMenuController::BraveBookmarkContextMenuController( Profile* profile, BookmarkLaunchLocation opened_from, const std::vector< - raw_ptr>& selection) + raw_ptr>& selection, + bool can_paste) : BookmarkContextMenuController(parent_window, delegate, browser, profile, opened_from, - selection), + selection, + can_paste), browser_(browser), prefs_(browser_ ? browser_->profile()->GetPrefs() : nullptr) { if (!browser_) { diff --git a/browser/ui/toolbar/brave_bookmark_context_menu_controller.h b/browser/ui/toolbar/brave_bookmark_context_menu_controller.h index a66eb1c9ec3..6cfa6ccd0bd 100644 --- a/browser/ui/toolbar/brave_bookmark_context_menu_controller.h +++ b/browser/ui/toolbar/brave_bookmark_context_menu_controller.h @@ -41,7 +41,8 @@ class BraveBookmarkContextMenuController Profile* profile, BookmarkLaunchLocation opened_from, const std::vector>& selection); + VectorExperimental>>& selection, + bool can_paste); BraveBookmarkContextMenuController( const BraveBookmarkContextMenuController&) = delete; diff --git a/browser/ui/toolbar/brave_bookmark_context_menu_controller_unittest.cc b/browser/ui/toolbar/brave_bookmark_context_menu_controller_unittest.cc index cdb0079da63..018e01dde1b 100644 --- a/browser/ui/toolbar/brave_bookmark_context_menu_controller_unittest.cc +++ b/browser/ui/toolbar/brave_bookmark_context_menu_controller_unittest.cc @@ -79,7 +79,7 @@ TEST_F(BraveBookmarkContextMenuControllerTest, BookmarkContextMenuController controller( gfx::NativeWindow(), nullptr, nullptr, profile_.get(), BookmarkLaunchLocation::kSidePanelContextMenu, - {model_->bookmark_bar_node()}); + {model_->bookmark_bar_node()}, /*can_paste=*/false); // Show apps command is not present by default. sync_preferences::TestingPrefServiceSyncable* prefs = @@ -116,7 +116,8 @@ TEST_F(BraveBookmarkContextMenuControllerTest, TEST_F(BraveBookmarkContextMenuControllerTest, AddBraveBookmarksSubmenu) { BraveBookmarkContextMenuController controller( gfx::NativeWindow(), nullptr, nullptr, profile_.get(), - BookmarkLaunchLocation::kSidePanelFolder, {model_->bookmark_bar_node()}); + BookmarkLaunchLocation::kSidePanelFolder, {model_->bookmark_bar_node()}, + /*can_paste=*/false); EXPECT_FALSE(controller.menu_model() ->GetIndexOfCommandId(IDC_BOOKMARK_BAR_ALWAYS_SHOW) .has_value()); @@ -191,7 +192,8 @@ TEST_F(BraveBookmarkContextMenuControllerTest, model_->bookmark_bar_node(), 0, u"t", GURL("https://example.com")); BraveBookmarkContextMenuController controller( gfx::NativeWindow(), nullptr, nullptr, profile_.get(), - BookmarkLaunchLocation::kSidePanelFolder, {url_node}); + BookmarkLaunchLocation::kSidePanelFolder, {url_node}, + /*can_paste=*/false); EXPECT_FALSE( controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER)); @@ -215,7 +217,8 @@ TEST_F(BraveBookmarkContextMenuContainersTest, model_->bookmark_bar_node(), 0, u"t", GURL("https://example.com")); BraveBookmarkContextMenuController controller( gfx::NativeWindow(), nullptr, nullptr, profile_.get(), - BookmarkLaunchLocation::kSidePanelFolder, {url_node}); + BookmarkLaunchLocation::kSidePanelFolder, {url_node}, + /*can_paste=*/false); ASSERT_TRUE( controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER)); @@ -238,7 +241,7 @@ TEST_F(BraveBookmarkContextMenuContainersTest, model_->AddFolder(model_->bookmark_bar_node(), 0, u"f"); BraveBookmarkContextMenuController controller( gfx::NativeWindow(), nullptr, nullptr, profile_.get(), - BookmarkLaunchLocation::kSidePanelFolder, {folder}); + BookmarkLaunchLocation::kSidePanelFolder, {folder}, /*can_paste=*/false); EXPECT_FALSE( controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER)); @@ -253,7 +256,7 @@ TEST_F(BraveBookmarkContextMenuContainersTest, u"b", GURL("https://b.example/")); BraveBookmarkContextMenuController controller( gfx::NativeWindow(), nullptr, nullptr, profile_.get(), - BookmarkLaunchLocation::kSidePanelFolder, {a, b}); + BookmarkLaunchLocation::kSidePanelFolder, {a, b}, /*can_paste=*/false); EXPECT_FALSE( controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER)); diff --git a/browser/ui/views/bookmarks/brave_bookmark_context_menu.cc b/browser/ui/views/bookmarks/brave_bookmark_context_menu.cc index a1c0cacd17b..eeaa6c88630 100644 --- a/browser/ui/views/bookmarks/brave_bookmark_context_menu.cc +++ b/browser/ui/views/bookmarks/brave_bookmark_context_menu.cc @@ -27,13 +27,15 @@ BraveBookmarkContextMenu::BraveBookmarkContextMenu( BookmarkLaunchLocation opened_from, const std::vector< raw_ptr>& selection, - bool close_on_remove) + bool close_on_remove, + bool can_paste) : BookmarkContextMenu(parent_widget, browser, profile, opened_from, selection, - close_on_remove) { + close_on_remove, + can_paste) { auto* submenu = menu()->GetMenuItemByID(IDC_BRAVE_BOOKMARK_BAR_SUBMENU); DCHECK(submenu); auto* submenu_model = controller_->GetBookmarkSubmenuModel(); diff --git a/browser/ui/views/bookmarks/brave_bookmark_context_menu.h b/browser/ui/views/bookmarks/brave_bookmark_context_menu.h index 7958e97c2fc..6e13f34bf19 100644 --- a/browser/ui/views/bookmarks/brave_bookmark_context_menu.h +++ b/browser/ui/views/bookmarks/brave_bookmark_context_menu.h @@ -21,7 +21,8 @@ class BraveBookmarkContextMenu : public BookmarkContextMenu { BookmarkLaunchLocation opened_from, const std::vector>& selection, - bool close_on_remove); + bool close_on_remove, + bool can_paste); BraveBookmarkContextMenu(const BraveBookmarkContextMenu&) = delete; BraveBookmarkContextMenu& operator=(const BraveBookmarkContextMenu&) = delete; diff --git a/browser/ui/views/bookmarks/brave_bookmark_context_menu_unittest.cc b/browser/ui/views/bookmarks/brave_bookmark_context_menu_unittest.cc index 6165f5e0dc6..300354612e1 100644 --- a/browser/ui/views/bookmarks/brave_bookmark_context_menu_unittest.cc +++ b/browser/ui/views/bookmarks/brave_bookmark_context_menu_unittest.cc @@ -66,7 +66,7 @@ class BraveBookmarkContextMenuTest : public testing::Test { model_->bookmark_bar_node()}; auto menu = std::make_unique( nullptr, nullptr, profile_.get(), BookmarkLaunchLocation::kNone, nodes, - false); + false, /*can_paste=*/false); menu->GetControllerForTesting()->SetPrefsForTesting(prefs_.get()); return menu; } diff --git a/browser/ui/views/brave_tab_search_bubble_host.cc b/browser/ui/views/brave_tab_search_bubble_host.cc index 79100721076..3254571b40d 100644 --- a/browser/ui/views/brave_tab_search_bubble_host.cc +++ b/browser/ui/views/brave_tab_search_bubble_host.cc @@ -18,10 +18,9 @@ void BraveTabSearchBubbleHost::SetBubbleArrow( } bool BraveTabSearchBubbleHost::ShowTabSearchBubble( - bool triggered_by_keyboard_shortcut, - tab_search::mojom::TabSearchSection section) { - bool result = TabSearchBubbleHost::ShowTabSearchBubble( - triggered_by_keyboard_shortcut, section); + bool triggered_by_keyboard_shortcut) { + bool result = + TabSearchBubbleHost::ShowTabSearchBubble(triggered_by_keyboard_shortcut); if (!arrow_ || !result) { return result; } diff --git a/browser/ui/views/brave_tab_search_bubble_host.h b/browser/ui/views/brave_tab_search_bubble_host.h index ff229015d55..f1f41d77837 100644 --- a/browser/ui/views/brave_tab_search_bubble_host.h +++ b/browser/ui/views/brave_tab_search_bubble_host.h @@ -19,9 +19,7 @@ class BraveTabSearchBubbleHost : public TabSearchBubbleHost { // TabSearchBubbleHost: bool ShowTabSearchBubble( - bool triggered_by_keyboard_shortcut = false, - tab_search::mojom::TabSearchSection section = - tab_search::mojom::TabSearchSection::kNone) override; + bool triggered_by_keyboard_shortcut = false) override; private: std::optional arrow_; diff --git a/browser/ui/views/frame/brave_browser_view.cc b/browser/ui/views/frame/brave_browser_view.cc index 79a6b130b89..2a59eade1bc 100644 --- a/browser/ui/views/frame/brave_browser_view.cc +++ b/browser/ui/views/frame/brave_browser_view.cc @@ -278,10 +278,6 @@ bool BraveBrowserView::ShouldUseBraveWebViewRoundedCornersForContents( return true; } - if (!base::FeatureList::IsEnabled(features::kSideBySide)) { - return false; - } - auto* model = browser->tab_strip_model(); if (model->empty()) { return false; @@ -297,20 +293,6 @@ bool BraveBrowserView::ShouldUseBraveWebViewRoundedCornersForContents( } BraveBrowserView::BraveBrowserView(Browser* browser) : BrowserView(browser) { -#if BUILDFLAG(ENABLE_SPEEDREADER) - // When SideBySide is enabled, each ContentsContainerView in MultiContentsView - // own ReaderModeToolbarView. - if (!base::FeatureList::IsEnabled(features::kSideBySide)) { - reader_mode_toolbar_ = contents_container_->AddChildView( - std::make_unique(browser_->profile())); - contents_container_->SetLayoutManager( - std::make_unique( - GetActiveContentsContainerView(), lens_overlay_view_, - reader_mode_toolbar_, - /*scrim_view=*/nullptr)); - } -#endif - // Need this background view always as we have contents margin/rounded corners // when split view is active regardless of rounded corners feature. contents_background_view_ = @@ -550,13 +532,9 @@ void BraveBrowserView::SetStarredState(bool is_starred) { #if BUILDFLAG(ENABLE_SPEEDREADER) ReaderModeToolbarView* BraveBrowserView::reader_mode_toolbar() { - if (base::FeatureList::IsEnabled(features::kSideBySide)) { return BraveContentsContainerView::From( GetBraveMultiContentsView()->GetActiveContentsContainerView()) ->reader_mode_toolbar(); - } - - return reader_mode_toolbar_; } speedreader::SpeedreaderBubbleView* BraveBrowserView::ShowSpeedreaderBubble( @@ -597,7 +575,6 @@ void BraveBrowserView::UpdateReaderModeToolbar() { reader_mode_toolbar()->SetVisible( is_distilled(browser()->tab_strip_model()->GetActiveWebContents())); - if (base::FeatureList::IsEnabled(features::kSideBySide)) { // Need to update inactive split tabs' reader mode toolbar because // it's also visible. auto* contents_container = BraveContentsContainerView::From( @@ -605,7 +582,6 @@ void BraveBrowserView::UpdateReaderModeToolbar() { auto* reader_mode_toolbar = contents_container->reader_mode_toolbar(); reader_mode_toolbar->SetVisible( is_distilled(contents_container->contents_view()->web_contents())); - } } #endif // BUILDFLAG(ENABLE_SPEEDREADER) diff --git a/browser/ui/views/frame/brave_tab_strip_region_view.cc b/browser/ui/views/frame/brave_tab_strip_region_view.cc index 0e8043d21af..11762a01855 100644 --- a/browser/ui/views/frame/brave_tab_strip_region_view.cc +++ b/browser/ui/views/frame/brave_tab_strip_region_view.cc @@ -23,6 +23,7 @@ #include "chrome/browser/ui/views/frame/browser_frame_view.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/tabs/shared/tab_strip_combo_button.h" +#include "chrome/browser/ui/views/tabs/tab_search_button.h" #include "chrome/browser/ui/views/tabs/tab_strip_control_button.h" #include "chrome/grit/generated_resources.h" #include "components/prefs/pref_service.h" @@ -343,10 +344,10 @@ void BraveHorizontalTabStripRegionView::Initialize() { ntb->SetVectorIcon(kLeoPlusAddIcon); } - if (features::HasTabSearchToolbarButton() && tab_search_container_) { + if (features::HasTabSearchToolbarButton() && tab_search_button_) { // We have tab search button on toolbar, so we don't need to show the // tab search container in horizontal tab strip region view. - tab_search_container_->SetVisible(false); + tab_search_button_->SetVisible(false); } CreateScrollButtonsIfNeeded(); diff --git a/browser/ui/views/frame/brave_tabs_search_button_browsertest.cc b/browser/ui/views/frame/brave_tabs_search_button_browsertest.cc index 8bf7979c95a..f03a4ed5549 100644 --- a/browser/ui/views/frame/brave_tabs_search_button_browsertest.cc +++ b/browser/ui/views/frame/brave_tabs_search_button_browsertest.cc @@ -10,6 +10,7 @@ #include "chrome/browser/ui/frame/window_frame_util.h" #include "chrome/browser/ui/tab_search_feature.h" #include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.h" #include "chrome/browser/ui/views/interaction/browser_elements_views.h" #include "chrome/browser/ui/views/tab_search_bubble_host.h" #include "chrome/browser/ui/views/tabs/tab_search_button.h" @@ -18,6 +19,7 @@ #include "chrome/test/base/ui_test_utils.h" #include "components/prefs/pref_service.h" #include "content/public/test/browser_test.h" +#include "ui/views/view_utils.h" class BraveTabsSearchButtonTest : public InProcessBrowserTest, public ::testing::WithParamInterface { @@ -48,15 +50,19 @@ IN_PROC_BROWSER_TEST_F(BraveTabsSearchButtonTest, HideShowSettingTest) { } IN_PROC_BROWSER_TEST_F(BraveTabsSearchButtonTest, - HideTabSearchContainerInHorizontalTabStripRegionView) { + HideTabSearchButtonInHorizontalTabStripRegionView) { // We always have tab search button on toolbar. ASSERT_TRUE(features::HasTabSearchToolbarButton()); - if (auto* tab_search_container = - BrowserElementsViews::From(browser())->GetViewAs( - kTabSearchContainerElementId)) { - // In case upstream created tab search container in horizontal tab strip - // region view, we should hide it. - EXPECT_FALSE(tab_search_container->GetVisible()); + auto* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); + auto* tab_strip_region_view = + views::AsViewClass( + browser_view->tab_strip_view()); + ASSERT_TRUE(tab_strip_region_view); + + if (auto* tab_search_button = tab_strip_region_view->GetTabSearchButton()) { + // In case upstream created a tab search button in horizontal tab strip + // region view, we should hide it since Brave has it on the toolbar. + EXPECT_FALSE(tab_search_button->GetVisible()); } } diff --git a/browser/ui/views/frame/split_view/brave_contents_container_view.cc b/browser/ui/views/frame/split_view/brave_contents_container_view.cc index 70f9a198b87..2e6b2697bc9 100644 --- a/browser/ui/views/frame/split_view/brave_contents_container_view.cc +++ b/browser/ui/views/frame/split_view/brave_contents_container_view.cc @@ -74,7 +74,6 @@ BraveContentsContainerView::BraveContentsContainerView( reader_mode_toolbar_->SetDelegate(this); #endif - if (base::FeatureList::IsEnabled(features::kSideBySide)) { // To prevent |mini_toolbar_| becomes dangling pointer. { auto old_toolbar = RemoveChildViewT(mini_toolbar_); @@ -87,7 +86,6 @@ BraveContentsContainerView::BraveContentsContainerView( browser_view, contents_view_)); container_outline_ = AddChildView( std::make_unique(mini_toolbar_)); - } if (for_web_panel_) { // tool bar's menu button is only valid for split view. diff --git a/browser/ui/views/frame/split_view/brave_multi_contents_view_mini_toolbar.cc b/browser/ui/views/frame/split_view/brave_multi_contents_view_mini_toolbar.cc index 9994e019fd2..5f03c1c90ef 100644 --- a/browser/ui/views/frame/split_view/brave_multi_contents_view_mini_toolbar.cc +++ b/browser/ui/views/frame/split_view/brave_multi_contents_view_mini_toolbar.cc @@ -52,7 +52,7 @@ BraveMultiContentsViewMiniToolbar::~BraveMultiContentsViewMiniToolbar() = default; void BraveMultiContentsViewMiniToolbar::HideMenuButton() { - image_button_->SetVisible(false); + close_button_->SetVisible(false); } void BraveMultiContentsViewMiniToolbar::UpdateState(bool is_active, diff --git a/browser/ui/views/frame/vertical_tabs/BUILD.gn b/browser/ui/views/frame/vertical_tabs/BUILD.gn index c2e151c3d66..cc7e4011e13 100644 --- a/browser/ui/views/frame/vertical_tabs/BUILD.gn +++ b/browser/ui/views/frame/vertical_tabs/BUILD.gn @@ -35,6 +35,7 @@ source_set("vertical_tabs") { "//chrome/browser/ui/color:color_headers", "//chrome/browser/ui/color:mixers", "//chrome/browser/ui/exclusive_access", + "//chrome/browser/ui/frame", "//chrome/browser/ui/tabs", "//chrome/browser/ui/views/toolbar", "//chrome/common:constants", diff --git a/browser/ui/views/infobars/web_discovery_infobar_content_view.cc b/browser/ui/views/infobars/web_discovery_infobar_content_view.cc index a3af50a3f41..c2e07857d3d 100644 --- a/browser/ui/views/infobars/web_discovery_infobar_content_view.cc +++ b/browser/ui/views/infobars/web_discovery_infobar_content_view.cc @@ -51,8 +51,7 @@ constexpr int kNarrowLayoutHorizontalPadding = 10; void OpenMoreInfoPage() { if (auto* browser = GetLastActiveBrowserWindowInterfaceWithAnyProfile()) { - ShowSingletonTab(browser->GetBrowserForMigrationOnly(), - GURL(kWebDiscoveryLearnMoreUrl)); + ShowSingletonTab(browser, GURL(kWebDiscoveryLearnMoreUrl)); } } diff --git a/browser/ui/views/location_bar/brave_location_bar_view.cc b/browser/ui/views/location_bar/brave_location_bar_view.cc index 629d30436ea..dcfe2350626 100644 --- a/browser/ui/views/location_bar/brave_location_bar_view.cc +++ b/browser/ui/views/location_bar/brave_location_bar_view.cc @@ -121,7 +121,7 @@ void BraveLocationBarView::Init() { focus_ring->SetPathGenerator( std::make_unique< BraveLocationBarViewFocusRingHighlightPathGenerator>()); - if (const auto color_id = GetFocusRingColor(profile())) { + if (const auto color_id = GetFocusRingColor(GetProfile())) { focus_ring->SetColorId(color_id.value()); } } @@ -141,7 +141,7 @@ void BraveLocationBarView::Init() { std::make_unique(browser_->profile(), this, this)); #endif - if (PromotionButtonController::PromotionEnabled(profile()->GetPrefs())) { + if (PromotionButtonController::PromotionEnabled(GetProfile()->GetPrefs())) { promotion_button_ = AddChildView(std::make_unique()); promotion_controller_ = std::make_unique( promotion_button_, omnibox_view_, browser()); @@ -154,7 +154,7 @@ void BraveLocationBarView::Init() { // brave action buttons brave_actions_ = AddChildView( - std::make_unique(browser_, profile())); + std::make_unique(browser_, GetProfile())); brave_actions_->Init(); // Call Update again to cause a Layout Update(nullptr); diff --git a/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc b/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc index 571ba4bb18c..f3050b24981 100644 --- a/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc +++ b/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc @@ -49,7 +49,7 @@ IN_PROC_BROWSER_TEST_F(OmniboxAutocompleteTest, AutocompleteDisabledTest) { omnibox::kAutocompleteEnabled)); omnibox_view()->SetUserText(u"foo", /* update_popup=*/true); - edit_model()->StartAutocomplete(false, false); + edit_model()->StartAutocomplete(false); // Check popup is opened and results are not empty. EXPECT_FALSE(location_bar_view() @@ -65,7 +65,7 @@ IN_PROC_BROWSER_TEST_F(OmniboxAutocompleteTest, AutocompleteDisabledTest) { browser()->profile()->GetPrefs()->SetBoolean(omnibox::kAutocompleteEnabled, false); omnibox_view()->SetUserText(u"bar", /* update_popup=*/true); - edit_model()->StartAutocomplete(false, false); + edit_model()->StartAutocomplete(false); // Check popup isn't opened and result is empty. EXPECT_TRUE(location_bar_view() diff --git a/browser/ui/views/permissions/permission_prompt_bubble_base_view_browsertest.cc b/browser/ui/views/permissions/permission_prompt_bubble_base_view_browsertest.cc index d7e38897dfe..9a88b208416 100644 --- a/browser/ui/views/permissions/permission_prompt_bubble_base_view_browsertest.cc +++ b/browser/ui/views/permissions/permission_prompt_bubble_base_view_browsertest.cc @@ -78,6 +78,7 @@ class MockPermissionPromptDelegate const permissions::PermissionPrompt* GetCurrentPrompt() const override { return nullptr; } + bool ShouldShowLocationPrecisionSelector() const override { return false; } base::WeakPtr GetWeakPtr() override { return weak_ptr_factory_.GetWeakPtr(); diff --git a/browser/ui/views/profiles/brave_incognito_menu_view.cc b/browser/ui/views/profiles/brave_incognito_menu_view.cc index a63416b9d7b..d455abc4975 100644 --- a/browser/ui/views/profiles/brave_incognito_menu_view.cc +++ b/browser/ui/views/profiles/brave_incognito_menu_view.cc @@ -10,6 +10,7 @@ #include #include "base/check.h" +#include "brave/app/vector_icons/vector_icons.h" #include "brave/components/tor/buildflags/buildflags.h" #include "brave/grit/brave_generated_resources.h" #include "chrome/app/vector_icons/vector_icons.h" diff --git a/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.cc b/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.cc index 1f11706f04f..c2520410bc1 100644 --- a/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.cc +++ b/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.cc @@ -8,8 +8,12 @@ BraveRenderViewContextMenuViews::BraveRenderViewContextMenuViews( content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params, - bool is_paste_enabled) - : RenderViewContextMenuViews(render_frame_host, params, is_paste_enabled) {} + bool is_paste_enabled, + bool is_paste_and_match_style_enabled) + : RenderViewContextMenuViews(render_frame_host, + params, + is_paste_enabled, + is_paste_and_match_style_enabled) {} BraveRenderViewContextMenuViews::~BraveRenderViewContextMenuViews() = default; @@ -17,9 +21,11 @@ BraveRenderViewContextMenuViews::~BraveRenderViewContextMenuViews() = default; RenderViewContextMenuViews* BraveRenderViewContextMenuViews::Create( content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params, - bool is_paste_enabled) { + bool is_paste_enabled, + bool is_paste_and_match_style_enabled) { return new BraveRenderViewContextMenuViews(render_frame_host, params, - is_paste_enabled); + is_paste_enabled, + is_paste_and_match_style_enabled); } void BraveRenderViewContextMenuViews::Show() { diff --git a/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.h b/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.h index c725e97bea3..3b9ca3934cf 100644 --- a/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.h +++ b/browser/ui/views/renderer_context_menu/brave_render_view_context_menu_views.h @@ -22,7 +22,8 @@ class BraveRenderViewContextMenuViews : public RenderViewContextMenuViews { // NOLINTNEXTLINE(runtime/references) content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params, - bool is_paste_enabled); + bool is_paste_enabled, + bool is_paste_and_match_style_enabled); void Show() override; @@ -31,7 +32,8 @@ class BraveRenderViewContextMenuViews : public RenderViewContextMenuViews { // NOLINTNEXTLINE(runtime/references) BraveRenderViewContextMenuViews(content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params, - bool is_paste_enabled); + bool is_paste_enabled, + bool is_paste_and_match_style_enabled); }; #endif // BRAVE_BROWSER_UI_VIEWS_RENDERER_CONTEXT_MENU_BRAVE_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_ diff --git a/browser/ui/views/side_panel/brave_bookmarks_side_panel_view.cc b/browser/ui/views/side_panel/brave_bookmarks_side_panel_view.cc index 3254f841401..f93173b1cf1 100644 --- a/browser/ui/views/side_panel/brave_bookmarks_side_panel_view.cc +++ b/browser/ui/views/side_panel/brave_bookmarks_side_panel_view.cc @@ -16,13 +16,13 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_window/public/browser_window_features.h" #include "chrome/browser/ui/browser_window/public/browser_window_interface.h" +#include "chrome/browser/ui/side_panel/side_panel_content_proxy.h" #include "chrome/browser/ui/side_panel/side_panel_entry_scope.h" #include "chrome/browser/ui/side_panel/side_panel_ui.h" +#include "chrome/browser/ui/side_panel/side_panel_util.h" #include "chrome/browser/ui/singleton_tabs.h" #include "chrome/browser/ui/views/side_panel/bookmarks/bookmarks_side_panel_coordinator.h" #include "chrome/browser/ui/views/side_panel/reading_list/read_later_side_panel_web_view.h" -#include "chrome/browser/ui/views/side_panel/side_panel_content_proxy.h" -#include "chrome/browser/ui/views/side_panel/side_panel_util.h" #include "chrome/common/webui_url_constants.h" #include "chrome/grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" @@ -147,10 +147,9 @@ BraveBookmarksSidePanelView::BraveBookmarksSidePanelView( AddChildView(std::make_unique(scope)); // Reuse upstream's bookmarks panel webui. - auto* web_view = AddChildView(scope.GetBrowserWindowInterface() - .GetFeatures() - .bookmarks_side_panel_coordinator() - ->CreateBookmarksWebView(scope)); + auto* web_view = AddChildView( + BookmarksSidePanelCoordinator::From(&scope.GetBrowserWindowInterface()) + ->CreateBookmarksWebView(scope)); web_view->SetProperty( views::kFlexBehaviorKey, views::FlexSpecification(views::MinimumFlexSizeRule::kPreferred, diff --git a/browser/ui/views/side_panel/brave_side_panel_coordinator.cc b/browser/ui/views/side_panel/brave_side_panel_coordinator.cc index 5ca4f803558..824935effef 100644 --- a/browser/ui/views/side_panel/brave_side_panel_coordinator.cc +++ b/browser/ui/views/side_panel/brave_side_panel_coordinator.cc @@ -183,7 +183,7 @@ void BraveSidePanelCoordinator::PopulateSidePanel( entry->set_should_show_header(false); actions::ActionItem* const action_item = - SidePanelUtil::GetActionItem(browser_view_->browser(), entry->key()); + SidePanelHelper::GetActionItem(browser_view_->browser(), entry->key()); if (!action_item) { const std::string entry_id = SidePanelEntryIdToString(entry->key().id()); LOG(ERROR) << __func__ << " no side panel action item for " << entry_id; diff --git a/browser/ui/views/side_panel/brave_side_panel_coordinator.h b/browser/ui/views/side_panel/brave_side_panel_coordinator.h index 8f693141741..432e4bc495b 100644 --- a/browser/ui/views/side_panel/brave_side_panel_coordinator.h +++ b/browser/ui/views/side_panel/brave_side_panel_coordinator.h @@ -10,7 +10,7 @@ #include #include "chrome/browser/ui/views/side_panel/side_panel_coordinator.h" -#include "chrome/browser/ui/views/side_panel/side_panel_util.h" +#include "chrome/browser/ui/views/side_panel/side_panel_helper.h" class BraveBrowserView; diff --git a/browser/ui/views/side_panel/brave_side_panel_view_base.cc b/browser/ui/views/side_panel/brave_side_panel_view_base.cc index 8fb68bb9d42..2e0d9f4dab5 100644 --- a/browser/ui/views/side_panel/brave_side_panel_view_base.cc +++ b/browser/ui/views/side_panel/brave_side_panel_view_base.cc @@ -6,8 +6,8 @@ #include "brave/browser/ui/views/side_panel/brave_side_panel_view_base.h" #include "brave/ui/color/nala/nala_color_id.h" -#include "chrome/browser/ui/views/side_panel/side_panel_content_proxy.h" -#include "chrome/browser/ui/views/side_panel/side_panel_util.h" +#include "chrome/browser/ui/side_panel/side_panel_content_proxy.h" +#include "chrome/browser/ui/side_panel/side_panel_util.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/views/background.h" diff --git a/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator.cc b/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator.cc index 1ea249d1332..1eba50b1124 100644 --- a/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator.cc +++ b/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator.cc @@ -18,11 +18,11 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window/public/browser_window_features.h" +#include "chrome/browser/ui/side_panel/side_panel_content_proxy.h" #include "chrome/browser/ui/side_panel/side_panel_entry.h" #include "chrome/browser/ui/side_panel/side_panel_registry.h" #include "chrome/browser/ui/views/frame/browser_view.h" -#include "chrome/browser/ui/views/side_panel/side_panel_content_proxy.h" -#include "chrome/browser/ui/views/side_panel/side_panel_util.h" +#include "chrome/browser/ui/views/side_panel/side_panel_helper.h" #include "chrome/browser/ui/views/side_panel/side_panel_web_ui_view.h" #include "chrome/grit/generated_resources.h" #include "components/grit/brave_components_strings.h" diff --git a/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator_browsertest.cc b/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator_browsertest.cc index 5740d9ebc9d..3ec371cb27a 100644 --- a/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator_browsertest.cc +++ b/browser/ui/views/side_panel/playlist/playlist_side_panel_coordinator_browsertest.cc @@ -103,7 +103,8 @@ IN_PROC_BROWSER_TEST_F(PlaylistCoordinatorBrowserTest, BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); ASSERT_TRUE(embedded_test_server()->Start()); - const GURL url = https_server()->GetURL("app.com", "/ssl/google.html"); + const GURL url = + embedded_https_test_server().GetURL("app.com", "/ssl/google.html"); auto* app_browser = InstallPWA(url); EXPECT_TRUE(app_browser); diff --git a/browser/ui/views/side_panel/side_panel.cc b/browser/ui/views/side_panel/side_panel.cc index 8cb44cf1d2a..7fa5beb22e1 100644 --- a/browser/ui/views/side_panel/side_panel.cc +++ b/browser/ui/views/side_panel/side_panel.cc @@ -25,9 +25,7 @@ #include "chrome/browser/ui/side_panel/side_panel_ui.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/frame/browser_view.h" -#include "chrome/browser/ui/views/side_panel/side_panel_animation_coordinator.h" -#include "chrome/browser/ui/views/side_panel/side_panel_animation_ids.h" -#include "chrome/browser/ui/views/side_panel/side_panel_util.h" +#include "chrome/browser/ui/views/side_panel/side_panel_helper.h" #include "chrome/common/pref_names.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/color/color_provider.h" @@ -115,13 +113,9 @@ SidePanel::SidePanel(BrowserView* browser_view, base::BindRepeating(&SidePanel::UpdateHorizontalAlignment, base::Unretained(this))); - animation_coordinator_ = - std::make_unique(this); - animation_coordinator_->AddObserver(kSidePanelBoundsAnimation, this); } SidePanel::~SidePanel() { - animation_coordinator_->RemoveObserver(kSidePanelBoundsAnimation, this); scoped_observation_.RemoveObservation(this); } @@ -199,7 +193,7 @@ gfx::Size SidePanel::GetMinimumSize() const { } bool SidePanel::IsClosing() { - return animation_coordinator_->IsClosing(); + return state() == State::kClosing; } void SidePanel::AddedToWidget() { @@ -299,13 +293,6 @@ void SidePanel::OnChildViewRemoved(View* observed_view, View* child) { } } -void SidePanel::OnAnimationSequenceProgressed( - const SidePanelAnimationId animation_id, - double animation_value) {} - -void SidePanel::OnAnimationSequenceEnded( - const SidePanelAnimationId animation_id) {} - void SidePanel::Open(bool animated) { UpdateVisibility(/*should_be_open=*/true); } diff --git a/browser/ui/views/side_panel/side_panel.h b/browser/ui/views/side_panel/side_panel.h index d51cd3c9da7..5849b6ad226 100644 --- a/browser/ui/views/side_panel/side_panel.h +++ b/browser/ui/views/side_panel/side_panel.h @@ -13,8 +13,6 @@ #include "base/scoped_multi_source_observation.h" #include "build/build_config.h" #include "chrome/browser/ui/side_panel/side_panel_entry.h" -#include "chrome/browser/ui/views/side_panel/side_panel_animation_coordinator.h" -#include "chrome/browser/ui/views/side_panel/side_panel_animation_ids.h" #include "components/prefs/pref_change_registrar.h" #include "components/prefs/pref_member.h" #include "ui/base/metadata/metadata_header_macros.h" @@ -36,8 +34,7 @@ class SidebarBrowserTest; // SidebarContainerView controls this panel's visibility. class SidePanel : public views::View, public views::ViewObserver, - public views::ResizeAreaDelegate, - public SidePanelAnimationCoordinator::AnimationIdObserver { + public views::ResizeAreaDelegate { METADATA_HEADER(SidePanel, views::View) public: // Determines the side from which the side panel will appear. @@ -54,10 +51,6 @@ class SidePanel : public views::View, SidePanel& operator=(const SidePanel&) = delete; ~SidePanel() override; - SidePanelAnimationCoordinator* animation_coordinator() { - return animation_coordinator_.get(); - } - void SetPanelWidth(int width); void UpdateWidthOnEntryChanged(); bool ShouldRestrictMaxWidth() const; @@ -110,7 +103,7 @@ class SidePanel : public views::View, // Reflects the current state of the visibility of the side panel. enum class State { kClosed, kOpening, kOpen, kClosing }; - State state() { return state_; } + State state() const { return state_; } // These two methods are the only mechanism to change visibility of the side // panel. `animated` is ignored in Brave entirely. @@ -138,12 +131,6 @@ class SidePanel : public views::View, void OnChildViewAdded(View* observed_view, View* child) override; void OnChildViewRemoved(View* observed_view, View* child) override; - // AnimationIdObserver - void OnAnimationSequenceProgressed(const SidePanelAnimationId animation_id, - double animation_value) override; - void OnAnimationSequenceEnded( - const SidePanelAnimationId animation_id) override; - void OnSidePanelWidthChanged(); // Monitors addition of content view and change content view property that @@ -170,11 +157,6 @@ class SidePanel : public views::View, std::unique_ptr resize_widget_; std::unique_ptr shadow_; - // The animation coordinator for the side panel. This controls all of the - // animations that are tied to the side panel when triggering the show and - // hide states. - std::unique_ptr animation_coordinator_; - // Observes and listens to side panel alignment changes. PrefChangeRegistrar pref_change_registrar_; diff --git a/browser/ui/views/sidebar/sidebar_container_view.cc b/browser/ui/views/sidebar/sidebar_container_view.cc index a59246edc34..02ab68bd413 100644 --- a/browser/ui/views/sidebar/sidebar_container_view.cc +++ b/browser/ui/views/sidebar/sidebar_container_view.cc @@ -46,7 +46,6 @@ #include "chrome/browser/ui/side_panel/side_panel_registry.h" #include "chrome/browser/ui/side_panel/side_panel_ui.h" #include "chrome/browser/ui/tabs/features.h" -#include "chrome/browser/ui/tabs/public/tab_features.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/side_panel/side_panel.h" @@ -983,12 +982,7 @@ void SidebarContainerView::OnTabWillBeRemoved(tabs::TabInterface* tab, int index) { CHECK(!base::FeatureList::IsEnabled(sidebar::features::kSidebarV2)); - // At this time, we can stop observing as TabFeatures is available. - if (!tab->GetTabFeatures()) { - return; - } - - auto* registry = tab->GetTabFeatures()->side_panel_registry(); + auto* registry = SidePanelRegistry::From(tab); if (!registry) { return; } @@ -1051,11 +1045,8 @@ void SidebarContainerView::StartObservingContextualSidePanelEntry( CHECK(!base::FeatureList::IsEnabled(sidebar::features::kSidebarV2)); auto* tab = tabs::TabInterface::GetFromContents(contents); - if (!tab->GetTabFeatures()) { - return; - } - auto* registry = tab->GetTabFeatures()->side_panel_registry(); + auto* registry = SidePanelRegistry::From(tab); if (!registry) { return; } diff --git a/browser/ui/views/split_view/split_view_browsertest.cc b/browser/ui/views/split_view/split_view_browsertest.cc index 78f528f3706..359f9852030 100644 --- a/browser/ui/views/split_view/split_view_browsertest.cc +++ b/browser/ui/views/split_view/split_view_browsertest.cc @@ -346,21 +346,6 @@ IN_PROC_BROWSER_TEST_F(SideBySideEnabledBrowserTest, SelectTabTest) { EXPECT_TRUE( brave_multi_contents_view()->mini_toolbar_for_testing(1)->GetVisible()); - // Check mini toolbar uses our menu model. - brave_multi_contents_view()->mini_toolbar_for_testing(0)->OpenSplitViewMenu(); - auto* menu_model = - static_cast(brave_multi_contents_view() - ->mini_toolbar_for_testing(0) - ->menu_model_.get()); - - // This id calc is copied from GetCommandIdInt() at split_tab_menu_model.cc - // Check that method if test failed. - int command_id = - ExistingBaseSubMenuModel::kMinSplitTabMenuModelCommandId + - static_cast(SplitTabMenuModel::CommandId::kReversePosition); - EXPECT_EQ(l10n_util::GetStringUTF16(IDS_IDC_SWAP_SPLIT_VIEW), - menu_model->GetLabelForCommandId(command_id)); - // Activate non split view tab. tab_strip()->SelectTab(tab_strip()->tab_at(0), GetDummyEvent()); EXPECT_EQ(0, tab_strip()->GetActiveIndex()); diff --git a/browser/ui/views/tabs/brave_tab.cc b/browser/ui/views/tabs/brave_tab.cc index f613c27fed3..a4d010dc1fc 100644 --- a/browser/ui/views/tabs/brave_tab.cc +++ b/browser/ui/views/tabs/brave_tab.cc @@ -501,9 +501,10 @@ bool BraveTab::IsAtMinWidthForVerticalTabStrip() const { width() <= tabs::kVerticalTabMinWidth; } -void BraveTab::SetData(tabs::TabData data) { - const bool data_changed = data != data_; - Tab::SetData(std::move(data)); +void BraveTab::OnTabDataChanged(TabChangeType tab_change_type, + const tabs::TabData& tab_data) { + const bool data_changed = tab_data != data_; + Tab::OnTabDataChanged(tab_change_type, std::move(tab_data)); // Our vertical tab uses CompoundTabContainer. // When tab is moved from the group by pinning, it's moved to diff --git a/browser/ui/views/tabs/brave_tab.h b/browser/ui/views/tabs/brave_tab.h index 64b220efce3..6b0c93caa50 100644 --- a/browser/ui/views/tabs/brave_tab.h +++ b/browser/ui/views/tabs/brave_tab.h @@ -84,7 +84,8 @@ class BraveTab : public Tab void Layout(PassKey) override; void MaybeAdjustLeftForPinnedTab(gfx::Rect* bounds, int visual_width) const override; - void SetData(tabs::TabData data) override; + void OnTabDataChanged(TabChangeType tab_change_type, + const tabs::TabData& tab_data) override; bool IsActive() const override; TabSizeInfo GetTabSizeInfo() const override; TabNestingInfo GetTabNestingInfo() const override; diff --git a/browser/ui/views/tabs/brave_tab_container.cc b/browser/ui/views/tabs/brave_tab_container.cc index d4bf6500abf..182575f0582 100644 --- a/browser/ui/views/tabs/brave_tab_container.cc +++ b/browser/ui/views/tabs/brave_tab_container.cc @@ -1530,8 +1530,15 @@ int BraveTabContainer::GetUnpinnedTabsTotalHeight() const { } auto [first_slot_view, last_slot_view] = FindVisibleUnpinnedSlotViews(); + if (!first_slot_view || !last_slot_view) { + // All tabs may already have data().pinned == true (set eagerly via + // TabModel::UpdateProperties during MoveTabsRecursive) while the layout + // helper still has a stale count. This can happen mid-notification when + // pinning a split - both tabs get UpdateProperties at once, but + // layout_helper_ is updated one notification at a time. + return 0; + } int total_height = 0; - CHECK(first_slot_view && last_slot_view); const gfx::Rect first_bounds = GetIdealBoundsOf(first_slot_view); const gfx::Rect last_bounds = GetIdealBoundsOf(last_slot_view); diff --git a/browser/ui/views/tabs/brave_tab_hover_browsertest.cc b/browser/ui/views/tabs/brave_tab_hover_browsertest.cc index 065d3e92e36..e4754c02880 100644 --- a/browser/ui/views/tabs/brave_tab_hover_browsertest.cc +++ b/browser/ui/views/tabs/brave_tab_hover_browsertest.cc @@ -18,10 +18,10 @@ #include "chrome/browser/ui/thumbnails/thumbnail_tab_helper.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h" #include "chrome/browser/ui/views/tabs/tab.h" #include "chrome/browser/ui/views/tabs/tab_container.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_controller.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" #include "chrome/test/base/in_process_browser_test.h" #include "components/prefs/pref_service.h" @@ -92,10 +92,12 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTest, ThumbnailHelperIsAlwaysAttached) { tabs::TabData data; data.visible_url = GURL("https://card.com"); data.title = u"Hello World"; - data_list.push_back({.index = 0, .handle = tabs::TabHandle(0), .data = data}); + data_list.push_back( + {.index = 0, .handle = tabs::TabHandle(0), .is_pinned = false}); horizontal_tab_strip_for_testing()->AddTabsAt(data_list); + horizontal_tab_strip_for_testing()->tab_at(0)->SetDataForTesting(data); EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); - EXPECT_EQ(data_list[0].data.visible_url, active_tab()->data().visible_url); + EXPECT_EQ(data.visible_url, active_tab()->data().visible_url); EXPECT_NE(nullptr, content::WebContentsUserData::FromWebContents( contents())); @@ -105,10 +107,12 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTest, ThumbnailHelperIsAlwaysAttached) { data_list = {}; data.visible_url = GURL("https://card-with-preview.com"); data.title = u"Foo Bar"; - data_list.push_back({.index = 0, .handle = tabs::TabHandle(1), .data = data}); + data_list.push_back( + {.index = 0, .handle = tabs::TabHandle(1), .is_pinned = false}); horizontal_tab_strip_for_testing()->AddTabsAt(data_list); + horizontal_tab_strip_for_testing()->tab_at(0)->SetDataForTesting(data); EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); - EXPECT_EQ(data_list[0].data.visible_url, active_tab()->data().visible_url); + EXPECT_EQ(data.visible_url, active_tab()->data().visible_url); EXPECT_NE(nullptr, content::WebContentsUserData::FromWebContents( contents())); @@ -119,10 +123,12 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTest, ThumbnailHelperIsAlwaysAttached) { data_list = {}; data.visible_url = GURL("https://tooltip.com"); data.title = u"Baf Baz"; - data_list.push_back({.index = 0, .handle = tabs::TabHandle(2), .data = data}); + data_list.push_back( + {.index = 0, .handle = tabs::TabHandle(2), .is_pinned = false}); horizontal_tab_strip_for_testing()->AddTabsAt(data_list); + horizontal_tab_strip_for_testing()->tab_at(0)->SetDataForTesting(data); EXPECT_EQ(0, horizontal_tab_strip_for_testing()->GetActiveIndex()); - EXPECT_EQ(data_list[0].data.visible_url, active_tab()->data().visible_url); + EXPECT_EQ(data.visible_url, active_tab()->data().visible_url); EXPECT_NE(nullptr, content::WebContentsUserData::FromWebContents( contents())); @@ -148,7 +154,7 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTest, Widget* widget = hover_card()->GetWidget(); ASSERT_NE(nullptr, widget); views::test::WidgetVisibleWaiter(widget).Wait(); - EXPECT_FALSE(hover_card()->has_thumbnail_view()); + EXPECT_FALSE(hover_card()->HasThumbnailView()); EXPECT_TRUE(widget->IsVisible()); // Clear focus, to reset the bubble. @@ -163,7 +169,7 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTest, widget = hover_card()->GetWidget(); ASSERT_NE(nullptr, widget); views::test::WidgetVisibleWaiter(widget).Wait(); - EXPECT_TRUE(hover_card()->has_thumbnail_view()); + EXPECT_TRUE(hover_card()->HasThumbnailView()); EXPECT_TRUE(widget->IsVisible()); // Clear focus, to hide the bubble. @@ -212,7 +218,7 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTestWithChromeFlag, Widget* widget = hover_card()->GetWidget(); ASSERT_NE(nullptr, widget); views::test::WidgetVisibleWaiter(widget).Wait(); - EXPECT_TRUE(hover_card()->has_thumbnail_view()); + EXPECT_TRUE(hover_card()->HasThumbnailView()); EXPECT_TRUE(widget->IsVisible()); // Clear focus, to hide the bubble. @@ -227,7 +233,7 @@ IN_PROC_BROWSER_TEST_F(BraveTabHoverTestWithChromeFlag, widget = hover_card()->GetWidget(); ASSERT_NE(nullptr, widget); views::test::WidgetVisibleWaiter(widget).Wait(); - EXPECT_TRUE(hover_card()->has_thumbnail_view()); + EXPECT_TRUE(hover_card()->HasThumbnailView()); EXPECT_TRUE(widget->IsVisible()); // Clear focus, to hide the bubble. diff --git a/browser/ui/views/tabs/brave_tab_hover_card_controller.cc b/browser/ui/views/tabs/brave_tab_hover_card_controller.cc index 66e4d46f4a2..6689ca83583 100644 --- a/browser/ui/views/tabs/brave_tab_hover_card_controller.cc +++ b/browser/ui/views/tabs/brave_tab_hover_card_controller.cc @@ -11,10 +11,10 @@ #include "brave/browser/ui/tabs/brave_tab_prefs.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_thumbnail_observer.h" #include "chrome/browser/ui/views/tabs/tab.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_controller.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_thumbnail_observer.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" BraveTabHoverCardController::~BraveTabHoverCardController() = default; diff --git a/browser/ui/views/tabs/brave_tab_hover_card_controller.h b/browser/ui/views/tabs/brave_tab_hover_card_controller.h index 478ad2d2397..523473ca7ea 100644 --- a/browser/ui/views/tabs/brave_tab_hover_card_controller.h +++ b/browser/ui/views/tabs/brave_tab_hover_card_controller.h @@ -6,7 +6,7 @@ #ifndef BRAVE_BROWSER_UI_VIEWS_TABS_BRAVE_TAB_HOVER_CARD_CONTROLLER_H_ #define BRAVE_BROWSER_UI_VIEWS_TABS_BRAVE_TAB_HOVER_CARD_CONTROLLER_H_ -#include "chrome/browser/ui/views/tabs/tab_hover_card_controller.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h" class HoverCardAnchorTarget; diff --git a/browser/ui/views/tabs/brave_tab_strip.cc b/browser/ui/views/tabs/brave_tab_strip.cc index 02c411d3e64..9ce7805fd95 100644 --- a/browser/ui/views/tabs/brave_tab_strip.cc +++ b/browser/ui/views/tabs/brave_tab_strip.cc @@ -181,16 +181,10 @@ void BraveTabStrip::AddTabToGroup(std::optional group, } tab_at(model_index)->set_tree_tab_node(node_id); } -void BraveTabStrip::SetTabData(int model_index, tabs::TabData data) { - OnSetTabData(model_index, data); - TabStrip::SetTabData(model_index, std::move(data)); -} -void BraveTabStrip::MoveTab(int from_model_index, - int to_model_index, - tabs::TabData data) { - OnSetTabData(from_model_index, data); - TabStrip::MoveTab(from_model_index, to_model_index, std::move(data)); +void BraveTabStrip::OnTabPinnedStateChanged(int model_index, bool is_pinned) { + TabStrip::OnTabPinnedStateChanged(model_index, is_pinned); + OnPinnedStateChanged(model_index, is_pinned); } void BraveTabStrip::ShowHover(Tab* tab, TabStyle::ShowHoverStyle style) { @@ -204,12 +198,13 @@ void BraveTabStrip::HideHover(Tab* tab, TabStyle::HideHoverStyle style) { tab->HideHover(style); } -void BraveTabStrip::UpdateHoverCard(Tab* tab, HoverCardUpdateType update_type) { +void BraveTabStrip::UpdateHoverCard(HoverCardAnchorTarget* anchor_target, + HoverCardUpdateType update_type) { if (brave_tabs::AreTooltipsEnabled( controller_->GetBrowserWindowInterface()->GetProfile()->GetPrefs())) { return; } - TabStrip::UpdateHoverCard(tab, update_type); + TabStrip::UpdateHoverCard(anchor_target, update_type); } void BraveTabStrip::MaybeStartDrag(TabSlotView* source, @@ -508,8 +503,8 @@ BraveTabStrip::GetContainerModelForTab(const Tab* tab) const { } #endif // BUILDFLAG(ENABLE_CONTAINERS) -void BraveTabStrip::OnSetTabData(int model_index, - const tabs::TabData& new_data) { +void BraveTabStrip::OnPinnedStateChanged(int model_index, + bool new_pinned_state) { if (!base::FeatureList::IsEnabled(tabs::kBraveTreeTab)) { return; } @@ -517,9 +512,7 @@ void BraveTabStrip::OnSetTabData(int model_index, // In case moving a tab from a group to pinned, we need to clear the // tree-tab-node UI state. There is no dedicated notification when pinning // from a group. - const bool pinned_state_changed = - tab_at(model_index)->data().pinned != new_data.pinned; - if (pinned_state_changed && new_data.pinned) { + if (new_pinned_state) { tab_at(model_index)->set_tree_tab_node(std::nullopt); } } diff --git a/browser/ui/views/tabs/brave_tab_strip.h b/browser/ui/views/tabs/brave_tab_strip.h index 4751cda408f..370ecf4e29a 100644 --- a/browser/ui/views/tabs/brave_tab_strip.h +++ b/browser/ui/views/tabs/brave_tab_strip.h @@ -44,7 +44,8 @@ class BraveTabStrip : public TabStrip { // TabStrip: void ShowHover(Tab* tab, TabStyle::ShowHoverStyle style) override; void HideHover(Tab* tab, TabStyle::HideHoverStyle style) override; - void UpdateHoverCard(Tab* tab, HoverCardUpdateType update_type) override; + void UpdateHoverCard(HoverCardAnchorTarget* anchor_target, + HoverCardUpdateType update_type) override; void MaybeStartDrag(TabSlotView* source, const ui::LocatedEvent& event, ui::ListSelectionModel original_selection) override; @@ -63,10 +64,7 @@ class BraveTabStrip : public TabStrip { bool CanCloseTabViaMiddleButtonClick() const override; void AddTabToGroup(std::optional group, int model_index) override; - void SetTabData(int model_index, tabs::TabData data) override; - void MoveTab(int from_model_index, - int to_model_index, - tabs::TabData data) override; + void OnTabPinnedStateChanged(int model_index, bool is_pinned) override; // TabSlotController: bool ShouldPaintTabAccent(const Tab* tab) const override; @@ -119,7 +117,7 @@ class BraveTabStrip : public TabStrip { // Clears tree-tab-node UI state when a tab becomes pinned. There is no // dedicated notification when pinning from a group. - void OnSetTabData(int model_index, const tabs::TabData& new_data); + void OnPinnedStateChanged(int model_index, bool new_pinned_state); BooleanPrefMember always_hide_close_button_; BooleanPrefMember middle_click_close_tab_enabled_; diff --git a/browser/ui/views/tabs/brave_tab_unittest.cc b/browser/ui/views/tabs/brave_tab_unittest.cc index 025ae2afe7e..2329b64a191 100644 --- a/browser/ui/views/tabs/brave_tab_unittest.cc +++ b/browser/ui/views/tabs/brave_tab_unittest.cc @@ -19,6 +19,7 @@ #include "chrome/browser/ui/views/tabs/tab_style_views.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/views/chrome_views_test_base.h" +#include "components/split_tabs/split_tab_visual_data.h" #include "components/sync_preferences/testing_pref_service_syncable.h" #include "components/tabs/public/mock_tab_interface.h" #include "testing/gmock/include/gmock/gmock.h" @@ -54,19 +55,6 @@ class MockTabSlotController : public FakeTabSlotController { (const, override)); }; -class MockTabInterfaceWithWeakPtr : public tabs::MockTabInterface { - public: - using tabs::MockTabInterface::MockTabInterface; - ~MockTabInterfaceWithWeakPtr() override = default; - - base::WeakPtr GetWeakPtr() override { - return weak_ptr_factory_.GetWeakPtr(); - } - - private: - base::WeakPtrFactory weak_ptr_factory_{this}; -}; - class BraveTabTest : public ChromeViewsTestBase { public: BraveTabTest() = default; @@ -107,7 +95,7 @@ class BraveTabTest : public ChromeViewsTestBase { if (is_pinned) { tabs::TabData data; data.pinned = true; - tab_ptr->SetData(std::move(data)); + tab_ptr->SetDataForTesting(std::move(data)); } for (int width = kMaxWidth; width > kMinWidth; width -= kStep) { @@ -308,7 +296,7 @@ TEST_F(BraveTabTest, // showing_icon_ = true for this pinned tab. tabs::TabData data; data.pinned = true; - tab_ptr->SetData(std::move(data)); + tab_ptr->SetDataForTesting(std::move(data)); // Compute the exact boundary used by Tab::ShouldRenderAsNormalTab(): // width >= pinned_tab_width + kPinnedTabExtraWidthToRenderAsNormal @@ -416,9 +404,17 @@ class BraveTabTestWithTreeTab : public BraveTabTest { TEST_F(BraveTabTestWithTreeTab, TreeToggleButtonVisibleInsteadOfCloseButton) { testing::NiceMock tab_slot_controller; auto node_id = tree_tab::TreeTabNodeId::GenerateNew(); + + // Create a dummy SplitTabCollection with a new ID and default visual data + split_tabs::SplitTabId dummy_id = split_tabs::SplitTabId::GenerateNew(); + split_tabs::SplitTabVisualData dummy_visual_data; + auto split_collection = + std::make_unique(dummy_id, dummy_visual_data); + tabs::TreeTabNodeTabCollection collection( - node_id, std::make_unique(), - base::DoNothing(), base::DoNothing()); + node_id, std::move(split_collection), base::DoNothing(), + base::DoNothing()); + ASSERT_EQ(collection.node().height(), 0); // When tree tab has descendants, the tree toggle button should be visible. @@ -456,9 +452,16 @@ TEST_F(BraveTabTestWithTreeTab, TreeToggleButtonAlwaysVisibleWhenCollapsedAndHasDescendants) { testing::NiceMock tab_slot_controller; auto node_id = tree_tab::TreeTabNodeId::GenerateNew(); + + // Create a dummy SplitTabCollection with a new ID and default visual data + split_tabs::SplitTabId dummy_id = split_tabs::SplitTabId::GenerateNew(); + split_tabs::SplitTabVisualData dummy_visual_data; + auto split_collection = + std::make_unique(dummy_id, dummy_visual_data); + tabs::TreeTabNodeTabCollection collection( - node_id, std::make_unique(), - base::DoNothing(), base::DoNothing()); + node_id, std::move(split_collection), base::DoNothing(), + base::DoNothing()); ASSERT_EQ(collection.node().height(), 0); // When tree tab has descendants, the tree toggle button should be visible. @@ -501,9 +504,16 @@ TEST_F(BraveTabTestWithTreeTab, TreeToggleButtonVisibleMouseHoveredEvenWhenCloseButtonHiddenByPref) { testing::NiceMock tab_slot_controller; auto node_id = tree_tab::TreeTabNodeId::GenerateNew(); + + // Create a dummy SplitTabCollection with a new ID and default visual data + split_tabs::SplitTabId dummy_id = split_tabs::SplitTabId::GenerateNew(); + split_tabs::SplitTabVisualData dummy_visual_data; + auto split_collection = + std::make_unique(dummy_id, dummy_visual_data); + tabs::TreeTabNodeTabCollection collection( - node_id, std::make_unique(), - base::DoNothing(), base::DoNothing()); + node_id, std::move(split_collection), base::DoNothing(), + base::DoNothing()); collection.node().set_height_for_test(100); collection.node().set_collapsed(false); diff --git a/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.cc b/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.cc index f2c62750e48..9befe71620f 100644 --- a/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.cc +++ b/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.cc @@ -31,25 +31,35 @@ #include "ui/views/view_class_properties.h" // static -std::unique_ptr SharedPinnedTabDummyView::Create( +void SharedPinnedTabDummyView::CreateAndInstall( content::WebContents* shared_contents, content::WebContents* dummy_contents) { - auto view = base::WrapUnique( + auto dummy_view = base::WrapUnique( new SharedPinnedTabDummyViewViews(shared_contents, dummy_contents)); + auto* dummy_view_ptr = dummy_view.get(); - // Note that SharedPinnedTabDummyView is owned by the client, not by a view - // tree. This is invariant of WebView::SetCrashedOverlayView, which we're - // using to attach this view to web view. - view->set_owned_by_client(views::View::OwnedByClientPassKey()); + auto* browser = chrome::FindBrowserWithTab(dummy_view->dummy_contents_); + CHECK(browser); - return view; + // Transfer ownership to WebView via TakeCrashedOverlayView(), which hides + // the native content holder and shows the overlay in its place. + // TODO(sko) We should take split view into account. This is the same problem + // as with SadTabView. + static_cast(browser->window()) + ->contents_web_view() + ->TakeCrashedOverlayView(std::move(dummy_view)); + + // WebView hides the crash overlay when web contents is not crashed. The + // dummy contents intentionally has no renderer (kNoRendererProcess), so + // UpdateCrashedOverlayView() will not be called again after this point. + // Force the overlay visible here. + dummy_view_ptr->SetVisible(true); } SharedPinnedTabDummyViewViews::SharedPinnedTabDummyViewViews( content::WebContents* shared_contents, content::WebContents* dummy_contents) - : shared_contents_(shared_contents), - dummy_contents_(dummy_contents), + : SharedPinnedTabDummyView(shared_contents, dummy_contents), thumbnail_( ThumbnailTabHelper::FromWebContents(shared_contents)->thumbnail()), subscription_(thumbnail_->Subscribe()) { @@ -118,22 +128,5 @@ SharedPinnedTabDummyViewViews::SharedPinnedTabDummyViewViews( SharedPinnedTabDummyViewViews::~SharedPinnedTabDummyViewViews() = default; -void SharedPinnedTabDummyViewViews::Install() { - auto* browser = chrome::FindBrowserWithTab(dummy_contents_); - CHECK(browser); - - // Borrows WebView::SetCrashedOverlayView() which is used to attach SadTabView - // over views::WebView. - // TODO(sko) We should take split view into account. This is the same problem - // as with SadTabView. - static_cast(browser->window()) - ->contents_web_view() - ->SetCrashedOverlayView(this); - - // views::WebView hides the overlay unless web contents is crashed. We should - // forcibly show this view. - SetVisible(true); -} - BEGIN_METADATA(SharedPinnedTabDummyViewViews) END_METADATA diff --git a/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.h b/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.h index 87644fda1b4..37fa56699df 100644 --- a/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.h +++ b/browser/ui/views/tabs/shared_pinned_tab_dummy_view_views.h @@ -28,19 +28,13 @@ class SharedPinnedTabDummyViewViews : public SharedPinnedTabDummyView, public: ~SharedPinnedTabDummyViewViews() override; - // SharedPinnedTabDummyView: - void Install() override; - private: friend class SharedPinnedTabDummyView; - // Use SharedPinnedTabDummyView::Create() instead. + // Use SharedPinnedTabDummyView::CreateAndInstall() instead. SharedPinnedTabDummyViewViews(content::WebContents* shared_contents, content::WebContents* dummy_contents); - raw_ptr shared_contents_; - raw_ptr dummy_contents_; - scoped_refptr thumbnail_; std::unique_ptr subscription_; diff --git a/browser/ui/webui/ai_chat/BUILD.gn b/browser/ui/webui/ai_chat/BUILD.gn index 804e21cd345..655c64f5001 100644 --- a/browser/ui/webui/ai_chat/BUILD.gn +++ b/browser/ui/webui/ai_chat/BUILD.gn @@ -41,6 +41,7 @@ source_set("ai_chat") { "//chrome/browser/favicon", "//chrome/browser/history", "//chrome/browser/profiles:profile", + "//chrome/browser/ui/select_file_policy", "//components/favicon/core", "//components/favicon_base", "//components/prefs", diff --git a/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc b/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc index 75c5c1bbbda..6302e80dc03 100644 --- a/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc +++ b/browser/ui/webui/ai_chat/ai_chat_ui_page_handler.cc @@ -34,7 +34,7 @@ #include "brave/components/constants/webui_url_constants.h" #include "chrome/browser/favicon/favicon_service_factory.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" #include "chrome/browser/ui/singleton_tabs.h" #include "components/favicon/core/favicon_service.h" #include "components/grit/brave_components_webui_strings.h" diff --git a/browser/ui/webui/brave_adblock_ui.cc b/browser/ui/webui/brave_adblock_ui.cc index 387a9369068..74b7941d45d 100644 --- a/browser/ui/webui/brave_adblock_ui.cc +++ b/browser/ui/webui/brave_adblock_ui.cc @@ -31,6 +31,7 @@ #include "chrome/browser/android/tab_web_contents_delegate_android.h" #include "content/public/browser/web_contents.h" #else +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_navigator_params.h" #include "chrome/browser/ui/singleton_tabs.h" diff --git a/browser/ui/webui/brave_new_tab_page_refresh/BUILD.gn b/browser/ui/webui/brave_new_tab_page_refresh/BUILD.gn index 62b2b31935a..06ca3cee69d 100644 --- a/browser/ui/webui/brave_new_tab_page_refresh/BUILD.gn +++ b/browser/ui/webui/brave_new_tab_page_refresh/BUILD.gn @@ -84,10 +84,12 @@ source_set("brave_new_tab_page_refresh") { "//chrome/browser/bookmarks", "//chrome/browser/contextual_search", "//chrome/browser/history", + "//chrome/browser/ntp_tiles", "//chrome/browser/profiles:profile", "//chrome/browser/search_engines", "//chrome/browser/themes", "//chrome/browser/ui/browser_window", + "//chrome/browser/ui/select_file_policy", "//chrome/browser/ui/webui:webui_util", "//chrome/browser/ui/webui/searchbox", "//components/contextual_search:public", diff --git a/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.cc b/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.cc index 946f53ae962..0b6c4a317d4 100644 --- a/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.cc +++ b/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.cc @@ -151,12 +151,12 @@ void BraveNewTabPageUI::BindInterface( } void BraveNewTabPageUI::BindInterface( - mojo::PendingReceiver receiver) { - realbox_handler_ = std::make_unique( - std::move(receiver), Profile::FromWebUI(web_ui()), - web_ui()->GetWebContents(), - base::BindRepeating(&BraveNewTabPageUI::GetContextualSessionHandle, - base::Unretained(this))); + mojo::PendingReceiver + pending_receiver) { + if (searchbox_page_factory_receiver_.is_bound()) { + searchbox_page_factory_receiver_.reset(); + } + searchbox_page_factory_receiver_.Bind(std::move(pending_receiver)); } #if BUILDFLAG(ENABLE_BRAVE_REWARDS) @@ -276,4 +276,14 @@ void BraveNewTabPageUI::BindInterface( } #endif // BUILDFLAG(ENABLE_AI_CHAT) +void BraveNewTabPageUI::CreatePageHandler( + mojo::PendingRemote pending_page, + mojo::PendingReceiver pending_page_handler) { + realbox_handler_ = std::make_unique( + std::move(pending_page_handler), std::move(pending_page), + Profile::FromWebUI(web_ui()), web_ui()->GetWebContents(), + base::BindRepeating(&BraveNewTabPageUI::GetContextualSessionHandle, + base::Unretained(this))); +} + WEB_UI_CONTROLLER_TYPE_IMPL(BraveNewTabPageUI) diff --git a/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.h b/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.h index 66b545ff99b..a8811c78647 100644 --- a/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.h +++ b/browser/ui/webui/brave_new_tab_page_refresh/brave_new_tab_page_ui.h @@ -13,6 +13,10 @@ #include "brave/components/brave_news/common/buildflags/buildflags.h" #include "brave/components/brave_rewards/core/buildflags/buildflags.h" #include "brave/components/brave_vpn/common/buildflags/buildflags.h" +#include "components/omnibox/browser/searchbox.mojom.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver.h" #if BUILDFLAG(ENABLE_BRAVE_REWARDS) #include "brave/components/brave_rewards/core/mojom/rewards_page.mojom.h" @@ -29,7 +33,6 @@ #include "brave/components/brave_news/common/brave_news.mojom-forward.h" #endif #include "brave/components/ntp_background_images/browser/mojom/ntp_background_images.mojom.h" -#include "components/omnibox/browser/searchbox.mojom.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "ui/webui/mojo_web_ui_controller.h" @@ -62,7 +65,8 @@ class ContextualSearchSessionHandle; class RealboxHandler; // The Web UI controller for the Brave new tab page. -class BraveNewTabPageUI : public ui::MojoWebUIController { +class BraveNewTabPageUI : public ui::MojoWebUIController, + public searchbox::mojom::PageHandlerFactory { public: explicit BraveNewTabPageUI(content::WebUI* web_ui); ~BraveNewTabPageUI() override; @@ -76,8 +80,10 @@ class BraveNewTabPageUI : public ui::MojoWebUIController { ntp_background_images::mojom::SponsoredRichMediaAdEventHandler> receiver); - void BindInterface( - mojo::PendingReceiver receiver); + // Instantiates the implementor of the searchbox::mojom::PageHandlerFactory + // mojo interface passing the pending receiver that will be internally bound. + void BindInterface(mojo::PendingReceiver + pending_receiver); #if BUILDFLAG(ENABLE_BRAVE_REWARDS) void BindInterface( @@ -116,6 +122,12 @@ class BraveNewTabPageUI : public ui::MojoWebUIController { #endif // BUILDFLAG(ENABLE_AI_CHAT) private: + // searchbox::mojom::PageHandlerFactory: + void CreatePageHandler( + mojo::PendingRemote pending_page, + mojo::PendingReceiver pending_page_handler) + override; + // Must outlive `realbox_handler_`. std::unique_ptr session_handle_; @@ -125,6 +137,8 @@ class BraveNewTabPageUI : public ui::MojoWebUIController { std::unique_ptr rich_media_ad_event_handler_; std::unique_ptr realbox_handler_; + mojo::Receiver + searchbox_page_factory_receiver_{this}; #if BUILDFLAG(ENABLE_BRAVE_REWARDS) std::unique_ptr rewards_page_handler_; #endif diff --git a/browser/ui/webui/brave_new_tab_page_refresh/custom_image_chooser.cc b/browser/ui/webui/brave_new_tab_page_refresh/custom_image_chooser.cc index dac43a5505e..d007d7d8f05 100644 --- a/browser/ui/webui/brave_new_tab_page_refresh/custom_image_chooser.cc +++ b/browser/ui/webui/brave_new_tab_page_refresh/custom_image_chooser.cc @@ -8,7 +8,7 @@ #include #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/web_contents.h" #include "ui/base/l10n/l10n_util.h" diff --git a/browser/ui/webui/brave_wallet/wallet_panel_ui_browsertest.cc b/browser/ui/webui/brave_wallet/wallet_panel_ui_browsertest.cc index a829807434d..4c25e79ee50 100644 --- a/browser/ui/webui/brave_wallet/wallet_panel_ui_browsertest.cc +++ b/browser/ui/webui/brave_wallet/wallet_panel_ui_browsertest.cc @@ -143,7 +143,7 @@ class WalletPanelUIBrowserTest : public InProcessBrowserTest { // We need to prevent the wallet creation from being stuck waiting to // download a restrictions list that doesn't exist. - WalletDataFilesInstaller::GetInstance().ResetForTesting(); + WalletDataFilesInstaller::GetInstance().Reset(); brave_wallet_service()->keyring_service()->CreateWallet("password_123", base::DoNothing()); diff --git a/browser/ui/webui/new_tab_page/brave_new_tab_page_handler.cc b/browser/ui/webui/new_tab_page/brave_new_tab_page_handler.cc index 5da9949751c..4aa6ff0fc72 100644 --- a/browser/ui/webui/new_tab_page/brave_new_tab_page_handler.cc +++ b/browser/ui/webui/new_tab_page/brave_new_tab_page_handler.cc @@ -35,7 +35,7 @@ #include "chrome/browser/themes/theme_syncable_service.h" #include "chrome/browser/ui/browser_window/public/browser_window_features.h" #include "chrome/browser/ui/browser_window/public/browser_window_interface.h" -#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" #include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" #include "components/prefs/pref_service.h" diff --git a/browser/ui/webui/new_tab_page/brave_new_tab_ui.cc b/browser/ui/webui/new_tab_page/brave_new_tab_ui.cc index db4d1a02896..d3010e990e2 100644 --- a/browser/ui/webui/new_tab_page/brave_new_tab_ui.cc +++ b/browser/ui/webui/new_tab_page/brave_new_tab_ui.cc @@ -210,14 +210,12 @@ void BraveNewTabUI::BindInterface( } void BraveNewTabUI::BindInterface( - mojo::PendingReceiver pending_page_handler) { - auto* profile = Profile::FromWebUI(web_ui()); - CHECK(profile); - - realbox_handler_ = std::make_unique( - std::move(pending_page_handler), profile, web_ui()->GetWebContents(), - base::BindRepeating(&BraveNewTabUI::GetContextualSessionHandle, - base::Unretained(this))); + mojo::PendingReceiver + pending_receiver) { + if (searchbox_page_factory_receiver_.is_bound()) { + searchbox_page_factory_receiver_.reset(); + } + searchbox_page_factory_receiver_.Bind(std::move(pending_receiver)); } #if BUILDFLAG(ENABLE_BRAVE_VPN) @@ -250,6 +248,16 @@ BraveNewTabUI::GetContextualSessionHandle() { return session_handle_.get(); } +void BraveNewTabUI::CreatePageHandler( + mojo::PendingRemote pending_page, + mojo::PendingReceiver pending_page_handler) { + realbox_handler_ = std::make_unique( + std::move(pending_page_handler), std::move(pending_page), + Profile::FromWebUI(web_ui()), web_ui()->GetWebContents(), + base::BindRepeating(&BraveNewTabUI::GetContextualSessionHandle, + base::Unretained(this))); +} + void BraveNewTabUI::CreatePageHandler( mojo::PendingRemote pending_page, mojo::PendingReceiver diff --git a/browser/ui/webui/new_tab_page/brave_new_tab_ui.h b/browser/ui/webui/new_tab_page/brave_new_tab_ui.h index 11b6d709664..823b808d045 100644 --- a/browser/ui/webui/new_tab_page/brave_new_tab_ui.h +++ b/browser/ui/webui/new_tab_page/brave_new_tab_ui.h @@ -47,6 +47,7 @@ class RealboxHandler; class BraveNewTabPageHandler; class BraveNewTabUI : public ui::MojoWebUIController, + public searchbox::mojom::PageHandlerFactory, public brave_new_tab_page::mojom::PageHandlerFactory { public: BraveNewTabUI(content::WebUI* web_ui, @@ -70,8 +71,10 @@ class BraveNewTabUI : public ui::MojoWebUIController, mojo::PendingReceiver pending_receiver); - void BindInterface(mojo::PendingReceiver - pending_page_handler); + // Instantiates the implementor of the searchbox::mojom::PageHandlerFactory + // mojo interface passing the pending receiver that will be internally bound. + void BindInterface(mojo::PendingReceiver + pending_receiver); #if BUILDFLAG(ENABLE_BRAVE_VPN) void BindInterface(mojo::PendingReceiver @@ -84,6 +87,12 @@ class BraveNewTabUI : public ui::MojoWebUIController, GetContextualSessionHandle(); private: + // searchbox::mojom::PageHandlerFactory: + void CreatePageHandler( + mojo::PendingRemote pending_page, + mojo::PendingReceiver pending_page_handler) + override; + // new_tab_page::mojom::PageHandlerFactory: void CreatePageHandler( mojo::PendingRemote pending_page, @@ -101,6 +110,8 @@ class BraveNewTabUI : public ui::MojoWebUIController, std::unique_ptr page_handler_; std::unique_ptr realbox_handler_; + mojo::Receiver + searchbox_page_factory_receiver_{this}; mojo::Receiver page_factory_receiver_; std::unique_ptr diff --git a/browser/ui/webui/searchbox/brave_realbox_handler_browsertest.cc b/browser/ui/webui/searchbox/brave_realbox_handler_browsertest.cc index 5140481ae02..8bc8bff448c 100644 --- a/browser/ui/webui/searchbox/brave_realbox_handler_browsertest.cc +++ b/browser/ui/webui/searchbox/brave_realbox_handler_browsertest.cc @@ -42,7 +42,8 @@ class BraveRealboxHandlerTest : public InProcessBrowserTest { void OnAutocompleteAccept(const GURL& url, const std::u16string& keyword) { mojo::Remote remote_page_handler; RealboxHandler handler( - remote_page_handler.BindNewPipeAndPassReceiver(), browser()->profile(), + remote_page_handler.BindNewPipeAndPassReceiver(), + mojo::PendingRemote(), browser()->profile(), contents(), base::BindLambdaForTesting( []() -> contextual_search::ContextualSearchSessionHandle* { diff --git a/browser/ui/webui/settings/brave_adblock_handler.cc b/browser/ui/webui/settings/brave_adblock_handler.cc index dbaf2d5a53e..237990f8497 100644 --- a/browser/ui/webui/settings/brave_adblock_handler.cc +++ b/browser/ui/webui/settings/brave_adblock_handler.cc @@ -24,6 +24,7 @@ #include "brave/components/brave_shields/core/common/pref_names.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/singleton_tabs.h" #include "content/public/browser/web_ui.h" diff --git a/browser/ui/webui/settings/brave_default_extensions_handler.cc b/browser/ui/webui/settings/brave_default_extensions_handler.cc index ab69443d5c8..320bfc11220 100644 --- a/browser/ui/webui/settings/brave_default_extensions_handler.cc +++ b/browser/ui/webui/settings/brave_default_extensions_handler.cc @@ -26,7 +26,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_window.h" -#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" #include "components/grit/brave_components_strings.h" diff --git a/browser/ui/webui/settings/brave_search_engines_handler.cc b/browser/ui/webui/settings/brave_search_engines_handler.cc index 9946a03f1db..60e1a030a19 100644 --- a/browser/ui/webui/settings/brave_search_engines_handler.cc +++ b/browser/ui/webui/settings/brave_search_engines_handler.cc @@ -87,8 +87,8 @@ void BraveSearchEnginesHandler::RegisterMessages() { base::Unretained(this))); } -void BraveSearchEnginesHandler::OnModelChanged() { - SearchEnginesHandler::OnModelChanged(); +void BraveSearchEnginesHandler::OnTemplateURLServiceChanged() { + SearchEnginesHandler::OnTemplateURLServiceChanged(); brave::UpdateDefaultPrivateSearchProviderData(*profile_); @@ -113,7 +113,7 @@ base::ListValue BraveSearchEnginesHandler::GetPrivateSearchEnginesList() { base::ListValue defaults; for (int i = 0; i < last_default_engine_index; ++i) { - const TemplateURL* template_url = list_controller_.GetTemplateURL(i); + TemplateURL* template_url = list_controller_.GetTemplateURLForIndex(i); // Don't show two brave search entries from settings to prevent confusion. // Hide brave search for tor entry from settings UI. User doesn't need to // select brave search tor entry for private profile. @@ -122,13 +122,7 @@ base::ListValue BraveSearchEnginesHandler::GetPrivateSearchEnginesList() { continue; } - const std::string& default_private_search_provider_guid = - profile_->GetPrefs()->GetString( - prefs::kSyncedDefaultPrivateSearchProviderGUID); - const bool is_default = - default_private_search_provider_guid == template_url->sync_guid(); - - base::DictValue dict = CreateDictionaryForEngine(i, is_default); + base::DictValue dict = CreateDictionaryForEngine(template_url); defaults.Append(std::move(dict)); } @@ -153,7 +147,7 @@ void BraveSearchEnginesHandler::HandleSetDefaultPrivateSearchEngine( prefs::kSyncedDefaultPrivateSearchProviderGUID, template_url->sync_guid()); - OnModelChanged(); + OnTemplateURLServiceChanged(); } base::DictValue BraveSearchEnginesHandler::GetSearchEnginesList() { diff --git a/browser/ui/webui/settings/brave_search_engines_handler.h b/browser/ui/webui/settings/brave_search_engines_handler.h index bff26ae94ec..681c80a729d 100644 --- a/browser/ui/webui/settings/brave_search_engines_handler.h +++ b/browser/ui/webui/settings/brave_search_engines_handler.h @@ -27,7 +27,7 @@ class BraveSearchEnginesHandler : public SearchEnginesHandler { private: // SearchEnginesHandler overrides: void RegisterMessages() override; - void OnModelChanged() override; + void OnTemplateURLServiceChanged() override; base::DictValue GetSearchEnginesList() override; base::ListValue GetPrivateSearchEnginesList(); diff --git a/browser/ui/webui/settings/brave_sync_handler.cc b/browser/ui/webui/settings/brave_sync_handler.cc index 42c6b688ce6..f171eadf0ef 100644 --- a/browser/ui/webui/settings/brave_sync_handler.cc +++ b/browser/ui/webui/settings/brave_sync_handler.cc @@ -212,7 +212,7 @@ void BraveSyncHandler::HandleGetQRCode(const base::ListValue& args) { // QR code version 3 can only carry 84 bytes so we hex encode 32 bytes // seed then we will have 64 bytes input data - const std::string sync_code_hex = base::HexEncode(seed.data(), seed.size()); + const std::string sync_code_hex = base::HexEncode(seed); const std::string qr_code_string = brave_sync::QrCodeData::CreateWithActualDate(sync_code_hex)->ToJson(); @@ -294,8 +294,7 @@ void BraveSyncHandler::HandleSetSyncCode(const base::ListValue& args) { // we will set the result at BraveSyncHandler::OnJoinChainResult. // Otherwise we will not let to send request to the server. - sync_service->GetUserSettings()->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + sync_service->GetUserSettings()->SetInitialSyncFeatureSetupComplete(); } void BraveSyncHandler::OnJoinChainResult(base::Value callback_id, bool result) { diff --git a/browser/ui/webui/side_panel/customize_chrome/BUILD.gn b/browser/ui/webui/side_panel/customize_chrome/BUILD.gn index a8e578ca5ec..811c97a5fc9 100644 --- a/browser/ui/webui/side_panel/customize_chrome/BUILD.gn +++ b/browser/ui/webui/side_panel/customize_chrome/BUILD.gn @@ -103,6 +103,7 @@ source_set("unit_tests") { "//brave/components/l10n/common:test_support", "//brave/components/resources:strings_grit", "//brave/components/vector_icons", + "//chrome/browser/sharing_hub", "//chrome/browser/ui/webui/util", "//chrome/test:test_support", "//components/prefs", diff --git a/browser/ui/webui/skus_internals_ui.cc b/browser/ui/webui/skus_internals_ui.cc index b848f6be9eb..16cf465bdac 100644 --- a/browser/ui/webui/skus_internals_ui.cc +++ b/browser/ui/webui/skus_internals_ui.cc @@ -27,7 +27,7 @@ #include "brave/components/skus/common/skus_sdk.mojom.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" #include "components/grit/brave_components_resources.h" #include "components/prefs/pref_service.h" #include "content/public/browser/web_contents.h" diff --git a/browser/upgrade_when_idle/BUILD.gn b/browser/upgrade_when_idle/BUILD.gn index bcad4ae5926..08899b2261d 100644 --- a/browser/upgrade_when_idle/BUILD.gn +++ b/browser/upgrade_when_idle/BUILD.gn @@ -13,6 +13,7 @@ source_set("upgrade_when_idle") { # here because it would create a dependency cycle. deps = [ "//base", + "//chrome/browser/profiles:profile_manager", "//chrome/browser/ui/browser_window", "//chrome/browser/upgrade_detector", "//chrome/common:non_code_constants", diff --git a/browser/user_education/brave_user_education_utils.cc b/browser/user_education/brave_user_education_utils.cc index 951eb95f5d3..28d4bd86308 100644 --- a/browser/user_education/brave_user_education_utils.cc +++ b/browser/user_education/brave_user_education_utils.cc @@ -20,35 +20,6 @@ void SuppressUserEducation(UserEducationService* service) { auto& storage_service = service->user_education_storage_service(); - // Suppress "New" badges for below features by setting counts to exceed - // policy limits, ensuring the badge never shows. - const base::Feature* badges_to_suppress[] = { - &features::kSideBySide, - &features::kSideBySideLinkMenuNewBadge, - }; - - // Chromium's NewBadgePolicy suppresses badges when show_count or used_count - // exceeds the policy limits. The defaults are: - // - kDefaultNewBadgeShowCount = 10 (badge stops after 10 displays) - // - kDefaultNewBadgeFeatureUsedCount = 2 (badge stops after 2 feature uses) - // Setting to 999 guarantees exceeding any reasonable policy limit. - // See: components/user_education/common/user_education_features.cc - constexpr int kNeverShowCount = 999; - - for (const auto* feature : badges_to_suppress) { - user_education::NewBadgeData data = - storage_service.ReadNewBadgeData(*feature); - - if (data.feature_enabled_time.is_null()) { - data.feature_enabled_time = storage_service.GetCurrentTime(); - } - - data.show_count = kNeverShowCount; - data.used_count = kNeverShowCount; - - storage_service.SaveNewBadgeData(*feature, data); - } - // Suppress IPH (In Product Help) promos for below features by marking // them as dismissed. const base::Feature* promos_to_suppress[] = { diff --git a/browser/user_education/brave_user_education_utils_unittest.cc b/browser/user_education/brave_user_education_utils_unittest.cc index 4ab8e775c37..83cdc51702b 100644 --- a/browser/user_education/brave_user_education_utils_unittest.cc +++ b/browser/user_education/brave_user_education_utils_unittest.cc @@ -29,8 +29,7 @@ class BraveUserEducationUtilsTest : public testing::Test { void SetUp() override { // Enable the features we want to test feature_list_.InitWithFeatures( - {features::kSideBySide, features::kSideBySideLinkMenuNewBadge, - feature_engagement::kIPHSideBySidePinnableFeature, + {feature_engagement::kIPHSideBySidePinnableFeature, feature_engagement::kIPHSideBySideTabSwitchFeature}, {}); profile_ = std::make_unique(); @@ -45,87 +44,12 @@ class BraveUserEducationUtilsTest : public testing::Test { std::unique_ptr service_; }; -TEST_F(BraveUserEducationUtilsTest, SuppressesBadgesForSideBySideFeature) { - // Verify initial state - badge should not be suppressed - auto& storage = service_->user_education_storage_service(); - user_education::NewBadgeData initial_data = - storage.ReadNewBadgeData(features::kSideBySide); - - // Initial data should have default values - EXPECT_EQ(0, initial_data.show_count); - EXPECT_EQ(0, initial_data.used_count); - - // Call the function to suppress badges - SuppressUserEducation(service_.get()); - - // Verify badge data has been modified to suppress the badge - user_education::NewBadgeData suppressed_data = - storage.ReadNewBadgeData(features::kSideBySide); - - // Badge should now have maximum counts to suppress display - EXPECT_EQ(999, suppressed_data.show_count); - EXPECT_EQ(999, suppressed_data.used_count); - EXPECT_FALSE(suppressed_data.feature_enabled_time.is_null()); -} - -TEST_F(BraveUserEducationUtilsTest, - SuppressesBadgesForSideBySideLinkMenuFeature) { - // Call the function to suppress badges - SuppressUserEducation(service_.get()); - - // Verify kSideBySideLinkMenuNewBadge is also suppressed - auto& storage = service_->user_education_storage_service(); - user_education::NewBadgeData data = - storage.ReadNewBadgeData(features::kSideBySideLinkMenuNewBadge); - - EXPECT_EQ(999, data.show_count); - EXPECT_EQ(999, data.used_count); - EXPECT_FALSE(data.feature_enabled_time.is_null()); -} - TEST_F(BraveUserEducationUtilsTest, HandlesNullService) { // Should not crash with null service SuppressUserEducation(nullptr); // Test passes if no crash occurs } -TEST_F(BraveUserEducationUtilsTest, PreservesExistingFeatureEnabledTime) { - auto& storage = service_->user_education_storage_service(); - - // Set up initial data with a specific enabled time - user_education::NewBadgeData initial_data; - initial_data.feature_enabled_time = base::Time::Now() - base::Days(5); - initial_data.show_count = 1; - initial_data.used_count = 1; - storage.SaveNewBadgeData(features::kSideBySide, initial_data); - - base::Time original_time = initial_data.feature_enabled_time; - - // Call suppress function - SuppressUserEducation(service_.get()); - - // Verify the enabled time was preserved - user_education::NewBadgeData suppressed_data = - storage.ReadNewBadgeData(features::kSideBySide); - - EXPECT_EQ(original_time, suppressed_data.feature_enabled_time); - EXPECT_EQ(999, suppressed_data.show_count); - EXPECT_EQ(999, suppressed_data.used_count); -} - -TEST_F(BraveUserEducationUtilsTest, InitializesFeatureEnabledTimeWhenNull) { - // Call suppress function with fresh data (null enabled time) - SuppressUserEducation(service_.get()); - - auto& storage = service_->user_education_storage_service(); - user_education::NewBadgeData data = - storage.ReadNewBadgeData(features::kSideBySide); - - // Should have initialized the enabled time - EXPECT_FALSE(data.feature_enabled_time.is_null()); - EXPECT_LE(data.feature_enabled_time, base::Time::Now()); -} - TEST_F(BraveUserEducationUtilsTest, SuppressesIPHForSideBySidePinnableFeature) { auto& storage = service_->user_education_storage_service(); @@ -165,18 +89,6 @@ TEST_F(BraveUserEducationUtilsTest, EXPECT_TRUE(suppressed_data->is_dismissed); } -TEST_F(BraveUserEducationUtilsTest, BadgePolicyShouldNotShowAfterSuppression) { - SuppressUserEducation(service_.get()); - - auto& storage = service_->user_education_storage_service(); - user_education::NewBadgeData data = - storage.ReadNewBadgeData(features::kSideBySide); - - // Verify that NewBadgePolicy returns false for suppressed data - user_education::NewBadgePolicy policy; - EXPECT_FALSE(policy.ShouldShowNewBadge(data, storage)); -} - TEST_F(BraveUserEducationUtilsTest, PromoShouldBePermanentlyDismissed) { SuppressUserEducation(service_.get()); diff --git a/build/BUILD.gn b/build/BUILD.gn index 4abec401a74..0cfc90c1be0 100644 --- a/build/BUILD.gn +++ b/build/BUILD.gn @@ -48,6 +48,16 @@ config("compiler") { "-Xclang", "-fexperimental-max-bitint-width=256", ] + + # Perfetto's constexpr category registry (ValidateCategories) recurses once + # per category. With Brave's extra categories, the total depth now exceeds + # Clang's default limit of 512 so increase it. + if (is_win) { + cflags += [ "/clang:-fconstexpr-depth=1024" ] + } else { + cflags += [ "-fconstexpr-depth=1024" ] + } + configs = [ ":brave_chromium_src_support" ] if (is_redirect_cc_build) { configs -= [ ":brave_chromium_src_support" ] diff --git a/build/android/BUILD.gn b/build/android/BUILD.gn index 91946361b3d..5cb653cad19 100644 --- a/build/android/BUILD.gn +++ b/build/android/BUILD.gn @@ -229,7 +229,6 @@ generate_jni("jni_headers") { "//brave/android/java/org/chromium/chrome/browser/informers/BraveSyncAccountDeletedInformer.java", "//brave/android/java/org/chromium/chrome/browser/notifications/channels/BraveSiteChannelsManagerBridge.java", "//brave/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java", - "//brave/android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java", "//brave/android/java/org/chromium/chrome/browser/util/TabUtils.java", ] @@ -239,6 +238,7 @@ generate_jni("jni_headers") { public_deps = [ "//brave/android/java/org/chromium/chrome/browser/search_engines:jni_headers", + "//brave/browser/signin/services/android:jni_headers", "//chrome/android:chrome_jni_headers", ] } diff --git a/build/android/bytecode/BUILD.gn b/build/android/bytecode/BUILD.gn index 6da8a2925b6..1bc1c59d448 100644 --- a/build/android/bytecode/BUILD.gn +++ b/build/android/bytecode/BUILD.gn @@ -22,6 +22,7 @@ java_binary("java_bytecode_rewriter") { "//brave/build/android/bytecode/java/org/brave/bytecode/BraveAutocompleteMediatorBaseClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveAutocompleteMediatorClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveAutofillClientProviderUtilsClassAdapter.java", + "//brave/build/android/bytecode/java/org/brave/bytecode/BraveAutofillPaymentMethodsFragmentBaseClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveBaseCustomTabActivityClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveBookmarkActivityClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveBookmarkBridgeClassAdapter.java", @@ -95,8 +96,10 @@ java_binary("java_bytecode_rewriter") { "//brave/build/android/bytecode/java/org/brave/bytecode/BraveMostVisitedTilesLayoutBaseClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveMostVisitedTilesMediatorClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveMultiInstanceManagerApi31ClassAdapter.java", + "//brave/build/android/bytecode/java/org/brave/bytecode/BraveMultiInstanceOrchestratorImplClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageClassAdapter.java", + "//brave/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageCoordinatorClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveNotificationBuilderClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveNotificationManagerProxyImplClassAdapter.java", diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveAutofillPaymentMethodsFragmentBaseClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveAutofillPaymentMethodsFragmentBaseClassAdapter.java new file mode 100644 index 00000000000..e002d83e562 --- /dev/null +++ b/build/android/bytecode/java/org/brave/bytecode/BraveAutofillPaymentMethodsFragmentBaseClassAdapter.java @@ -0,0 +1,23 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.brave.bytecode; + +import org.objectweb.asm.ClassVisitor; + +public class BraveAutofillPaymentMethodsFragmentBaseClassAdapter extends BraveClassVisitor { + static String sAutofillPaymentMethodsFragmentClassName = + "org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment"; + + static String sBraveAutofillPaymentMethodsFragmentBaseClassName = + "org/chromium/chrome/browser/autofill/settings/BraveAutofillPaymentMethodsFragmentBase"; + + public BraveAutofillPaymentMethodsFragmentBaseClassAdapter(ClassVisitor visitor) { + super(visitor); + changeSuperName( + sAutofillPaymentMethodsFragmentClassName, + sBraveAutofillPaymentMethodsFragmentBaseClassName); + } +} diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java index 4a0836bda78..b781597e96d 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java @@ -26,6 +26,7 @@ public class BraveClassAdapter { chain = new BraveAutocompleteMediatorBaseClassAdapter(chain); chain = new BraveAutocompleteMediatorClassAdapter(chain); chain = new BraveAutofillClientProviderUtilsClassAdapter(chain); + chain = new BraveAutofillPaymentMethodsFragmentBaseClassAdapter(chain); chain = new BraveBookmarkActivityClassAdapter(chain); chain = new BraveBookmarkBridgeClassAdapter(chain); chain = new BraveBookmarkDelegateClassAdapter(chain); @@ -95,8 +96,10 @@ public class BraveClassAdapter { chain = new BraveMostVisitedTilesLayoutBaseClassAdapter(chain); chain = new BraveMostVisitedTilesMediatorClassAdapter(chain); chain = new BraveMultiInstanceManagerApi31ClassAdapter(chain); + chain = new BraveMultiInstanceOrchestratorImplClassAdapter(chain); chain = new BraveMultiWindowUtilsClassAdapter(chain); chain = new BraveNewTabPageClassAdapter(chain); + chain = new BraveNewTabPageCoordinatorClassAdapter(chain); chain = new BraveNewTabPageLayoutClassAdapter(chain); chain = new BraveNtpCustomizationUtilsClassAdapter(chain); chain = new BraveNotificationBuilderClassAdapter(chain); diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveMultiInstanceOrchestratorImplClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveMultiInstanceOrchestratorImplClassAdapter.java new file mode 100644 index 00000000000..c7ecd84cdec --- /dev/null +++ b/build/android/bytecode/java/org/brave/bytecode/BraveMultiInstanceOrchestratorImplClassAdapter.java @@ -0,0 +1,23 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.brave.bytecode; + +import org.objectweb.asm.ClassVisitor; + +public class BraveMultiInstanceOrchestratorImplClassAdapter extends BraveClassVisitor { + static String sMultiInstanceOrchestratorImplClassName = + "org/chromium/chrome/browser/multiwindow/MultiInstanceOrchestratorImpl"; + + static String sBraveMultiInstanceOrchestratorImplClassName = + "org/chromium/chrome/browser/multiwindow/BraveMultiInstanceOrchestratorImpl"; + + public BraveMultiInstanceOrchestratorImplClassAdapter(ClassVisitor visitor) { + super(visitor); + redirectConstructor( + sMultiInstanceOrchestratorImplClassName, + sBraveMultiInstanceOrchestratorImplClassName); + } +} diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java index 44fd535d6c3..e8fad708fdb 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveMultiWindowUtilsClassAdapter.java @@ -21,5 +21,20 @@ public class BraveMultiWindowUtilsClassAdapter extends BraveClassVisitor { sMultiWindowUtilsClassName, "shouldShowManageWindowsMenu", sBraveMultiWindowUtilsClassName); + + changeMethodOwner( + sMultiWindowUtilsClassName, + "canEnterMultiWindowMode", + sBraveMultiWindowUtilsClassName); + + changeMethodOwner( + sMultiWindowUtilsClassName, + "isLinkNavigationToNewWindowSupported", + sBraveMultiWindowUtilsClassName); + + changeMethodOwner( + sMultiWindowUtilsClassName, + "isLinkNavigationToIncognitoWindowSupported", + sBraveMultiWindowUtilsClassName); } } diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageClassAdapter.java index c6b9582c405..b606077ea76 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageClassAdapter.java @@ -22,6 +22,9 @@ public class BraveNewTabPageClassAdapter extends BraveClassVisitor { deleteField(sBraveNewTabPageClassName, "mNewTabPageLayout"); makeProtectedField(sNewTabPageClassName, "mNewTabPageLayout"); + deleteField(sBraveNewTabPageClassName, "mNewTabPageCoordinator"); + makeProtectedField(sNewTabPageClassName, "mNewTabPageCoordinator"); + deleteField(sBraveNewTabPageClassName, "mFeedSurfaceProvider"); makeProtectedField(sNewTabPageClassName, "mFeedSurfaceProvider"); diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageCoordinatorClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageCoordinatorClassAdapter.java new file mode 100644 index 00000000000..30f27402714 --- /dev/null +++ b/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageCoordinatorClassAdapter.java @@ -0,0 +1,21 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.brave.bytecode; + +import org.objectweb.asm.ClassVisitor; + +public class BraveNewTabPageCoordinatorClassAdapter extends BraveClassVisitor { + static String sNewTabPageCoordinatorClassName = + "org/chromium/chrome/browser/ntp/NewTabPageCoordinator"; + static String sBraveNewTabPageCoordinatorClassName = + "org/chromium/chrome/browser/ntp/BraveNewTabPageCoordinator"; + + public BraveNewTabPageCoordinatorClassAdapter(ClassVisitor visitor) { + super(visitor); + + redirectConstructor(sNewTabPageCoordinatorClassName, sBraveNewTabPageCoordinatorClassName); + } +} diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java index 3e7c0ccda6f..827d76bf496 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java @@ -16,9 +16,6 @@ public class BraveNewTabPageLayoutClassAdapter extends BraveClassVisitor { public BraveNewTabPageLayoutClassAdapter(ClassVisitor visitor) { super(visitor); - deleteField(sBraveNewTabPageLayoutClassName, "mProfile"); - makeProtectedField(sNewTabPageLayoutClassName, "mProfile"); - makePublicMethod(sNewTabPageLayoutClassName, "initializeSiteSectionView"); addMethodAnnotation( sBraveNewTabPageLayoutClassName, diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveToolbarManagerClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveToolbarManagerClassAdapter.java index 50f6555b7fa..86373be3bc2 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveToolbarManagerClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveToolbarManagerClassAdapter.java @@ -17,8 +17,9 @@ public class BraveToolbarManagerClassAdapter extends BraveClassVisitor { redirectConstructor(sToolbarManagerClassName, sBraveToolbarManagerClassName); - deleteField(sBraveToolbarManagerClassName, "mBottomControlsCoordinatorSupplier"); - makeProtectedField(sToolbarManagerClassName, "mBottomControlsCoordinatorSupplier"); + deleteField(sBraveToolbarManagerClassName, "mTabGroupUiBottomControlsCoordinatorSupplier"); + makeProtectedField( + sToolbarManagerClassName, "mTabGroupUiBottomControlsCoordinatorSupplier"); deleteField(sBraveToolbarManagerClassName, "mCallbackController"); makeProtectedField(sToolbarManagerClassName, "mCallbackController"); diff --git a/build/android/config.gni b/build/android/config.gni index 89bc6e90f33..72a6aa01253 100644 --- a/build/android/config.gni +++ b/build/android/config.gni @@ -37,6 +37,7 @@ brave_chrome_java_deps = [ "//brave/browser/password_entry_edit:public_java", "//brave/browser/quick_search_engines/android:java", "//brave/browser/safe_browsing/android/java/src/org/chromium/chrome/browser/safe_browsing/settings:java", + "//brave/browser/signin/services/android:java", "//brave/browser/skus/android:java", "//brave/browser/tab_group_sync:java", "//brave/browser/ui/android/favicon:java", @@ -69,12 +70,12 @@ brave_chrome_java_deps = [ "//brave/third_party/android_deps:com_github_bumptech_glide_java", "//brave/third_party/android_deps:com_google_android_play_app_update_java", "//brave/third_party/android_deps:com_google_android_play_integrity_java", - "//brave/third_party/android_deps:com_google_android_play_review_java", "//brave/third_party/android_deps:com_wireguard_android_J__unpack_aar", "//brave/third_party/android_deps:com_wireguard_android_java", "//brave/third_party/android_deps:google_play_services_safetynet_java", "//brave/third_party/zxing:zxing_java", "//brave/ui/android:base_java", + "//third_party/android_deps:com_google_android_play_review_java", "//third_party/android_deps:com_google_code_gson_gson_java", "//third_party/android_deps:google_play_services_vision_common_java", "//third_party/android_deps:google_play_services_vision_java", diff --git a/build/commands/lib/test.js b/build/commands/lib/test.js index bb738fd230c..89e5ccda04e 100644 --- a/build/commands/lib/test.js +++ b/build/commands/lib/test.js @@ -54,7 +54,6 @@ const deleteFile = (filePath) => { const buildTests = async (testsToRun, config) => { config.buildTargets = testsToRun util.touchOverriddenFiles() - util.touchGsutilChangeLogFile() await util.buildTargets(config.buildTargets, config.defaultOptions) } diff --git a/build/commands/lib/util.js b/build/commands/lib/util.js index 44c5c39ae0d..eed410a7f8a 100644 --- a/build/commands/lib/util.js +++ b/build/commands/lib/util.js @@ -488,31 +488,6 @@ const util = { Log.progressFinish('touch original files overridden by chromium_src') }, - touchGsutilChangeLogFile: () => { - // Chromium team confirmed that ChangeLog file was likely removed by accident - // https://chromium-review.googlesource.com/c/catapult/+/4567074?tab=comments - - // However this is just a temp solution. This file is not - // used in Chromium tests, so eventually we should find out what is the - // difference in the way we run the tests. Follow up issue - // https://github.com/brave/brave-browser/issues/31641 - console.log('touch gsutil ChangeLog file...') - - const changeLogFile = path.join( - config.srcDir, - 'third_party', - 'catapult', - 'third_party', - 'gsutil', - 'third_party', - 'mock', - 'ChangeLog', - ) - if (!fs.existsSync(changeLogFile)) { - fs.writeFileSync(changeLogFile, '') - } - }, - mergeWithDefault: (options) => { return Object.assign({}, config.defaultOptions, options) }, diff --git a/build/commands/scripts/commands.js b/build/commands/scripts/commands.js index aeae8e5e1f2..71340f9b40c 100644 --- a/build/commands/scripts/commands.js +++ b/build/commands/scripts/commands.js @@ -399,7 +399,7 @@ program .option( '--android_test_emulator_name - -namespace base::features { - -#if BUILDFLAG(IS_ANDROID) -OVERRIDE_FEATURE_DEFAULT_STATES({{ - // Temporary disable kPartitionAllocFreeWithSize on Android as it causes - // crashes. - // This override should be removed in cr148 as it is already disabled there - // https://chromium-review.googlesource.com/c/chromium/src/+/7707531 - {kPartitionAllocFreeWithSize, base::FEATURE_DISABLED_BY_DEFAULT}, -}}); -#endif // BUILDFLAG(IS_ANDROID) - -} // namespace base::features diff --git a/chromium_src/chrome/browser/banners/test_app_banner_manager_desktop.cc b/chromium_src/chrome/browser/banners/test_app_banner_manager_desktop.cc deleted file mode 100644 index 267642d0724..00000000000 --- a/chromium_src/chrome/browser/banners/test_app_banner_manager_desktop.cc +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) 2026 The Brave Authors. All rights reserved. -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at https://mozilla.org/MPL/2.0/. - -#include "brave/components/constants/webui_url_constants.h" - -// Include password_manager constants before override so we don't override the -// definition. -#include "components/password_manager/content/common/web_ui_constants.h" - -// Add some extra items to WebUI hosts considered valid for PWAs. Mirrors the -// same change in components/webapps/browser/banners/app_banner_manager.cc -// override. -#define kChromeUIPasswordManagerHost \ - kChromeUIPasswordManagerHost && \ - !kInstallablePWAWebUIHosts.contains(validated_url.host()) - -#include -#undef kChromeUIPasswordManagerHost diff --git a/chromium_src/chrome/browser/browser_features.cc b/chromium_src/chrome/browser/browser_features.cc index 3d32e1e5590..f1ec2461173 100644 --- a/chromium_src/chrome/browser/browser_features.cc +++ b/chromium_src/chrome/browser/browser_features.cc @@ -19,10 +19,6 @@ OVERRIDE_FEATURE_DEFAULT_STATES({{ // Google has asked embedders not to enforce these pins: // https://groups.google.com/a/chromium.org/g/embedder-dev/c/XsNTwEiN1lI/m/TMXh-ZvOAAAJ {kNewTabPageTriggerForPrerender2, base::FEATURE_DISABLED_BY_DEFAULT}, -#if !BUILDFLAG(IS_ANDROID) - {kReportPakFileIntegrity, base::FEATURE_DISABLED_BY_DEFAULT}, -#endif // BUILDFLAG(IS_ANDROID) - }}); } // namespace features diff --git a/chromium_src/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc b/chromium_src/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc similarity index 93% rename from chromium_src/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc rename to chromium_src/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc index 9cb45c3ac33..541572848f2 100644 --- a/chromium_src/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc +++ b/chromium_src/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc @@ -6,6 +6,6 @@ #define BRAVE_MOCK_SIDE_PANEL_UI_TOGGLE \ MOCK_METHOD(void, Toggle, (), (override)); -#include +#include #undef BRAVE_MOCK_SIDE_PANEL_UI_TOGGLE diff --git a/chromium_src/chrome/browser/flags/android/chrome_feature_list.cc b/chromium_src/chrome/browser/flags/android/chrome_feature_list.cc index 599ab560cfe..6bce9e2b4cb 100644 --- a/chromium_src/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chromium_src/chrome/browser/flags/android/chrome_feature_list.cc @@ -121,13 +121,3 @@ #undef BRAVE_WEB_DISCOVERY_FLAG #undef BRAVE_VPN_FLAG #undef EMAIL_ALIASES_FLAG - -namespace chrome { -namespace android { - -OVERRIDE_FEATURE_DEFAULT_STATES({{ - {kMagicStackAndroid, base::FEATURE_DISABLED_BY_DEFAULT}, -}}); - -} // namespace android -} // namespace chrome diff --git a/chromium_src/chrome/browser/contextual_cueing/contextual_cueing_service_factory.cc b/chromium_src/chrome/browser/glic/suggestions/contextual_cueing_service_factory.cc similarity index 91% rename from chromium_src/chrome/browser/contextual_cueing/contextual_cueing_service_factory.cc rename to chromium_src/chrome/browser/glic/suggestions/contextual_cueing_service_factory.cc index bf0b8e31cc5..52773730a90 100644 --- a/chromium_src/chrome/browser/contextual_cueing/contextual_cueing_service_factory.cc +++ b/chromium_src/chrome/browser/glic/suggestions/contextual_cueing_service_factory.cc @@ -3,7 +3,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#include "chrome/browser/contextual_cueing/contextual_cueing_service_factory.h" +#include "chrome/browser/glic/suggestions/contextual_cueing_service_factory.h" #include "base/no_destructor.h" #include "chrome/browser/profiles/profile.h" @@ -13,7 +13,7 @@ // PageContentExtractionService both of which we disable, so don't create this // service. -namespace contextual_cueing { +namespace glic { // static ContextualCueingService* ContextualCueingServiceFactory::GetForProfile( @@ -49,4 +49,4 @@ bool ContextualCueingServiceFactory::ServiceIsNULLWhileTesting() const { return true; } -} // namespace contextual_cueing +} // namespace glic diff --git a/chromium_src/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc b/chromium_src/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc index ec130793ba4..e9c2d6fa32f 100644 --- a/chromium_src/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc +++ b/chromium_src/chrome/browser/lookalikes/lookalike_url_navigation_throttle_unittest.cc @@ -17,7 +17,8 @@ namespace lookalikes { class LookalikeThrottleTest : public ChromeRenderViewHostTestHarness {}; -// Tests that spoofy hostnames are properly handled in the throttle. +// Tests that spoofy hostnames are properly handled in the throttle (this is +// based on the upstream unit test LookalikeThrottleTest.Basics) TEST_F(LookalikeThrottleTest, Basics) { lookalikes::InitializeSafetyTipConfig(); @@ -29,9 +30,11 @@ TEST_F(LookalikeThrottleTest, Basics) { // ASCII private domain. {"private.hostname", false, url_formatter::IDNSpoofCheckerResult::kNone}, - // lɔlocked.com, fails ICU spoof checks. - {"xn--llocked-9bd.com", true, - url_formatter::IDNSpoofCheckerResult::kICUSpoofChecks}, + // lɔlocked.com, + // Update for ICU 78.2, and IDNA updates in Unicode 17. + // this label no longer fails, compare: https://crbug.com/492063443 + {"xn--llocked-9bd.com", false, + url_formatter::IDNSpoofCheckerResult::kSafe /*ICUSpoofChecks*/}, // þook.com, contains a TLD specific character (þ). {"xn--ook-ooa.com", true, url_formatter::IDNSpoofCheckerResult::kTLDSpecificCharacters}, diff --git a/chromium_src/chrome/browser/notifications/notification_handler_impl.h b/chromium_src/chrome/browser/notifications/notification_handler_impl.h index 4d8e0e9ed12..2b347154cbf 100644 --- a/chromium_src/chrome/browser/notifications/notification_handler_impl.h +++ b/chromium_src/chrome/browser/notifications/notification_handler_impl.h @@ -16,9 +16,10 @@ class NotificationHandler : public NotificationHandler_ChromiumImpl { WEB_PERSISTENT = 0, WEB_NON_PERSISTENT = 1, EXTENSION = 2, - SEND_TAB_TO_SELF = 3, + // SEND_TAB_TO_SELF = 3, // Deprecated. TRANSIENT = 4, - PERMISSION_REQUEST = 5, + // Deprecated + // PERMISSION_REQUEST = 5, SHARING = 6, ANNOUNCEMENT = 7, NEARBY_SHARE = 8, diff --git a/chromium_src/chrome/browser/password_manager/password_manager_settings_service_factory.cc b/chromium_src/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc similarity index 91% rename from chromium_src/chrome/browser/password_manager/password_manager_settings_service_factory.cc rename to chromium_src/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc index f0dc9a68bdb..031e7aee84c 100644 --- a/chromium_src/chrome/browser/password_manager/password_manager_settings_service_factory.cc +++ b/chromium_src/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc @@ -21,6 +21,6 @@ IsPasswordManagerAvailable(__VA_ARGS__) || true) { \ profile->GetPrefs()); \ } else if (false /* NOLINT(readability/braces) */ -#include +#include #undef IsPasswordManagerAvailable diff --git a/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc index 5b2e3ad6c78..994681c9551 100644 --- a/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.cc @@ -323,10 +323,12 @@ email_aliases::EmailAliasesController* GetEmailAliasesController( RenderViewContextMenu::RenderViewContextMenu( content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params, - bool is_paste_enabled) + bool is_paste_enabled, + bool is_paste_and_match_style_enabled) : RenderViewContextMenu_Chromium(render_frame_host, params, - is_paste_enabled) + is_paste_enabled, + is_paste_and_match_style_enabled) #if BUILDFLAG(ENABLE_AI_CHAT) , ai_chat_submenu_model_(this), diff --git a/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.h b/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.h index 14021209060..3a39c364932 100644 --- a/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.h +++ b/chromium_src/chrome/browser/renderer_context_menu/render_view_context_menu.h @@ -58,7 +58,8 @@ class RenderViewContextMenu : public RenderViewContextMenu_Chromium // NOLINTNEXTLINE(runtime/references) RenderViewContextMenu(content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params, - bool is_paste_enabled); + bool is_paste_enabled, + bool is_paste_and_match_style_enabled); ~RenderViewContextMenu() override; // RenderViewContextMenuBase: bool IsCommandIdEnabled(int command_id) const override; diff --git a/chromium_src/chrome/browser/resources/certificate_manager/certificate_manager.ts b/chromium_src/chrome/browser/resources/certificate_manager/certificate_manager.ts index 20bff5a83fd..39ce2ebd8bd 100644 --- a/chromium_src/chrome/browser/resources/certificate_manager/certificate_manager.ts +++ b/chromium_src/chrome/browser/resources/certificate_manager/certificate_manager.ts @@ -3,41 +3,37 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. -import { RegisterStyleOverride } from '//resources/brave/polymer_overriding.js' -import { html } from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js' +import {injectStyle} from '//resources/brave/lit_overriding.js' +import {css} from '//resources/lit/v3_0/lit.rollup.js' + import { CertificateManagerElement } from './certificate_manager-chromium.js' -RegisterStyleOverride( - 'certificate-manager', - html` - - ` -) + .cr-nav-menu-item cr-ripple { + display: none !important; + } +`) // Note: This is a dynamic import so the style override is registered before the // component is defined. diff --git a/chromium_src/chrome/browser/resources/side_panel/customize_chrome/app.ts b/chromium_src/chrome/browser/resources/side_panel/customize_chrome/app.ts index 863b7ca4553..b7e75dd8a8e 100644 --- a/chromium_src/chrome/browser/resources/side_panel/customize_chrome/app.ts +++ b/chromium_src/chrome/browser/resources/side_panel/customize_chrome/app.ts @@ -5,13 +5,17 @@ import { CustomizeChromeApiProxy } from './customize_chrome_api_proxy.js' -import { CrLitElement, html, css, type CSSResultGroup } from '//resources/lit/v3_0/lit.rollup.js' +import { CrLitElement, html, css } from '//resources/lit/v3_0/lit.rollup.js' +import type { CSSResultGroup } from '//resources/lit/v3_0/lit.rollup.js' import { loadTimeData } from '//resources/js/load_time_data.js' import { I18nMixinLit } from '//resources/cr_elements/i18n_mixin_lit.js' import { CustomizeColorSchemeModeBrowserProxy } from '//resources/cr_components/customize_color_scheme_mode/browser_proxy.js' export * from './app-chromium.js' +// Suppressing `CrLitElement` linting errors that require the name of the class +// to match the name of the source, as this is an override. +// eslint-disable-next-line class ClosePanelButtonElement extends CrLitElement { static get is() { return 'close-panel-button' @@ -41,6 +45,10 @@ declare global { customElements.define(ClosePanelButtonElement.is, ClosePanelButtonElement) // A component to toggle the "Darker theme" setting in the Customize Chrome side panel. + +// Suppressing `CrLitElement` linting errors that require the name of the class +// to match the name of the source, as this is an override. +// eslint-disable-next-line class DarkerThemeToggleElement extends I18nMixinLit(CrLitElement) { static get is() { return 'brave-darker-theme-toggle' diff --git a/chromium_src/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc b/chromium_src/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc new file mode 100644 index 00000000000..0d37095292c --- /dev/null +++ b/chromium_src/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc @@ -0,0 +1,27 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +// Feature MagicStackAndroid was cleaned up at the upstream, this made +// showMagicStack() unconditional, exposing null-access issue in +// home_modules_ranking_helper.cc + +#define BRAVE_JNI_HOME_MODULES_RANKING_HELPER_GET_CLASSIFICATION_RESULT \ + if (!registry) { \ + return; \ + } +#define BRAVE_JNI_HOME_MODULES_RANKING_HELPER_NOTIFY_CARD_SHOWN \ + if (!registry) { \ + return; \ + } +#define BRAVE_JNI_HOME_MODULES_RANKING_HELPER_NOTIFY_CARD_INTERACTED \ + if (!registry) { \ + return; \ + } + +#include + +#undef BRAVE_JNI_HOME_MODULES_RANKING_HELPER_NOTIFY_CARD_INTERACTED +#undef BRAVE_JNI_HOME_MODULES_RANKING_HELPER_NOTIFY_CARD_SHOWN +#undef BRAVE_JNI_HOME_MODULES_RANKING_HELPER_GET_CLASSIFICATION_RESULT diff --git a/chromium_src/chrome/browser/signin/android/signin_manager_android.cc b/chromium_src/chrome/browser/signin/android/signin_manager_android.cc index 192ca71e51b..90750268c3b 100644 --- a/chromium_src/chrome/browser/signin/android/signin_manager_android.cc +++ b/chromium_src/chrome/browser/signin/android/signin_manager_android.cc @@ -11,8 +11,8 @@ #include "components/signin/public/identity_manager/identity_manager.h" // Must come after all headers that specialize FromJniType() / ToJniType(). -#include "brave/build/android/jni_headers/BraveSigninManager_jni.h" -#include "chrome/android/chrome_jni_headers/SigninManagerImpl_jni.h" +#include "brave/browser/signin/services/android/jni_headers/BraveSigninManager_jni.h" +#include "chrome/browser/signin/services/android/jni_headers/SigninManagerImpl_jni.h" namespace { // For preventing "unused Java_SigninManager_create method" compile error. diff --git a/chromium_src/chrome/browser/ui/browser_commands.cc b/chromium_src/chrome/browser/ui/browser_commands.cc index e5528f38f46..b9f558c4c57 100644 --- a/chromium_src/chrome/browser/ui/browser_commands.cc +++ b/chromium_src/chrome/browser/ui/browser_commands.cc @@ -29,9 +29,10 @@ namespace chrome { -void ReloadBypassingCache(Browser* browser, WindowOpenDisposition disposition) { +void ReloadBypassingCache(BrowserWindowInterface* browser, + WindowOpenDisposition disposition) { #if BUILDFLAG(ENABLE_TOR) - Profile* profile = browser->profile(); + Profile* profile = browser->GetProfile(); DCHECK(profile); // NewTorConnectionForSite will do hard reload after obtaining new identity if (profile->IsTor()) { diff --git a/chromium_src/chrome/browser/ui/side_panel/side_panel_ui.h b/chromium_src/chrome/browser/ui/side_panel/side_panel_ui.h index 3a543be5096..b2c36a3ffa4 100644 --- a/chromium_src/chrome/browser/ui/side_panel/side_panel_ui.h +++ b/chromium_src/chrome/browser/ui/side_panel/side_panel_ui.h @@ -6,8 +6,8 @@ #ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_SIDE_PANEL_SIDE_PANEL_UI_H_ #define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_SIDE_PANEL_SIDE_PANEL_UI_H_ -#define Toggle \ - Toggle() = 0; \ +#define Toggle \ + Toggle() {} \ virtual void Toggle #include // IWYU pragma: export diff --git a/chromium_src/chrome/browser/ui/singleton_tabs.cc b/chromium_src/chrome/browser/ui/singleton_tabs.cc index 07a38de6b56..13d4f21ef59 100644 --- a/chromium_src/chrome/browser/ui/singleton_tabs.cc +++ b/chromium_src/chrome/browser/ui/singleton_tabs.cc @@ -12,7 +12,7 @@ // and remote (on https://www.google.com and https://support.google.com). // For remote URLs going to Google we want to point users to our community site // instead. -void ShowSingletonTab(Browser* browser, const GURL& url) { +void ShowSingletonTab(BrowserWindowInterface* browser, const GURL& url) { GURL new_url = url.DomainIs("google.com") ? GURL("https://community.brave.app/") : url; diff --git a/chromium_src/chrome/browser/ui/tabs/tab_strip_api/converters/tab_converters.cc b/chromium_src/chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/converters/tab_converters.cc similarity index 90% rename from chromium_src/chrome/browser/ui/tabs/tab_strip_api/converters/tab_converters.cc rename to chromium_src/chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/converters/tab_converters.cc index ac9bd6547e5..d2b875a7fae 100644 --- a/chromium_src/chrome/browser/ui/tabs/tab_strip_api/converters/tab_converters.cc +++ b/chromium_src/chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/converters/tab_converters.cc @@ -15,6 +15,6 @@ } \ case tabs::TabCollection::Type::SPLIT -#include +#include #undef SPLIT diff --git a/chromium_src/chrome/browser/ui/tabs/tab_strip_api/adapters/tab_strip_model_adapter_impl.cc b/chromium_src/chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/tab_strip_model_adapter_impl.cc similarity index 70% rename from chromium_src/chrome/browser/ui/tabs/tab_strip_api/adapters/tab_strip_model_adapter_impl.cc rename to chromium_src/chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/tab_strip_model_adapter_impl.cc index d59460956d2..7dbabc62b1b 100644 --- a/chromium_src/chrome/browser/ui/tabs/tab_strip_api/adapters/tab_strip_model_adapter_impl.cc +++ b/chromium_src/chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/tab_strip_model_adapter_impl.cc @@ -3,7 +3,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. -#include "chrome/browser/ui/tabs/tab_strip_api/adapters/tab_strip_model_adapter_impl.h" +#include "chrome/browser/ui/tabs/tab_strip_api/tab_strip_model_impl/tab_strip_model_adapter_impl.h" #include "components/tabs/public/tab_collection.h" @@ -12,6 +12,6 @@ SPLIT: \ case tabs::TabCollection::Type::TREE_NODE -#include +#include #undef SPLIT diff --git a/chromium_src/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc b/chromium_src/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc index cefa765fa3c..f4ff89c3eef 100644 --- a/chromium_src/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc +++ b/chromium_src/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc @@ -6,6 +6,7 @@ #include "brave/browser/ui/views/tabs/brave_browser_tab_strip_controller.h" #include "brave/browser/ui/views/tabs/brave_new_tab_button.h" #include "brave/browser/ui/views/tabs/brave_tab_hover_card_controller.h" +#include "brave/browser/ui/views/tabs/brave_tab_search_button.h" #include "brave/browser/ui/views/tabs/brave_tab_strip.h" #include "chrome/browser/ui/views/frame/tab_strip_region_view.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" @@ -19,7 +20,9 @@ #define BrowserTabStripController BraveBrowserTabStripController #define NewTabButton BraveNewTabButton #define TabHoverCardController BraveTabHoverCardController +#define TabSearchButton BraveTabSearchButton #include +#undef TabSearchButton #undef TabHoverCardController #undef NewTabButton #undef BrowserTabStripController diff --git a/chromium_src/chrome/browser/ui/views/frame/layout/browser_view_layout.h b/chromium_src/chrome/browser/ui/views/frame/layout/browser_view_layout.h index c90c64b1ecb..66ff86510ca 100644 --- a/chromium_src/chrome/browser/ui/views/frame/layout/browser_view_layout.h +++ b/chromium_src/chrome/browser/ui/views/frame/layout/browser_view_layout.h @@ -12,10 +12,10 @@ class SidebarContainerView; // TODO(https://github.com/brave/brave-browser/issues/50488): There should be no // need to access these private members directly once the const-correctness // around these classes is resolved. -#define ShouldDisplayVerticalTabs \ - UnUsed(); \ +#define UpdateBubbles \ + Unused(); \ friend class BraveBrowserViewLayout; \ - bool ShouldDisplayVerticalTabs + void UpdateBubbles // Add new members to BrowserViewLayoutViews for Brave specific layout changes. #define top_container_separator \ @@ -41,6 +41,6 @@ class SidebarContainerView; #undef set_side_panel_animation_content #undef top_container_separator -#undef ShouldDisplayVerticalTabs +#undef UpdateBubbles #endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_FRAME_LAYOUT_BROWSER_VIEW_LAYOUT_H_ diff --git a/chromium_src/chrome/browser/ui/views/frame/multi_contents_view.h b/chromium_src/chrome/browser/ui/views/frame/multi_contents_view.h index 14c32aa06d4..8a9630fcaa4 100644 --- a/chromium_src/chrome/browser/ui/views/frame/multi_contents_view.h +++ b/chromium_src/chrome/browser/ui/views/frame/multi_contents_view.h @@ -6,6 +6,8 @@ #ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_FRAME_MULTI_CONTENTS_VIEW_H_ #define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_FRAME_MULTI_CONTENTS_VIEW_H_ +#include "chrome/browser/ui/tabs/split_tab_highlight_controller.h" + #define UpdateSplitRatio(...) \ UpdateSplitRatio(__VA_ARGS__); \ virtual void ResetResizeArea() {} \ diff --git a/chromium_src/chrome/browser/ui/views/frame/multi_contents_view_mini_toolbar.cc b/chromium_src/chrome/browser/ui/views/frame/multi_contents_view_mini_toolbar.cc deleted file mode 100644 index faabd6cd927..00000000000 --- a/chromium_src/chrome/browser/ui/views/frame/multi_contents_view_mini_toolbar.cc +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (c) 2025 The Brave Authors. All rights reserved. - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at https://mozilla.org/MPL/2.0/. */ - -#include "chrome/browser/ui/views/frame/multi_contents_view_mini_toolbar.h" - -#include "chrome/app/vector_icons/vector_icons.h" - -// Replace menu model with BraveSplitTabMenuModel to use our strings and icons. -#define kMiniToolbar \ - kMiniToolbar, index); \ - menu_model_ = CreateBraveSplitTabMenuModel(browser_view_->browser() \ - ->tab_strip_model(), \ - SplitTabMenuModel::MenuSource::kMiniToolbar - -#define kBrowserToolsChromeRefreshIcon GetMoreVerticalIcon() - -#include - -#undef kBrowserToolsChromeRefreshIcon -#undef kMiniToolbar diff --git a/chromium_src/chrome/browser/ui/views/frame/system_menu_model_delegate.cc b/chromium_src/chrome/browser/ui/views/frame/system_menu_model_delegate.cc index 2f19e4e385c..70b80acfb34 100644 --- a/chromium_src/chrome/browser/ui/views/frame/system_menu_model_delegate.cc +++ b/chromium_src/chrome/browser/ui/views/frame/system_menu_model_delegate.cc @@ -9,6 +9,8 @@ #include "brave/app/brave_command_ids.h" #include "brave/browser/ui/views/tabs/vertical_tab_utils.h" +#include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/ui/views/frame/vertical_tab_strip_region_view.h" #define IsCommandIdChecked IsCommandIdChecked_ChromiumImpl #define GetLabelForCommandId GetLabelForCommandId_ChromiumImpl diff --git a/chromium_src/chrome/browser/ui/views/location_bar/location_bar_view.h b/chromium_src/chrome/browser/ui/views/location_bar/location_bar_view.h index 41e4380c844..80a937fee49 100644 --- a/chromium_src/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chromium_src/chrome/browser/ui/views/location_bar/location_bar_view.h @@ -8,6 +8,7 @@ #include "chrome/browser/ui/browser_window/public/browser_window_features.h" #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" +#include "chrome/browser/ui/views/location_bar/location_icon_view.h" #include "components/prefs/pref_change_registrar.h" #include "third_party/metrics_proto/omnibox_event.pb.h" diff --git a/chromium_src/chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc b/chromium_src/chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc index 71237712a5f..893557bc69f 100644 --- a/chromium_src/chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc +++ b/chromium_src/chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc @@ -18,7 +18,7 @@ bool IsAutoplay(content_settings::PageSpecificContentSettings* content_settings, // If upstream adds other types to the dashboard we may need to update this // code. DCHECK(model->image_type() == - ContentSettingImageModel::ImageType::MEDIASTREAM); + ContentSettingImageModel::ImageType::kMediaStream); if (!content_settings) { return false; @@ -43,7 +43,7 @@ std::u16string GetAutoplayIndicatorTitle() { } // namespace // PermissionDashboardController::Update shows permissions chip for -// ContentSettingImageModel::ImageType::MEDIASTREAM, which upstream limits to +// ContentSettingImageModel::ImageType::kMediaStream, which upstream limits to // Camera and Microphone. We add AUTOPLAY to MEDIASTREAM, so we need to return // the appropriate title for it. Update is called from LocationBarView's // RefreshContentSettingViews. diff --git a/chromium_src/chrome/browser/ui/views/side_panel/side_panel_util.cc b/chromium_src/chrome/browser/ui/views/side_panel/side_panel_helper.cc similarity index 77% rename from chromium_src/chrome/browser/ui/views/side_panel/side_panel_util.cc rename to chromium_src/chrome/browser/ui/views/side_panel/side_panel_helper.cc index fb9f3609e5d..e336375bad6 100644 --- a/chromium_src/chrome/browser/ui/views/side_panel/side_panel_util.cc +++ b/chromium_src/chrome/browser/ui/views/side_panel/side_panel_helper.cc @@ -1,9 +1,9 @@ -// Copyright (c) 2022 The Brave Authors. All rights reserved. -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// you can obtain one at http://mozilla.org/MPL/2.0/. +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#include "chrome/browser/ui/views/side_panel/side_panel_util.h" +#include "chrome/browser/ui/views/side_panel/side_panel_helper.h" #include "brave/components/ai_chat/core/common/buildflags/buildflags.h" #include "brave/components/playlist/core/common/buildflags/buildflags.h" @@ -19,12 +19,13 @@ #endif #define PopulateGlobalEntries PopulateGlobalEntries_ChromiumImpl -#include +#include #undef PopulateGlobalEntries // static -void SidePanelUtil::PopulateGlobalEntries(Browser* browser, - SidePanelRegistry* global_registry) { +void SidePanelHelper::PopulateGlobalEntries( + Browser* browser, + SidePanelRegistry* global_registry) { PopulateGlobalEntries_ChromiumImpl(browser, global_registry); #if BUILDFLAG(ENABLE_PLAYLIST) diff --git a/chromium_src/chrome/browser/ui/views/side_panel/side_panel_util.h b/chromium_src/chrome/browser/ui/views/side_panel/side_panel_helper.h similarity index 56% rename from chromium_src/chrome/browser/ui/views/side_panel/side_panel_util.h rename to chromium_src/chrome/browser/ui/views/side_panel/side_panel_helper.h index aa4ed1f5692..6fc61d25ce2 100644 --- a/chromium_src/chrome/browser/ui/views/side_panel/side_panel_util.h +++ b/chromium_src/chrome/browser/ui/views/side_panel/side_panel_helper.h @@ -1,18 +1,18 @@ -// Copyright (c) 2022 The Brave Authors. All rights reserved. -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// you can obtain one at http://mozilla.org/MPL/2.0/. +/* Copyright (c) 2022 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_SIDE_PANEL_UTIL_H_ -#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_SIDE_PANEL_UTIL_H_ +#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_SIDE_PANEL_HELPER_H_ +#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_SIDE_PANEL_HELPER_H_ #define PopulateGlobalEntries \ PopulateGlobalEntries_ChromiumImpl(Browser* browser, \ SidePanelRegistry* global_registry); \ static void PopulateGlobalEntries -#include // IWYU pragma: export +#include // IWYU pragma: export #undef PopulateGlobalEntries -#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_SIDE_PANEL_UTIL_H_ +#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_SIDE_PANEL_HELPER_H_ diff --git a/chromium_src/chrome/browser/ui/views/side_panel/side_panel_toolbar_pinning_controller.cc b/chromium_src/chrome/browser/ui/views/side_panel/side_panel_toolbar_pinning_controller.cc index 250377f75df..579016bb4cb 100644 --- a/chromium_src/chrome/browser/ui/views/side_panel/side_panel_toolbar_pinning_controller.cc +++ b/chromium_src/chrome/browser/ui/views/side_panel/side_panel_toolbar_pinning_controller.cc @@ -16,7 +16,7 @@ void SidePanelToolbarPinningController::UpdateActiveState( SidePanelEntryKey key, bool show_active_in_toolbar) { - if (!browser_view_->toolbar()->pinned_toolbar_actions_container()) { + if (!browser_view_->toolbar_button_provider()->GetPinnedToolbarActions()) { return; } diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view.cc b/chromium_src/chrome/browser/ui/views/tabs/groups/tab_group_editor_bubble_view.cc similarity index 90% rename from chromium_src/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view.cc rename to chromium_src/chrome/browser/ui/views/tabs/groups/tab_group_editor_bubble_view.cc index 1d684810589..172f39ded77 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view.cc +++ b/chromium_src/chrome/browser/ui/views/tabs/groups/tab_group_editor_bubble_view.cc @@ -3,7 +3,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#include "chrome/browser/ui/views/tabs/tab_group_editor_bubble_view.h" +#include "chrome/browser/ui/views/tabs/groups/tab_group_editor_bubble_view.h" #include "base/check.h" #include "chrome/app/vector_icons/vector_icons.h" @@ -41,7 +41,7 @@ void MaybeRemoveFooter(TabGroupEditorBubbleView* bubble_view, #define kUngroupRefreshIcon \ kUngroupRefreshIcon, ui::kColorMenuIcon, kDefaultIconSize -#include +#include #undef kUngroupRefreshIcon diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.cc b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.cc similarity index 71% rename from chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.cc rename to chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.cc index 66012388d9f..8824ce2ed29 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.cc +++ b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.cc @@ -1,9 +1,9 @@ /* Copyright (c) 2019 The Brave Authors. All rights reserved. * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * you can obtain one at http://mozilla.org/MPL/2.0/. */ + * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#include "chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h" #include @@ -12,24 +12,28 @@ #include "brave/browser/ui/tabs/brave_tab_prefs.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h" #include "chrome/browser/ui/views/tabs/tab.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_controller.h" #include "chrome/browser/ui/views/tabs/tab_slot_controller.h" #include "content/public/common/url_constants.h" #include "ui/views/controls/label.h" #define TabHoverCardBubbleView TabHoverCardBubbleView_ChromiumImpl -#include +#include #undef TabHoverCardBubbleView +bool TabHoverCardBubbleView_ChromiumImpl::HasThumbnailView() const { + return tab_card_view_->thumbnail_view() != nullptr; +} + void TabHoverCardBubbleView_ChromiumImpl::BraveUpdateCardContent( const HoverCardAnchorTarget* anchor_target) { TabHoverCardBubbleView_ChromiumImpl::UpdateCardContent(anchor_target); // Replace chrome:// with brave://. Since this is purely in the UI we can // just do a sub-string replacement instead of parsing into GURL. - auto domain = std::u16string(domain_label_->GetText()); + auto domain = std::u16string(tab_card_view_->domain_label()->GetText()); if (brave_utils::ReplaceChromeToBraveScheme(domain)) { - domain_label_->SetData({domain, /*is_filename*/ false}); + tab_card_view_->domain_label()->SetData({domain, /*is_filename*/ false}); } } @@ -39,14 +43,14 @@ void TabHoverCardBubbleView::UpdateCardContent( } void TabHoverCardBubbleView::SetTargetTabImage(gfx::ImageSkia preview_image) { - if (!has_thumbnail_view()) { + if (!HasThumbnailView()) { return; } TabHoverCardBubbleView_ChromiumImpl::SetTargetTabImage(preview_image); } void TabHoverCardBubbleView::SetPlaceholderImage() { - if (!has_thumbnail_view()) { + if (!HasThumbnailView()) { return; } TabHoverCardBubbleView_ChromiumImpl::SetPlaceholderImage(); diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h similarity index 73% rename from chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h rename to chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h index cc98668febc..9aa17fb9361 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h +++ b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h @@ -1,10 +1,10 @@ /* Copyright (c) 2019 The Brave Authors. All rights reserved. * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * you can obtain one at http://mozilla.org/MPL/2.0/. */ + * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_HOVER_CARD_BUBBLE_VIEW_H_ -#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_HOVER_CARD_BUBBLE_VIEW_H_ +#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_HOVERCARD_TAB_HOVER_CARD_BUBBLE_VIEW_H_ +#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_HOVERCARD_TAB_HOVER_CARD_BUBBLE_VIEW_H_ // Inject a protected method that will have access to the private members of the // base class. Then, we can call this method from the subclass' override. @@ -13,9 +13,7 @@ class TabHoverCardBubbleView; #define BRAVE_TAB_HOVER_CARD_BUBBLE_VIEW_H_ \ - bool has_thumbnail_view() { \ - return thumbnail_view_; \ - } \ + bool HasThumbnailView() const; \ \ protected: \ void BraveUpdateCardContent(const HoverCardAnchorTarget* anchor_target); @@ -24,7 +22,7 @@ class TabHoverCardBubbleView; #define UpdateCardContent virtual UpdateCardContent #define SetTargetTabImage virtual SetTargetTabImage #define SetPlaceholderImage virtual SetPlaceholderImage -#include // IWYU pragma: export +#include // IWYU pragma: export #undef SetPlaceholderImage #undef SetTargetTabImage #undef UpdateCardContent @@ -44,4 +42,4 @@ class TabHoverCardBubbleView : public TabHoverCardBubbleView_ChromiumImpl { void SetPlaceholderImage() override; }; -#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_HOVER_CARD_BUBBLE_VIEW_H_ +#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_HOVERCARD_TAB_HOVER_CARD_BUBBLE_VIEW_H_ diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_controller.h b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h similarity index 58% rename from chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_controller.h rename to chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h index fda73738f29..3ee6c90b969 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_controller.h +++ b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller.h @@ -1,10 +1,10 @@ /* Copyright (c) 2022 The Brave Authors. All rights reserved. * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * you can obtain one at http://mozilla.org/MPL/2.0/. */ + * You can obtain one at https://mozilla.org/MPL/2.0/. */ -#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_HOVER_CARD_CONTROLLER_H_ -#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_HOVER_CARD_CONTROLLER_H_ +#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_HOVERCARD_TAB_HOVER_CARD_CONTROLLER_H_ +#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_HOVERCARD_TAB_HOVER_CARD_CONTROLLER_H_ #define CreateHoverCard \ CreateHoverCard_Unused(); \ @@ -16,9 +16,9 @@ OnHovercardImagesEnabledChanged_Unused(); \ virtual void OnHovercardImagesEnabledChanged -#include // IWYU pragma: export +#include // IWYU pragma: export #undef OnHovercardImagesEnabledChanged #undef CreateHoverCard -#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_HOVER_CARD_CONTROLLER_H_ +#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_HOVERCARD_TAB_HOVER_CARD_CONTROLLER_H_ diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_controller_browsertest.cc b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller_browsertest.cc similarity index 78% rename from chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_controller_browsertest.cc rename to chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller_browsertest.cc index ff89af3db9e..60835931cce 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_controller_browsertest.cc +++ b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_controller_browsertest.cc @@ -5,4 +5,4 @@ #include "brave/browser/ui/views/tabs/brave_tab_hover_card_controller.h" -#include +#include diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_test_util.cc b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_test_util.cc similarity index 84% rename from chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_test_util.cc rename to chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_test_util.cc index 32dbbfbc440..5b7aafc825e 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_test_util.cc +++ b/chromium_src/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_test_util.cc @@ -1,7 +1,7 @@ /* Copyright (c) 2022 The Brave Authors. All rights reserved. * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * you can obtain one at http://mozilla.org/MPL/2.0/. */ + * You can obtain one at https://mozilla.org/MPL/2.0/. */ // This following include is needed because of the upstream change // https://chromium.googlesource.com/chromium/src/+/4021762e. It added @@ -12,4 +12,4 @@ // member access into incomplete type error. #include "brave/browser/ui/views/tabs/brave_tab_hover_card_controller.h" -#include +#include diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab.h b/chromium_src/chrome/browser/ui/views/tabs/tab.h index ad7c9e0dd56..c0233fe3b9f 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab.h +++ b/chromium_src/chrome/browser/ui/views/tabs/tab.h @@ -7,7 +7,7 @@ #define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_H_ #include "base/memory/raw_ref.h" -#include "chrome/browser/ui/views/tabs/hover_card_anchor_target.h" +#include "chrome/browser/ui/views/tabs/hovercard/hover_card_anchor_target.h" #include "chrome/browser/ui/views/tabs/tab_slot_controller.h" #include "components/tabs/public/tab_interface.h" @@ -53,7 +53,7 @@ struct ControllableCloseButtonState final { ResetTabStyle(std::unique_ptr new_style); \ void UpdateInsets() -#define SetData virtual SetData +#define OnTabDataChanged virtual OnTabDataChanged #define ActiveStateChanged virtual ActiveStateChanged #define GetGroupColor virtual GetGroupColor #define UpdateIconVisibility virtual UpdateIconVisibility @@ -74,6 +74,6 @@ struct ControllableCloseButtonState final { #undef UpdateInsets #undef GetWidthOfLargestSelectableRegion #undef kMinimumContentsWidthForCloseButtons -#undef SetData +#undef OnTabDataChanged #endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TABS_TAB_H_ diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view_browsertest.cc b/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view_browsertest.cc index 00d60bb483b..11f12df6ff1 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view_browsertest.cc +++ b/chromium_src/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view_browsertest.cc @@ -12,8 +12,8 @@ #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/tabs/tab_data.h" #include "chrome/browser/ui/test/test_browser_dialog.h" +#include "chrome/browser/ui/views/tabs/hovercard/tab_hover_card_test_util.h" #include "chrome/browser/ui/views/tabs/tab.h" -#include "chrome/browser/ui/views/tabs/tab_hover_card_test_util.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" #include "content/public/test/browser_test.h" #include "url/gurl.h" @@ -41,13 +41,17 @@ class TabHoverCardBubbleViewBrowserTest : public DialogBrowserTest, // DialogBrowserTest: void ShowUi(const std::string& name) override { std::vector data_list; - tabs::TabData data; - data.title = kTabTitle; - data.last_committed_url = GURL(kTabUrl); data_list.push_back( - {.index = 0, .handle = tabs::TabHandle(0), .data = data}); + {.index = 0, .handle = tabs::TabHandle(0), .is_pinned = false}); GetTabStrip(browser())->AddTabsAt(data_list); + // As tabs::TabHandle::Get() would return nullptr, the tab data would not be + // set. So we need to set the tab data manually here for testing. + tabs::TabData tab_data; + tab_data.title = kTabTitle; + tab_data.last_committed_url = GURL(kTabUrl); + GetTabStrip(browser())->tab_at(0)->SetDataForTesting(tab_data); + SimulateHoverTab(browser(), 0); } @@ -70,8 +74,8 @@ class TabHoverCardBubbleViewBrowserTest : public DialogBrowserTest, return false; } - EXPECT_EQ(kTabTitle, hover_card->GetTitleTextForTesting()); - EXPECT_EQ(kTabDomain, hover_card->GetDomainTextForTesting()); + EXPECT_EQ(kTabTitle, hover_card->GetTitleViewForTesting()->GetText()); + EXPECT_EQ(kTabDomain, hover_card->GetDomainViewForTesting()->GetText()); return true; } }; diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_search_container.cc b/chromium_src/chrome/browser/ui/views/tabs/tab_search_container.cc deleted file mode 100644 index be37e520c14..00000000000 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_search_container.cc +++ /dev/null @@ -1,13 +0,0 @@ -/* Copyright (c) 2023 The Brave Authors. All rights reserved. - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at https://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/ui/views/tabs/brave_new_tab_button.h" -#include "brave/browser/ui/views/tabs/brave_tab_search_button.h" - -#define TabSearchButton BraveTabSearchButton - -#include - -#undef TabSearchButton diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_search_container_unittest.cc b/chromium_src/chrome/browser/ui/views/tabs/tab_search_container_unittest.cc deleted file mode 100644 index 8a157c6fdae..00000000000 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_search_container_unittest.cc +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2026 The Brave Authors. All rights reserved. -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at https://mozilla.org/MPL/2.0/. */ - -#include "brave/browser/ui/views/tabs/brave_tab_hover_card_controller.h" -#include "chrome/browser/ui/views/tabs/tab_strip.h" - -#define TabHoverCardController BraveTabHoverCardController -#include -#undef TabHoverCardController diff --git a/chromium_src/chrome/browser/ui/views/tabs/tab_strip.h b/chromium_src/chrome/browser/ui/views/tabs/tab_strip.h index 7e52b65efa7..71d1e22902e 100644 --- a/chromium_src/chrome/browser/ui/views/tabs/tab_strip.h +++ b/chromium_src/chrome/browser/ui/views/tabs/tab_strip.h @@ -45,11 +45,11 @@ class BraveTabHoverCardController; #define TabHoverCardController BraveTabHoverCardController #define AddTabToGroup virtual AddTabToGroup -#define SetTabData virtual SetTabData #define MoveTab virtual MoveTab +#define OnTabPinnedStateChanged virtual OnTabPinnedStateChanged #include // IWYU pragma: export +#undef OnTabPinnedStateChanged #undef MoveTab -#undef SetTabData #undef AddTabToGroup #undef TabHoverCardController #undef GetDragContext diff --git a/chromium_src/chrome/browser/ui/views/toolbar/browser_app_menu_button.cc b/chromium_src/chrome/browser/ui/views/toolbar/browser_app_menu_button.cc index dca4ff335f0..c7d8ff7f46e 100644 --- a/chromium_src/chrome/browser/ui/views/toolbar/browser_app_menu_button.cc +++ b/chromium_src/chrome/browser/ui/views/toolbar/browser_app_menu_button.cc @@ -7,8 +7,6 @@ #include "brave/browser/ui/toolbar/brave_app_menu_model.h" -#define FromVectorIcon(icon, color) FromVectorIcon(icon, color, GetIconSize()) #define AppMenuModel BraveAppMenuModel #include #undef AppMenuModel -#undef FromVectorIcon diff --git a/chromium_src/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container.h b/chromium_src/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container.h index 19c7e7456b8..e537d9146da 100644 --- a/chromium_src/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container.h +++ b/chromium_src/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container.h @@ -6,6 +6,8 @@ #ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TOOLBAR_PINNED_TOOLBAR_ACTIONS_CONTAINER_H_ #define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_VIEWS_TOOLBAR_PINNED_TOOLBAR_ACTIONS_CONTAINER_H_ +#include "chrome/browser/ui/views/toolbar/pinned_toolbar_actions.h" + // We only want to allow the downloads button to be show in the pinned toolbar // container for now. #define UpdateActionState(...) \ diff --git a/chromium_src/chrome/browser/ui/webui/cr_components/searchbox/searchbox_omnibox_client.cc b/chromium_src/chrome/browser/ui/webui/cr_components/searchbox/searchbox_omnibox_client.cc index 43859b70577..6d4563fb14e 100644 --- a/chromium_src/chrome/browser/ui/webui/cr_components/searchbox/searchbox_omnibox_client.cc +++ b/chromium_src/chrome/browser/ui/webui/cr_components/searchbox/searchbox_omnibox_client.cc @@ -33,10 +33,12 @@ content::OpenURLParams MaybeOverrideURLParams(content::OpenURLParams params, // the behavior there too. This seems like the patch of least changes: // 1. If this is a keyword search with Brave Search // 2. Then replace &source=desktop with &source=new_tab -#define OpenURL(PARAMS, CALLBACK) \ - OpenURL(MaybeOverrideURLParams( \ - PARAMS, GetTemplateURLService()->GetTemplateURLForKeyword( \ - match.keyword)), \ +#define OpenURL(PARAMS, CALLBACK) \ + OpenURL(match.keyword.empty() \ + ? PARAMS \ + : MaybeOverrideURLParams( \ + PARAMS, GetTemplateURLService()->GetTemplateURLForKeyword( \ + match.keyword)), \ CALLBACK) #include diff --git a/chromium_src/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chromium_src/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc index e9535c41cb7..168890f3997 100644 --- a/chromium_src/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc +++ b/chromium_src/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc @@ -21,11 +21,11 @@ void BraveRemoveJumplist(Profile* profile) { JumpListUpdater::DeleteJumpList(app_id); } -#define browsing_data_important_sites_util \ +#define GetBrowsingDataRemover() \ + GetBrowsingDataRemover(); \ if (remove_mask & chrome_browsing_data_remover::DATA_TYPE_HISTORY) { \ BraveRemoveJumplist(profile_); \ - } \ - browsing_data_important_sites_util + } #endif #if BUILDFLAG(ENABLE_AI_CHAT) @@ -43,5 +43,5 @@ void BraveRemoveJumplist(Profile* profile) { #endif #if BUILDFLAG(IS_WIN) -#undef browsing_data_important_sites_util +#undef GetBrowsingDataRemover #endif diff --git a/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc b/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc index 0071437c6ad..1ff5682400b 100644 --- a/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc +++ b/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc @@ -47,11 +47,13 @@ TabSearchPageHandler::TabSearchPageHandler( webui_controller, metrics_reporter) { #if BUILDFLAG(ENABLE_AI_CHAT) - pref_change_registrar_.Add( + Profile* profile = Profile::FromWebUI(web_ui_); + brave_pref_change_registrar_.Init(profile->GetPrefs()); + brave_pref_change_registrar_.Add( ai_chat::prefs::kBraveAIChatTabOrganizationEnabled, base::BindRepeating( &TabSearchPageHandler::OnTabOrganizationFeaturePrefChanged, - base::Unretained(this), Profile::FromWebUI(web_ui_))); + base::Unretained(this), profile)); #endif // BUILDFLAG(ENABLE_AI_CHAT) } @@ -167,28 +169,31 @@ void TabSearchPageHandler::OnGetFocusTabs( } // Move all tabs from normal browser window to a new window. - std::vector tab_details_before_move; + std::vector tabs_before_move; for (const auto& tab_id_str : *result) { int tab_id = 0; if (!base::StringToInt(tab_id_str, &tab_id)) { continue; } - std::optional details = GetTabDetails(tab_id); - if (!details) { + tabs::TabInterface* tab = GetTabInterface(tab_id); + if (!tab) { continue; } - // Store all details before move to preserve the index. - tab_details_before_move.push_back(*details); + // Store all tab before move to preserve the index. + tabs_before_move.push_back(tab); // Store old window ID (session ID), tab ID, and tab strip index for // undo. - original_tabs_info_by_window_[details->tab->GetBrowserWindowInterface() + int tab_index = + tab->GetBrowserWindowInterface()->GetTabStripModel()->GetIndexOfTab( + tab); + original_tabs_info_by_window_[tab->GetBrowserWindowInterface() ->GetSessionID()] - .push_back({tab_id, details->GetIndex()}); + .push_back({tab_id, tab_index}); } - if (tab_details_before_move.empty()) { + if (tabs_before_move.empty()) { std::move(callback).Run(false, nullptr); return; } @@ -196,12 +201,16 @@ void TabSearchPageHandler::OnGetFocusTabs( auto create_params = Browser::CreateParams(Profile::FromWebUI(web_ui_), true); create_params.user_title = topic; Browser* new_browser = Browser::Create(create_params); - for (const auto& details : tab_details_before_move) { - std::unique_ptr tab = - details.tab->GetBrowserWindowInterface() + for (auto* tab : tabs_before_move) { + int tab_index = + tab->GetBrowserWindowInterface()->GetTabStripModel()->GetIndexOfTab( + tab); + + std::unique_ptr detached_tab_model = + tab->GetBrowserWindowInterface() ->GetTabStripModel() - ->DetachTabAtForInsertion(details.GetIndex()); - new_browser->tab_strip_model()->AppendTab(std::move(tab), + ->DetachTabAtForInsertion(tab_index); + new_browser->tab_strip_model()->AppendTab(std::move(detached_tab_model), false /* foreground */); } new_browser->window()->Show(); @@ -216,7 +225,7 @@ void TabSearchPageHandler::UndoFocusTabs(UndoFocusTabsCallback callback) { GlobalBrowserCollection::GetInstance()->ForEach( [&target, &iter, this](BrowserWindowInterface* bwi) { Browser* browser = bwi->GetBrowserForMigrationOnly(); - if (!ShouldTrackBrowser(browser)) { + if (!ShouldTrackBrowser(profile_, browser)) { return true; } @@ -238,17 +247,21 @@ void TabSearchPageHandler::UndoFocusTabs(UndoFocusTabsCallback callback) { for (const auto& tab_info : iter.second) { // Find the moved tab. - std::optional details = GetTabDetails(tab_info.tab_id); - if (!details) { + tabs::TabInterface* tab = GetTabInterface(tab_info.tab_id); + if (!tab) { continue; } - std::unique_ptr tab = - details->tab->GetBrowserWindowInterface() + int tab_index = + tab->GetBrowserWindowInterface()->GetTabStripModel()->GetIndexOfTab( + tab); + + std::unique_ptr detached_tab_model = + tab->GetBrowserWindowInterface() ->GetTabStripModel() - ->DetachTabAtForInsertion(details->GetIndex()); + ->DetachTabAtForInsertion(tab_index); target->tab_strip_model()->InsertDetachedTabAt( - tab_info.index, std::move(tab), AddTabTypes::ADD_NONE); + tab_info.index, std::move(detached_tab_model), AddTabTypes::ADD_NONE); } } diff --git a/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h b/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h index 7e0d74a5745..164401fe1e9 100644 --- a/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h +++ b/chromium_src/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h @@ -96,6 +96,8 @@ class TabSearchPageHandler : public TabSearchPageHandler_ChromiumImpl { std::vector GetTabsForAIEngine(); + PrefChangeRegistrar brave_pref_change_registrar_; + // Map from window ID (session ID serves as a unique window ID here as this is // only used within a single session) to the list of original tab info for // undo last focus tabs action. This is used to move the focus tabs back to diff --git a/chromium_src/chrome/browser/web_applications/web_app_helpers.cc b/chromium_src/chrome/browser/web_applications/web_app_helpers.cc deleted file mode 100644 index 41675421efd..00000000000 --- a/chromium_src/chrome/browser/web_applications/web_app_helpers.cc +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2024 The Brave Authors. All rights reserved. -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at https://mozilla.org/MPL/2.0/. - -#include "brave/components/constants/webui_url_constants.h" - -// Make sure IsValidWebAppUrl also checks for allowed Brave WebUI hosts -#define IsValidWebAppUrl IsValidWebAppUrl_ChromiumImpl - -#include -#undef IsValidWebAppUrl - -namespace web_app { - -bool IsValidWebAppUrl(const GURL& app_url) { - return IsValidWebAppUrl_ChromiumImpl(app_url) || - (app_url.SchemeIs(content::kChromeUIScheme) && - kInstallablePWAWebUIHosts.contains(app_url.host())); -} - -} // namespace web_app diff --git a/chromium_src/chrome/common/chrome_features.cc b/chromium_src/chrome/common/chrome_features.cc index a04874c99e9..a9646700b0f 100644 --- a/chromium_src/chrome/common/chrome_features.cc +++ b/chromium_src/chrome/common/chrome_features.cc @@ -16,14 +16,11 @@ OVERRIDE_FEATURE_DEFAULT_STATES({{ {kDesktopPWAsTabStripSettings, base::FEATURE_ENABLED_BY_DEFAULT}, {kHttpsFirstBalancedMode, base::FEATURE_DISABLED_BY_DEFAULT}, {kIndigo, base::FEATURE_DISABLED_BY_DEFAULT}, - {kSCTAuditing, base::FEATURE_DISABLED_BY_DEFAULT}, + {kSCTAuditingHashdance, base::FEATURE_DISABLED_BY_DEFAULT}, #if !BUILDFLAG(IS_ANDROID) {kTrustSafetySentimentSurvey, base::FEATURE_DISABLED_BY_DEFAULT}, {kTrustSafetySentimentSurveyV2, base::FEATURE_DISABLED_BY_DEFAULT}, #endif -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) - {kShortcutsNotApps, base::FEATURE_DISABLED_BY_DEFAULT}, -#endif }}); } // namespace features diff --git a/chromium_src/chrome/common/url_constants.h b/chromium_src/chrome/common/url_constants.h index 20d028b8921..87db1b445a2 100644 --- a/chromium_src/chrome/common/url_constants.h +++ b/chromium_src/chrome/common/url_constants.h @@ -281,6 +281,12 @@ inline constexpr char16_t kMemorySaverModeTabDiscardingHelpUrl[] = inline constexpr char16_t kIncognitoHelpCenterURL[] = u"https://support.brave.app"; +// TODO(crbug.com/498632327): Replace this URL with P-link. +// "Learn more" URL for the web app installation flow, linked from installation +// dialog and options view. +inline constexpr char kInstallDialogFlowLearnMoreURL[] = + "https://support.google.com/chrome/answer/9658361"; + // The URL for the Help Center page about IP Protection. inline constexpr char kIpProtectionHelpCenterURL[] = "https://support.google.com/chrome?p=ip_protection"; @@ -532,6 +538,10 @@ inline constexpr char kWallpaperSearchLearnMorePageURL[] = // The URL for the passed in Google Wallet. inline constexpr char kWalletPassesPageURL[] = "https://support.brave.app/"; +// The help center article URL on using Wallet private passes across Google. +inline constexpr char kWalletPrivatePassHelpCenterURL[] = + "https://support.brave.app/"; + // The URL for the "Learn more" page for Wallpaper Search for managed users. inline constexpr char kWallpaperSearchLearnMorePageManagedURL[] = "https://support.brave.app/"; @@ -629,6 +639,10 @@ inline constexpr char kWindowsXPVistaDeprecationURL[] = // The URL for the Windows 7/8.1 deprecation help center article. inline constexpr char kWindows78DeprecationURL[] = "https://support.brave.app/hc/en-us/articles/11197967945613"; + +// The URL for the "Learn more" page for process isolation. +inline constexpr char kProcessIsolationLearnMoreUrl[] = + "https://support.brave.app/"; #endif // BUILDFLAG(IS_WIN) // "Learn more" URL for the one click signin infobar. diff --git a/chromium_src/chrome/elevation_service/elevation_service_idl.idl b/chromium_src/chrome/elevation_service/elevation_service_idl.idl index e45977d94ec..e9ad0a64f62 100644 --- a/chromium_src/chrome/elevation_service/elevation_service_idl.idl +++ b/chromium_src/chrome/elevation_service/elevation_service_idl.idl @@ -15,8 +15,14 @@ typedef enum ProtectionLevel { // it. This should only be used for executables in trusted paths e.g. // C:\Program Files, otherwise anyone could pretend to be your executable. PROTECTION_PATH_VALIDATION = 2, + // The same as `PROTECTION_PATH_VALIDATION` except it also encloses into the + // path validation data whether or not the caller is running isolated. A + // non-isolated caller cannot decrypt data previously encrypted by an isolated + // caller, however an isolated caller is allowed to decrypt any data that + // meets the path validation criteria. + PROTECTION_PATH_VALIDATION_WITH_ISOLATION = 3, // Keep at the end. - PROTECTION_MAX = 3, + PROTECTION_MAX = 4, } ProtectionLevel; [ diff --git a/chromium_src/chrome/installer/util/google_update_settings.cc b/chromium_src/chrome/installer/util/google_update_settings_win.cc similarity index 97% rename from chromium_src/chrome/installer/util/google_update_settings.cc rename to chromium_src/chrome/installer/util/google_update_settings_win.cc index 9efa6699b04..ad3e28cbd8d 100644 --- a/chromium_src/chrome/installer/util/google_update_settings.cc +++ b/chromium_src/chrome/installer/util/google_update_settings_win.cc @@ -11,7 +11,7 @@ #define UpdateInstallStatus UpdateInstallStatus_Unused #define UpdateGoogleUpdateApKey UpdateGoogleUpdateApKey_Unused -#include +#include #undef UpdateGoogleUpdateApKey #undef UpdateInstallStatus diff --git a/chromium_src/components/autofill/core/common/autofill_features.cc b/chromium_src/components/autofill/core/common/autofill_features.cc index ed98e6f49a2..fc79ef7fa89 100644 --- a/chromium_src/components/autofill/core/common/autofill_features.cc +++ b/chromium_src/components/autofill/core/common/autofill_features.cc @@ -11,9 +11,6 @@ namespace autofill::features { OVERRIDE_FEATURE_DEFAULT_STATES({{ {kAutofillAiServerModel, base::FEATURE_DISABLED_BY_DEFAULT}, -#if BUILDFLAG(IS_ANDROID) - {kAutofillEnableLoyaltyCardsFilling, base::FEATURE_DISABLED_BY_DEFAULT}, -#endif // BUILDFLAG(IS_ANDROID) }}); } // namespace autofill::features diff --git a/chromium_src/components/component_updater/component_updater_service.cc b/chromium_src/components/component_updater/component_updater_service.cc index 4d04800fc10..643dd5fe410 100644 --- a/chromium_src/components/component_updater/component_updater_service.cc +++ b/chromium_src/components/component_updater/component_updater_service.cc @@ -41,9 +41,10 @@ void CrxUpdateService::EnsureInstalled(const std::string& id, } auto crx_data_callback = base::BindOnce(&CrxUpdateService::GetCrxComponents, - base::Unretained(this)); + weak_ptr_factory_.GetWeakPtr()); + auto update_complete_callback = base::BindOnce( - &CrxUpdateService::OnUpdateComplete, base::Unretained(this), + &CrxUpdateService::OnUpdateComplete, weak_ptr_factory_.GetWeakPtr(), std::move(callback), base::TimeTicks::Now()); update_client_->Install(id, std::move(crx_data_callback), {}, @@ -67,9 +68,10 @@ void CrxUpdateService::OnDemandUpdate(const std::vector& ids, } auto crx_data_callback = base::BindOnce(&CrxUpdateService::GetCrxComponents, - base::Unretained(this)); + weak_ptr_factory_.GetWeakPtr()); + auto update_complete_callback = base::BindOnce( - &CrxUpdateService::OnUpdateComplete, base::Unretained(this), + &CrxUpdateService::OnUpdateComplete, weak_ptr_factory_.GetWeakPtr(), std::move(callback), base::TimeTicks::Now()); update_client_->Update(ids, std::move(crx_data_callback), {}, diff --git a/chromium_src/components/multistep_filter/core/features.cc b/chromium_src/components/multistep_filter/core/features.cc new file mode 100644 index 00000000000..a6adb3cb5c3 --- /dev/null +++ b/chromium_src/components/multistep_filter/core/features.cc @@ -0,0 +1,16 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#include "base/feature_override.h" + +#include + +namespace multistep_filter { + +OVERRIDE_FEATURE_DEFAULT_STATES({{ + {kMultistepFilter, base::FEATURE_DISABLED_BY_DEFAULT}, +}}); + +} // namespace multistep_filter diff --git a/chromium_src/components/omnibox/common/omnibox_features.cc b/chromium_src/components/omnibox/common/omnibox_features.cc index 74a446b6f94..9fe05f277d5 100644 --- a/chromium_src/components/omnibox/common/omnibox_features.cc +++ b/chromium_src/components/omnibox/common/omnibox_features.cc @@ -11,7 +11,6 @@ namespace omnibox { OVERRIDE_FEATURE_DEFAULT_STATES({{ {kAblateSearchProviderWarmup, base::FEATURE_ENABLED_BY_DEFAULT}, - {kDocumentProviderNoSyncRequirement, base::FEATURE_DISABLED_BY_DEFAULT}, {kMlUrlScoring, base::FEATURE_DISABLED_BY_DEFAULT}, #if BUILDFLAG(IS_ANDROID) {kOmniboxMobileParityUpdateV2, base::FEATURE_DISABLED_BY_DEFAULT}, diff --git a/chromium_src/components/one_time_tokens/core/common/one_time_token_features.cc b/chromium_src/components/one_time_tokens/core/common/one_time_token_features.cc new file mode 100644 index 00000000000..f42aaff408f --- /dev/null +++ b/chromium_src/components/one_time_tokens/core/common/one_time_token_features.cc @@ -0,0 +1,16 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#include "base/feature_override.h" + +#include + +namespace one_time_tokens::features { + +OVERRIDE_FEATURE_DEFAULT_STATES({{ + {kGmailOtpRetrievalService, base::FEATURE_ENABLED_BY_DEFAULT}, +}}); + +} // namespace one_time_tokens::features diff --git a/chromium_src/components/search_engines/template_url_starter_pack_data.h b/chromium_src/components/search_engines/template_url_starter_pack_data.h index dc482729846..92317c67aff 100644 --- a/chromium_src/components/search_engines/template_url_starter_pack_data.h +++ b/chromium_src/components/search_engines/template_url_starter_pack_data.h @@ -6,17 +6,17 @@ #ifndef BRAVE_CHROMIUM_SRC_COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_STARTER_PACK_DATA_H_ #define BRAVE_CHROMIUM_SRC_COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_STARTER_PACK_DATA_H_ -// Add an enum value for any Brave-defined search engine starter packs. -#define kMaxStarterPackId kAskBraveSearch, kMaxStarterPackId - // Rename upstream's GetStarterPackEngines` so that we can provide our own // implementation. The original function is used in upstream unit tests. #define GetStarterPackEngines GetStarterPackEngines_ChromiumImpl +// Add an enum value for any Brave-defined search engine starter packs. +#define BRAVE_TEMPLATE_URL_STARTER_PACK_ID_ENUM kAskBraveSearch, + #include // IWYU pragma: export +#undef BRAVE_TEMPLATE_URL_STARTER_PACK_ID_ENUM #undef GetStarterPackEngines -#undef kMaxStarterPackId namespace template_url_starter_pack_data { diff --git a/chromium_src/components/sync/android/sync_service_android_bridge.cc b/chromium_src/components/sync/android/sync_service_android_bridge.cc index 4e8f0083283..e538f561f4a 100644 --- a/chromium_src/components/sync/android/sync_service_android_bridge.cc +++ b/chromium_src/components/sync/android/sync_service_android_bridge.cc @@ -27,7 +27,6 @@ namespace syncer { // duplicated entry in addition to other possible mess. // To avoid this, override with empty implementation. void SyncServiceAndroidBridge::KeepAccountSettingsPrefsOnlyForUsers( - JNIEnv* env, - const base::android::JavaRef& gaia_ids) {} + const std::vector& gaia_id_strings) {} } // namespace syncer diff --git a/chromium_src/components/sync/android/sync_service_android_bridge.h b/chromium_src/components/sync/android/sync_service_android_bridge.h index b53d47fb648..f3298225761 100644 --- a/chromium_src/components/sync/android/sync_service_android_bridge.h +++ b/chromium_src/components/sync/android/sync_service_android_bridge.h @@ -6,9 +6,9 @@ #ifndef BRAVE_CHROMIUM_SRC_COMPONENTS_SYNC_ANDROID_SYNC_SERVICE_ANDROID_BRIDGE_H_ #define BRAVE_CHROMIUM_SRC_COMPONENTS_SYNC_ANDROID_SYNC_SERVICE_ANDROID_BRIDGE_H_ -#define KeepAccountSettingsPrefsOnlyForUsers \ - KeepAccountSettingsPrefsOnlyForUsers_Unused( \ - JNIEnv* env, const base::android::JavaRef& gaia_ids); \ +#define KeepAccountSettingsPrefsOnlyForUsers \ + KeepAccountSettingsPrefsOnlyForUsers_Unused( \ + const std::vector& gaia_id_strings); \ void KeepAccountSettingsPrefsOnlyForUsers #include // IWYU pragma: export diff --git a/chromium_src/components/sync/base/data_type.cc b/chromium_src/components/sync/base/data_type.cc index b0ea61d9918..0de01710992 100644 --- a/chromium_src/components/sync/base/data_type.cc +++ b/chromium_src/components/sync/base/data_type.cc @@ -4,7 +4,9 @@ * You can obtain one at https://mozilla.org/MPL/2.0/. */ #define EncryptableUserTypes EncryptableUserTypes_ChromiumImpl +#define LowPriorityUserTypes LowPriorityUserTypes_ChromiumImpl #include +#undef LowPriorityUserTypes #undef EncryptableUserTypes namespace syncer { @@ -17,4 +19,17 @@ DataTypeSet EncryptableUserTypes() { return encryptable_user_types; } +DataTypeSet LowPriorityUserTypes() { + auto low_priority_user_types = LowPriorityUserTypes_ChromiumImpl(); + // Directives must be synced after history entities. If + // history delete directives are processed before retrieving history upon + // initial sync, relevant entries will not be deleted. + // This override must be reverted when + // https://github.com/brave/go-sync/issues/178 will be solved. + low_priority_user_types.Remove(HISTORY); + low_priority_user_types.Put(HISTORY_DELETE_DIRECTIVES); + + return low_priority_user_types; +} + } // namespace syncer diff --git a/chromium_src/components/sync/base/data_type.h b/chromium_src/components/sync/base/data_type.h deleted file mode 100644 index 27a0d9ef43b..00000000000 --- a/chromium_src/components/sync/base/data_type.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (c) 2023 The Brave Authors. All rights reserved. - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at https://mozilla.org/MPL/2.0/. */ - -#ifndef BRAVE_CHROMIUM_SRC_COMPONENTS_SYNC_BASE_DATA_TYPE_H_ -#define BRAVE_CHROMIUM_SRC_COMPONENTS_SYNC_BASE_DATA_TYPE_H_ - -#define LowPriorityUserTypes LowPriorityUserTypes_ChromiumImpl - -#include // IWYU pragma: export - -#undef LowPriorityUserTypes - -namespace syncer { - -constexpr DataTypeSet LowPriorityUserTypes() { - auto low_priority_user_types = LowPriorityUserTypes_ChromiumImpl(); - // Directives must be synced after history entities. If - // history delete directives are processed before retrieving history upon - // initial sync, relevant entries will not be deleted. - // This override must be reverted when - // https://github.com/brave/go-sync/issues/178 will be solved. - low_priority_user_types.Remove(HISTORY); - low_priority_user_types.Put(HISTORY_DELETE_DIRECTIVES); - - return low_priority_user_types; -} - -} // namespace syncer - -#endif // BRAVE_CHROMIUM_SRC_COMPONENTS_SYNC_BASE_DATA_TYPE_H_ diff --git a/chromium_src/components/sync/base/features.cc b/chromium_src/components/sync/base/features.cc index a286eb72b5b..3e6203d4c12 100644 --- a/chromium_src/components/sync/base/features.cc +++ b/chromium_src/components/sync/base/features.cc @@ -10,7 +10,6 @@ namespace syncer { OVERRIDE_FEATURE_DEFAULT_STATES({{ - {kSyncAutofillLoyaltyCard, base::FEATURE_DISABLED_BY_DEFAULT}, {kSyncAutofillValuableMetadata, base::FEATURE_DISABLED_BY_DEFAULT}, {kSyncDetermineAccountManagedStatus, base::FEATURE_DISABLED_BY_DEFAULT}, }}); diff --git a/chromium_src/components/sync/service/sync_session_durations_metrics_recorder.cc b/chromium_src/components/sync/service/sync_session_durations_metrics_recorder.cc index 5e469ba72a9..d3213dc5d7f 100644 --- a/chromium_src/components/sync/service/sync_session_durations_metrics_recorder.cc +++ b/chromium_src/components/sync/service/sync_session_durations_metrics_recorder.cc @@ -5,16 +5,19 @@ #include "components/sync/service/sync_session_durations_metrics_recorder.h" +#include "base/check_deref.h" #include "base/notreached.h" namespace syncer { SyncSessionDurationsMetricsRecorder::SyncSessionDurationsMetricsRecorder( SyncService* sync_service, - signin::IdentityManager* identity_manager) + signin::IdentityManager* identity_manager, + metrics::ProfileMetricsService* profile_metrics_service) : sync_service_(sync_service), identity_manager_(identity_manager), - history_sync_recorder_(sync_service) {} + history_sync_recorder_(sync_service, profile_metrics_service), + profile_metrics_service_(CHECK_DEREF(profile_metrics_service)) {} SyncSessionDurationsMetricsRecorder::~SyncSessionDurationsMetricsRecorder() {} diff --git a/chromium_src/components/sync/service/sync_user_settings_impl.cc b/chromium_src/components/sync/service/sync_user_settings_impl.cc new file mode 100644 index 00000000000..b00d931742c --- /dev/null +++ b/chromium_src/components/sync/service/sync_user_settings_impl.cc @@ -0,0 +1,19 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#include "components/sync/base/data_type.h" + +namespace syncer { +namespace { + +void BraveAdjustPreferredDataTypes(DataTypeSet* types) { + types->Remove(AUTOFILL_VALUABLE); + types->Remove(AUTOFILL_VALUABLE_METADATA); +} + +} // namespace +} // namespace syncer + +#include diff --git a/chromium_src/components/sync_device_info/device_info_sync_bridge.cc b/chromium_src/components/sync_device_info/device_info_sync_bridge.cc index 2ac35ba253a..0b23f223ddc 100644 --- a/chromium_src/components/sync_device_info/device_info_sync_bridge.cc +++ b/chromium_src/components/sync_device_info/device_info_sync_bridge.cc @@ -8,6 +8,7 @@ #include "base/logging.h" #include "brave/components/sync_device_info/brave_device_info.h" #include "components/sync/base/deletion_origin.h" +#include "components/sync_device_info/device_info_proto_enum_util.h" #define BRAVE_MAKE_LOCAL_DEVICE_SPECIFICS \ specifics->mutable_brave_fields()->set_is_self_delete_supported(true); @@ -61,7 +62,7 @@ std::unique_ptr BraveSpecificsToModel( return std::make_unique( specifics.cache_guid(), specifics.client_name(), specifics.chrome_version(), specifics.sync_user_agent(), - specifics.device_type(), + ToDeviceInfoDeviceType(specifics.device_type()), DeriveOsFromDeviceType(specifics.device_type(), specifics.manufacturer()), DeriveFormFactorFromDeviceType(specifics.device_type()), specifics.signin_scoped_device_id(), specifics.manufacturer(), @@ -69,7 +70,8 @@ std::unique_ptr BraveSpecificsToModel( ProtoTimeToTime(specifics.last_updated_timestamp()), GetPulseIntervalFromSpecifics(specifics), specifics.feature_fields().send_tab_to_self_receiving_enabled(), - specifics.feature_fields().send_tab_to_self_receiving_type(), + ToDeviceInfoSendTabReceivingType( + specifics.feature_fields().send_tab_to_self_receiving_type()), SpecificsToSharingInfo(specifics), SpecificsToPhoneAsASecurityKeyInfo(specifics), specifics.invalidation_fields().instance_id_token(), data_types, diff --git a/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.cc b/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.cc index c7002dfa867..572284daae4 100644 --- a/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.cc +++ b/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.cc @@ -23,6 +23,7 @@ void WalletHttpClientImpl::UpsertPublicPass(Pass pass, void WalletHttpClientImpl::UpsertPrivatePass( PrivatePass pass, + std::optional session_id, UpsertPrivatePassCallback callback) { std::move(callback).Run( base::unexpected(WalletHttpClient::WalletRequestError::kGenericError)); diff --git a/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.h b/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.h index 7026d1e91b9..0ddefbb7cca 100644 --- a/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.h +++ b/chromium_src/components/wallet/core/browser/network/wallet_http_client_impl.h @@ -34,8 +34,10 @@ class WalletHttpClientImpl : public WalletHttpClient { // WalletHttpClient: void UpsertPublicPass(Pass pass, UpsertPublicPassCallback callback) override; - void UpsertPrivatePass(PrivatePass pass, - UpsertPrivatePassCallback callback) override; + void UpsertPrivatePass( + PrivatePass pass, + std::optional session_id, + UpsertPrivatePassCallback callback) override; void GetUnmaskedPass(std::string_view pass_id, GetUnmaskedPassCallback callback) override; }; diff --git a/chromium_src/components/webapps/browser/banners/DEPS b/chromium_src/components/webapps/browser/DEPS similarity index 100% rename from chromium_src/components/webapps/browser/banners/DEPS rename to chromium_src/components/webapps/browser/DEPS diff --git a/chromium_src/components/webapps/browser/banners/app_banner_manager.cc b/chromium_src/components/webapps/browser/banners/app_banner_manager.cc deleted file mode 100644 index 605c46b06a8..00000000000 --- a/chromium_src/components/webapps/browser/banners/app_banner_manager.cc +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2024 The Brave Authors. All rights reserved. -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at https://mozilla.org/MPL/2.0/. - -#include "brave/components/constants/webui_url_constants.h" - -// Include password_manager constants before override so we don't override the -// definition. -#include "components/password_manager/content/common/web_ui_constants.h" - -// Add some extra items to WebUI hosts considered valid for PWAs -#define kChromeUIPasswordManagerHost \ - kChromeUIPasswordManagerHost && \ - !kInstallablePWAWebUIHosts.contains(url.host()) - -#include -#undef kChromeUIPasswordManagerHost diff --git a/chromium_src/components/webapps/browser/web_app_url_config.cc b/chromium_src/components/webapps/browser/web_app_url_config.cc new file mode 100644 index 00000000000..d0e138938e0 --- /dev/null +++ b/chromium_src/components/webapps/browser/web_app_url_config.cc @@ -0,0 +1,27 @@ +// Copyright (c) 2024 The Brave Authors. All rights reserved. +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this file, +// You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "brave/components/constants/webui_url_constants.h" + +// Include password_manager constants before override so we don't override the +// definition. +#include "components/password_manager/content/common/web_ui_constants.h" + +// Make sure IsUrlEligibleForWebApp also checks for allowed Brave WebUI hosts +#define IsUrlEligibleForWebApp IsUrlEligibleForWebApp_ChromiumImpl + +#include + +#undef IsUrlEligibleForWebApp + +namespace webapps { + +bool IsUrlEligibleForWebApp(const GURL& app_url) { + return IsUrlEligibleForWebApp_ChromiumImpl(app_url) || + (app_url.SchemeIs(content::kChromeUIScheme) && + kInstallablePWAWebUIHosts.contains(app_url.host())); +} + +} // namespace webapps diff --git a/chromium_src/chrome/browser/web_applications/web_app_helpers_unittest.cc b/chromium_src/components/webapps/browser/web_app_url_config_unittest.cc similarity index 62% rename from chromium_src/chrome/browser/web_applications/web_app_helpers_unittest.cc rename to chromium_src/components/webapps/browser/web_app_url_config_unittest.cc index 64d7a009537..7b531327159 100644 --- a/chromium_src/chrome/browser/web_applications/web_app_helpers_unittest.cc +++ b/chromium_src/components/webapps/browser/web_app_url_config_unittest.cc @@ -5,14 +5,14 @@ #include "brave/components/constants/webui_url_constants.h" -#include +#include -namespace web_app { +namespace webapps { #if BUILDFLAG(ENABLE_AI_CHAT) -TEST(WebAppHelpers, Brave_IsValidWebAppUrl) { - EXPECT_TRUE(IsValidWebAppUrl(GURL("chrome://leo-ai"))); +TEST(WebAppUrlConfigTest, Brave_IsUrlEligibleForWebApp) { + EXPECT_TRUE(IsUrlEligibleForWebApp(GURL("chrome://leo-ai"))); } #endif // BUILDFLAG(ENABLE_AI_CHAT) -} // namespace web_app +} // namespace webapps diff --git a/chromium_src/content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.cc b/chromium_src/content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.cc deleted file mode 100644 index 301fb726274..00000000000 --- a/chromium_src/content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.cc +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (c) 2024 The Brave Authors. All rights reserved. - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at https://mozilla.org/MPL/2.0/. */ - -#include "content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.h" - -#define RedirectHeuristicTabHelper RedirectHeuristicTabHelper_ChromiumImpl -#include -#undef RedirectHeuristicTabHelper - -WEB_CONTENTS_USER_DATA_KEY_IMPL(RedirectHeuristicTabHelper); - -RedirectHeuristicTabHelper::RedirectHeuristicTabHelper( - content::WebContents* web_contents) - : content::WebContentsUserData(*web_contents) {} diff --git a/chromium_src/content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.h b/chromium_src/content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.h deleted file mode 100644 index 752880b3f01..00000000000 --- a/chromium_src/content/browser/tpcd_heuristics/redirect_heuristic_tab_helper.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (c) 2024 The Brave Authors. All rights reserved. - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at https://mozilla.org/MPL/2.0/. */ - -#ifndef BRAVE_CHROMIUM_SRC_CONTENT_BROWSER_TPCD_HEURISTICS_REDIRECT_HEURISTIC_TAB_HELPER_H_ -#define BRAVE_CHROMIUM_SRC_CONTENT_BROWSER_TPCD_HEURISTICS_REDIRECT_HEURISTIC_TAB_HELPER_H_ - -#define RedirectHeuristicTabHelper RedirectHeuristicTabHelper_ChromiumImpl -#define MaybeRecordRedirectHeuristic virtual MaybeRecordRedirectHeuristic - -#include // IWYU pragma: export -#undef MaybeRecordRedirectHeuristic -#undef RedirectHeuristicTabHelper - -// Disable RedirectHeuristicTabHelper functionality since we disable kBtm, so -// the upstream code would not work (and crash because it doesn't check that -// dips_service_ can be a null). -class RedirectHeuristicTabHelper - : public content::WebContentsUserData { - public: - CONTENT_EXPORT static std::set AllSitesFollowingFirstParty( - content::WebContents* web_contents, - const GURL& first_party_url) { - return {}; - } - - private: - explicit RedirectHeuristicTabHelper(content::WebContents* web_contents); - // So WebContentsUserData::CreateForWebContents() can call the constructor. - friend class content::WebContentsUserData; - WEB_CONTENTS_USER_DATA_KEY_DECL(); -}; - -#endif // BRAVE_CHROMIUM_SRC_CONTENT_BROWSER_TPCD_HEURISTICS_REDIRECT_HEURISTIC_TAB_HELPER_H_ diff --git a/chromium_src/content/public/common/content_features.cc b/chromium_src/content/public/common/content_features.cc index 4cf057480cb..3a542643a9b 100644 --- a/chromium_src/content/public/common/content_features.cc +++ b/chromium_src/content/public/common/content_features.cc @@ -16,7 +16,6 @@ namespace features { BASE_FEATURE(kIdleDetection, base::FEATURE_DISABLED_BY_DEFAULT); OVERRIDE_FEATURE_DEFAULT_STATES({{ - {kDevToolsPrivacyUI, base::FEATURE_DISABLED_BY_DEFAULT}, {kDigitalGoodsApi, base::FEATURE_DISABLED_BY_DEFAULT}, {kFedCm, base::FEATURE_DISABLED_BY_DEFAULT}, {kPrefetchProxy, base::FEATURE_DISABLED_BY_DEFAULT}, diff --git a/chromium_src/crypto/kdf_unittest.cc b/chromium_src/crypto/kdf_unittest.cc index 1c2d8537bf7..ed2a90edcca 100644 --- a/chromium_src/crypto/kdf_unittest.cc +++ b/chromium_src/crypto/kdf_unittest.cc @@ -122,9 +122,9 @@ TEST(KDFTest, ScryptNoCheckKnownAnswers) { key)); std::vector key_with_check(c.len); - crypto::kdf::DeriveKeyScrypt(c.params, base::as_byte_span(c.password), - base::as_byte_span(c.salt), key_with_check, - crypto::SubtlePassKey::ForTesting()); + crypto::kdf::Scrypt(c.params, base::as_byte_span(c.password), + base::as_byte_span(c.salt), key_with_check, + crypto::SubtlePassKey::ForTesting()); EXPECT_EQ(key, key_with_check); std::vector result_bytes(c.len); diff --git a/chromium_src/ios/chrome/browser/profile/model/keyed_service_factories.mm b/chromium_src/ios/chrome/browser/profile/model/keyed_service_factories.mm index 625e8c7a1ac..8c47d733dbf 100644 --- a/chromium_src/ios/chrome/browser/profile/model/keyed_service_factories.mm +++ b/chromium_src/ios/chrome/browser/profile/model/keyed_service_factories.mm @@ -6,6 +6,7 @@ #include "ios/chrome/browser/profile/model/keyed_service_factories.h" #include "brave/ios/browser/profile/model/brave_keyed_service_factories.h" +#include "ios/chrome/browser/account_settings/model/ios_account_setting_service_factory.h" #include "ios/chrome/browser/affiliations/model/ios_chrome_affiliation_service_factory.h" #include "ios/chrome/browser/aim/model/ios_chrome_aim_eligibility_service_factory.h" #include "ios/chrome/browser/autocomplete/model/autocomplete_classifier_factory.h" @@ -129,6 +130,7 @@ void EnsureProfileKeyedServiceFactoriesBuilt() { GoogleGroupsManagerFactory::GetInstance(); HttpsUpgradeServiceFactory::GetInstance(); IdentityManagerFactory::GetInstance(); + IOSAccountSettingServiceFactory::GetInstance(); IOSChromeAccountPasswordStoreFactory::GetInstance(); IOSChromeAimEligibilityServiceFactory::GetInstance(); IOSChromeAffiliationServiceFactory::GetInstance(); diff --git a/chromium_src/net/cookies/brave_canonical_cookie_unittest.cc b/chromium_src/net/cookies/brave_canonical_cookie_unittest.cc index 0d60dfe05e9..2d2f5fe457d 100644 --- a/chromium_src/net/cookies/brave_canonical_cookie_unittest.cc +++ b/chromium_src/net/cookies/brave_canonical_cookie_unittest.cc @@ -35,17 +35,23 @@ TEST(BraveCanonicalCookieTest, SetMaxExpiration) { GURL url("https://www.example.com/test"); std::unique_ptr cookie(CanonicalCookie::CreateForTesting( - url, max_expires_date_cookie, creation_time)); - EXPECT_TRUE(cookie.get()); - EXPECT_EQ(cookie->ExpiryDate(), creation_time + kMaxCookieExpiration); - - cookie = - CanonicalCookie::CreateForTesting(url, max_age_cookie, creation_time); + url, max_expires_date_cookie, creation_time, CookieSourceType::kOther, + /*server_time=*/std::nullopt, /*cookie_partition_key=*/std::nullopt, + /*status=*/nullptr)); EXPECT_TRUE(cookie.get()); EXPECT_EQ(cookie->ExpiryDate(), creation_time + kMaxCookieExpiration); cookie = CanonicalCookie::CreateForTesting( - url, max_expires_and_max_age_cookie, creation_time); + url, max_age_cookie, creation_time, CookieSourceType::kOther, + /*server_time=*/std::nullopt, /*cookie_partition_key=*/std::nullopt, + /*status=*/nullptr); + EXPECT_TRUE(cookie.get()); + EXPECT_EQ(cookie->ExpiryDate(), creation_time + kMaxCookieExpiration); + + cookie = CanonicalCookie::CreateForTesting( + url, max_expires_and_max_age_cookie, creation_time, + CookieSourceType::kOther, /*server_time=*/std::nullopt, + /*cookie_partition_key=*/std::nullopt, /*status=*/nullptr); EXPECT_TRUE(cookie.get()); EXPECT_EQ(cookie->ExpiryDate(), creation_time + kMaxCookieExpiration); } @@ -54,7 +60,9 @@ TEST(BraveCanonicalCookieTest, AllowShorterThanMaxExpiration) { GURL url("https://www.example.com/test"); // Short-lived cookies get to keep their shorter expiration. std::unique_ptr cookie = CanonicalCookie::CreateForTesting( - url, short_expiration_cookie, creation_time); + url, short_expiration_cookie, creation_time, CookieSourceType::kOther, + /*server_time=*/std::nullopt, /*cookie_partition_key=*/std::nullopt, + /*status=*/nullptr); EXPECT_TRUE(cookie.get()); EXPECT_EQ(cookie->ExpiryDate(), creation_time + base::Days(2)); } @@ -63,8 +71,10 @@ TEST(BraveCanonicalCookieTest, SetHTTPOnlyMaxExpiration) { GURL url("https://www.example.com/test"); // HTTP cookies with 'httponly' work as expected. - std::unique_ptr cookie = - CanonicalCookie::CreateForTesting(url, cookie_line5, creation_time); + std::unique_ptr cookie = CanonicalCookie::CreateForTesting( + url, cookie_line5, creation_time, CookieSourceType::kOther, + /*server_time=*/std::nullopt, /*cookie_partition_key=*/std::nullopt, + /*status=*/nullptr); EXPECT_TRUE(cookie.get()); EXPECT_EQ(cookie->ExpiryDate(), creation_time + kMaxCookieExpiration); } @@ -73,7 +83,9 @@ TEST(BraveCanonicalCookieTest, NoExpirationCookie) { GURL url("https://www.example.com/test"); std::unique_ptr cookie(CanonicalCookie::CreateForTesting( - url, no_expiration_cookie, creation_time)); + url, no_expiration_cookie, creation_time, CookieSourceType::kOther, + /*server_time=*/std::nullopt, /*cookie_partition_key=*/std::nullopt, + /*status=*/nullptr)); EXPECT_TRUE(cookie.get()); EXPECT_EQ(cookie->IsPersistent(), false); } diff --git a/chromium_src/net/tools/transport_security_state_generator/input_file_parsers.cc b/chromium_src/net/tools/transport_security_state_generator/input_file_parsers.cc index 26e564c702b..deac56b3cbc 100644 --- a/chromium_src/net/tools/transport_security_state_generator/input_file_parsers.cc +++ b/chromium_src/net/tools/transport_security_state_generator/input_file_parsers.cc @@ -550,9 +550,9 @@ bool ParseCertificatesFile(std::string_view certs_input, Pinsets* pinsets, base::Time* timestamp) { constexpr std::string_view brave_certs = R"brave_certs( -# Last updated: Wed Apr 22 15:12:53 2026 +# Last updated: Thu Apr 23 22:59:39 2026 PinsListTimestamp -1776885173 +1776981579 # =====BEGIN BRAVE ROOTS ASC===== #From https://www.amazontrust.com/repository/ @@ -1267,18 +1267,19 @@ csOPNIXeJm1YsnJyxUGvKRWjOn+vC9k1SXilnnwhcIs9Pp9e5bckYAnB79VJXN/L bool ParseJSON(std::string_view hsts_json, std::string_view pins_json, TransportSecurityStateEntries* entries, + PinEntries* pin_entries, Pinsets* pinsets) { Pinsets chromium_pinsets; + PinEntries chromium_pin_entries; TransportSecurityStateEntries chromium_entries; if (!ParseJSON_ChromiumImpl(hsts_json, pins_json, &chromium_entries, - &chromium_pinsets)) { + &chromium_pin_entries, &chromium_pinsets)) { return false; } for (auto& entry : chromium_entries) { // Google has asked us not to include the pins that ship with Chrome, // but we do want the preloaded HSTS entries. - entry->pinset = ""; if (!entry->force_https) { continue; } @@ -1287,7 +1288,7 @@ bool ParseJSON(std::string_view hsts_json, } return ParseJSON_ChromiumImpl(kBraveHstsJson, kBravePinsJson, entries, - pinsets); + pin_entries, pinsets); } } // namespace net::transport_security_state diff --git a/chromium_src/third_party/blink/renderer/core/frame/location.cc b/chromium_src/third_party/blink/renderer/core/frame/location.cc index fea9d83268b..999390e00e7 100644 --- a/chromium_src/third_party/blink/renderer/core/frame/location.cc +++ b/chromium_src/third_party/blink/renderer/core/frame/location.cc @@ -11,7 +11,7 @@ namespace blink { -DOMStringList* Location::ancestorOrigins() const { +DOMStringList* Location::ancestorOrigins() { auto* raw_origins = ancestorOrigins_ChromiumImpl(); if (!IsAttached() || !raw_origins || raw_origins->IsEmpty()) { return raw_origins; diff --git a/chromium_src/third_party/blink/renderer/core/frame/location.h b/chromium_src/third_party/blink/renderer/core/frame/location.h index 4daee0da70f..e50653de3cf 100644 --- a/chromium_src/third_party/blink/renderer/core/frame/location.h +++ b/chromium_src/third_party/blink/renderer/core/frame/location.h @@ -6,8 +6,8 @@ #ifndef BRAVE_CHROMIUM_SRC_THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_LOCATION_H_ #define BRAVE_CHROMIUM_SRC_THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_LOCATION_H_ -#define ancestorOrigins() \ - ancestorOrigins_ChromiumImpl() const; \ +#define ancestorOrigins() \ + ancestorOrigins_ChromiumImpl(); \ DOMStringList* ancestorOrigins() #include // IWYU pragma: export diff --git a/chromium_src/third_party/blink/renderer/core/loader/image_loader.cc b/chromium_src/third_party/blink/renderer/core/loader/image_loader.cc index c1092931780..208bc48a144 100644 --- a/chromium_src/third_party/blink/renderer/core/loader/image_loader.cc +++ b/chromium_src/third_party/blink/renderer/core/loader/image_loader.cc @@ -6,8 +6,8 @@ #include "third_party/blink/renderer/core/loader/image_loader.h" #include "brave/components/brave_page_graph/common/buildflags.h" +#include "third_party/blink/renderer/core/ad_tracker/ad_tracker.h" #include "third_party/blink/renderer/core/dom/dom_node_ids.h" -#include "third_party/blink/renderer/core/frame/ad_tracker.h" #include "third_party/blink/renderer/core/probe/core_probes.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h" diff --git a/chromium_src/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc b/chromium_src/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc index bb9f1f17619..19863c27845 100644 --- a/chromium_src/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc +++ b/chromium_src/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc @@ -17,7 +17,7 @@ String GetEphemeralBroadcastChannelName(LocalDOMWindow* window, String name) { } const auto& nonce = SecurityOrigin::GetNonceForEphemeralStorageKeying( ephemeral_storage_origin); - return name + String::FromUTF8(nonce.ToString()); + return name + String::FromUtf8(nonce.ToString()); } } // namespace diff --git a/chromium_src/ui/webui/resources/cr_elements/cr_button/cr_button.ts b/chromium_src/ui/webui/resources/cr_elements/cr_button/cr_button.ts index 562360335c9..52ebcc02997 100644 --- a/chromium_src/ui/webui/resources/cr_elements/cr_button/cr_button.ts +++ b/chromium_src/ui/webui/resources/cr_elements/cr_button/cr_button.ts @@ -5,7 +5,11 @@ import '//resources/brave/leo.bundle.js'; -import {CrLitElement, css, type CSSResultGroup, type PropertyValues} from '//resources/lit/v3_0/lit.rollup.js'; +import {CrLitElement, css} from '//resources/lit/v3_0/lit.rollup.js'; +import type { + CSSResultGroup, + PropertyValues} +from '//resources/lit/v3_0/lit.rollup.js'; import {getHtml} from './cr_button.html.js'; diff --git a/chromium_src/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.ts b/chromium_src/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.ts index c82ec7227c9..2a5980ac700 100644 --- a/chromium_src/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.ts +++ b/chromium_src/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.ts @@ -5,7 +5,8 @@ import '//resources/brave/leo.bundle.js' -import {CrLitElement, css, type CSSResultGroup} from '//resources/lit/v3_0/lit.rollup.js'; +import {CrLitElement, css} from '//resources/lit/v3_0/lit.rollup.js'; +import type {CSSResultGroup} from '//resources/lit/v3_0/lit.rollup.js'; import {getHtml} from './cr_toggle.html.js'; diff --git a/components/ai_chat/renderer/page_content_extractor.cc b/components/ai_chat/renderer/page_content_extractor.cc index 42f34441dc2..aeab1825426 100644 --- a/components/ai_chat/renderer/page_content_extractor.cc +++ b/components/ai_chat/renderer/page_content_extractor.cc @@ -149,7 +149,7 @@ void PageContentExtractor::ExtractPageContent( // Do Youtube extraction v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); blink::WebScriptSource source = blink::WebScriptSource( - blink::WebString::FromUTF16(kYoutubeInnerTubeConfigExtractionScript)); + blink::WebString::FromUtf16(kYoutubeInnerTubeConfigExtractionScript)); auto script_callback = base::BindOnce( &PageContentExtractor::OnJSYoutubeInnerTubeConfigResult, weak_ptr_factory_.GetWeakPtr(), std::move(callback), @@ -171,7 +171,7 @@ void PageContentExtractor::ExtractPageContent( // a video, and not a hard-coded list of Url hosts. v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); blink::WebScriptSource source = - blink::WebScriptSource(blink::WebString::FromUTF16( + blink::WebScriptSource(blink::WebString::FromUtf16( kVideoTrackTranscriptUrlExtractionScript)); auto script_callback = base::BindOnce( &PageContentExtractor::OnJSTranscriptUrlResult, @@ -326,7 +326,7 @@ void PageContentExtractor::OnJSTranscriptUrlResult( // Handle invalid url GURL transcript_url = render_frame()->GetWebFrame()->GetDocument().CompleteURL( - blink::WebString::FromASCII(url)); + blink::WebString::FromAscii(url)); if (!transcript_url.is_valid() || !transcript_url.SchemeIs(url::kHttpsScheme)) { DVLOG(1) << "Invalid Url for transcript: " << transcript_url.spec(); diff --git a/components/ai_chat/renderer/page_text_distilling.cc b/components/ai_chat/renderer/page_text_distilling.cc index 07ed6949e11..bad9d3f5caa 100644 --- a/components/ai_chat/renderer/page_text_distilling.cc +++ b/components/ai_chat/renderer/page_text_distilling.cc @@ -196,7 +196,7 @@ void DistillPageText( if (contents_text.empty()) { blink::WebScriptSource source = blink::WebScriptSource( - blink::WebString::FromASCII("document.body.innerText")); + blink::WebString::FromAscii("document.body.innerText")); auto on_script_executed = [](base::OnceCallback&)> callback, diff --git a/components/autofill_payments_strings.grdp b/components/autofill_payments_strings.grdp index d163865260a..dfe0d2d4df9 100644 --- a/components/autofill_payments_strings.grdp +++ b/components/autofill_payments_strings.grdp @@ -160,9 +160,12 @@ Save card to Brave sync chain? - - Save card securely? - + + Save card securely? + + + Save card in Brave Wallet + Save security code? @@ -215,6 +218,9 @@ Pay faster when your card is saved. Card details are encrypted in Brave Wallet. + + Pay faster with Google Pay when your card is saved. Card details are encrypted in Brave Wallet. + Save @@ -744,6 +750,9 @@ Save IBAN? + + Save IBAN in Brave Wallet + To autofill this IBAN next time, save it in your Brave sync chain @@ -881,9 +890,15 @@ Make it more secure with a virtual card next time? + + Turn on a virtual card for autofill + A virtual card hides your actual card to help protect you from potential fraud. $1Learn about virtual cards + + A virtual card number will be filled when you check out with this card to protect your actual details. Manage in Brave Wallet. $1Learn about virtual cards + Skip @@ -1013,8 +1028,17 @@ Pay in 4 or monthly - - Clear form to use pay later option + + Clear form to use pay later + + + Not available right now + + + Currency not supported + + + Not available for this merchant Not supported by merchant @@ -1022,12 +1046,21 @@ Purchase must be over $1$50.00 - + Purchase must be under $1$10,000.00 + + Minimum purchase $1$50.00 + + + Maximum purchase $1$10,000.00 + Content from the checkout page is shared with Brave to offer these options. To hide pay later options in autofill, go to $1payment settings. + + Content from the checkout page is shared with Brave to offer these options. Payment plans are subject to eligibility. To hide pay later options in autofill, go to $1payment settings. + Content from the checkout page is shared with Brave to offer these options. @@ -1046,6 +1079,18 @@ Linked + + Pay now + + + Pay later + + + $1Pay now, selected tab, $21 of $32, use left or right arrow to switch between tabs + + + $1Tab announcement, $2Footnote announcement + You can autofill this card because your account is linked to Google Pay @@ -1563,7 +1608,7 @@ To hide pay later options, go to <link>payment settings</link> - Payment plans are subject to eligibility. <bold>Content from the checkout page is shared with Brave to offer these options.</bold> To hide pay later options, go to <link>payment settings</link> + <bold>Content from the checkout page is shared with Brave to offer these options.</bold> Payment plans are subject to eligibility. To hide pay later options, go to <link>payment settings</link> @@ -1682,6 +1727,9 @@ To hide pay later options, go to <link>payment Your card is saved in Brave Wallet so you can autofill it for future purchases + + This card is saved in Brave Wallet so you can use it across Brave services + This card couldn't be saved in your Brave sync chain. It's saved to Brave on this device instead. diff --git a/components/autofill_strings.grdp b/components/autofill_strings.grdp index e52e1ee5452..7aeb451f3cb 100644 --- a/components/autofill_strings.grdp +++ b/components/autofill_strings.grdp @@ -477,6 +477,9 @@ Payment methods + + Credit,Card,Debit + Saved payment methods table @@ -484,11 +487,14 @@ Save and fill addresses - Brave isn’t your autofill provider + Brave isn’t your autofill provider To enable these settings and use payment info from your Brave sync chain, visit autofill services settings. + + To enable these settings and use info from your Brave sync chain, visit autofill services settings + Autofill services settings @@ -520,6 +526,9 @@ To use another autofill service in Brave, choose your autofill provider in Android settings + + To use another autofill service in Brave, turn it on in Android settings and here + Loyalty cards @@ -700,6 +709,34 @@ Payments + + Identity docs + + + Travel + + + + + + Passwords and passkeys + + + Credit & debit cards · IBANs · Loyalty cards + + + Addresses + + + Driver’s licenses · Identity cards · Passports + + + Travel info · Vehicles + + + Change autofill provider and other settings + + @@ -787,6 +824,9 @@ Search and fill from anywhere... + + No results found + No passwords found @@ -808,18 +848,12 @@ Recovery password shown - - Identity docs - Save and fill identity docs Includes information such as passports and driver's licenses - - Travel - Save and fill travel info @@ -845,8 +879,15 @@ %1$sCity, required + + Addresses + + + Your content will not be used to improve AI. Your organization may change these settings at any time. + + Driver's license @@ -876,6 +917,10 @@ Order + + + Shipment + @@ -899,6 +944,9 @@ Orders + + Shipments + @@ -1063,29 +1111,6 @@ VIN (Vehicle Identification Number) - - - Id - - - Account - - - Date - - - Merchant name - - - Merchant domain - - - Product names - - - Grand total - - Manage information @@ -1135,9 +1160,15 @@ - + Brave Wallet + + Your info is saved in $1Brave Wallet for $2alexpark@gmail.com + + + Save your info in $1Brave Wallet and get things done faster, like filling forms across Brave products. You can $2manage your info in $3Brave Wallet for $4alexpark@gmail.com. + @@ -1187,9 +1218,6 @@ Saves to your device - - Your info is saved to $1Brave Wallet for $2alexpark@gmail.com - Save your information and fill out forms more quickly. Saves to your device. @@ -1199,9 +1227,6 @@ manage your info - - Save your info and get things done faster, like filling forms across Brave products. You can $1manage your info in $2Brave Wallet for $3alexpark@gmail.com. - Your info is saved to $1Brave Wallet for $2alexpark@gmail.com. You can use it across Brave products to fill forms faster. @@ -1288,11 +1313,11 @@ In $1Brave Wallet for $2alexpark@gmail.com - + Your info is saved to your device - - Save your info and get things done faster, like filling forms across Brave products. You can <link>manage your info</link> in $1Brave Wallet for $2alexpark@gmail.com + + Save your info in $1Brave Wallet and get things done faster, like filling forms across Brave products. You can <link>manage your info</link> in $2Brave Wallet for $3alexpark@gmail.com $1Passport number, new @@ -1303,6 +1328,15 @@ $1John Doe <new>New</new> + + Info saved to device only + + + Brave will offer to save it to $1Brave Wallet next time you use it + + + Got it + @@ -1310,12 +1344,6 @@ Autofill won't have this info on this device to help fill out forms - - Your info is saved only to your device. You'll have the chance to save it to Wallet the next time you fill a relevant form. - - - Your info gets saved to Brave Wallet for $1elisa.beckett@gmail.com. You can use it across Brave services to fill forms faster. - Month @@ -1391,4 +1419,18 @@ Brave can autofill difficult fields that standard autofill might miss + + + Your Brave Wallet passes + + + + Allow Wallet to share data + + + To autofill your info, turn on "Use passes across Brave" in Wallet settings + + + Open Brave Wallet + diff --git a/components/brave_account/resources/brave_account_dialogs.ts b/components/brave_account/resources/brave_account_dialogs.ts index 97a5dc218f5..e55848d4466 100644 --- a/components/brave_account/resources/brave_account_dialogs.ts +++ b/components/brave_account/resources/brave_account_dialogs.ts @@ -34,7 +34,7 @@ export class BraveAccountDialogsElement extends CrLitElement { static override get properties() { return { - dialog: { type: Object }, + dialog: { type: String }, isCapsLockOn: { type: Boolean, state: true }, } } diff --git a/components/brave_ads/core/internal/user_attention/user_activity/user_activity_event_types.h b/components/brave_ads/core/internal/user_attention/user_activity/user_activity_event_types.h index 9f6344d2037..046d9b0c1b5 100644 --- a/components/brave_ads/core/internal/user_attention/user_activity/user_activity_event_types.h +++ b/components/brave_ads/core/internal/user_attention/user_activity/user_activity_event_types.h @@ -13,7 +13,7 @@ namespace brave_ads { // WARNING: don't change these numbers. They are provided by the variations // service, so will need the same values to match the enums -enum class UserActivityEventType : int8_t { +enum class UserActivityEventType : uint8_t { /*00*/ kInitializedAds = 0, /*01*/ kBrowserDidEnterForeground, /*02*/ kBrowserDidEnterBackground, diff --git a/components/brave_ads/core/internal/user_attention/user_activity/user_activity_manager.cc b/components/brave_ads/core/internal/user_attention/user_activity/user_activity_manager.cc index 076691d9b5d..d53ed3d686a 100644 --- a/components/brave_ads/core/internal/user_attention/user_activity/user_activity_manager.cc +++ b/components/brave_ads/core/internal/user_attention/user_activity/user_activity_manager.cc @@ -38,10 +38,11 @@ void LogEvent(UserActivityEventType event_type) { UserActivityManager::GetInstance().GetHistoryForTimeWindow( kUserActivityTimeWindow.Get()); - BLOG(6, "Triggered event: " << base::HexEncode(&event_type, sizeof(int8_t)) - << " (" << GetUserActivityScore(triggers, events) - << ":" << kUserActivityThreshold.Get() << ":" - << kUserActivityTimeWindow.Get() << ")"); + BLOG(6, "Triggered event: " + << base::HexEncode(base::byte_span_from_ref(event_type)) << " (" + << GetUserActivityScore(triggers, events) << ":" + << kUserActivityThreshold.Get() << ":" + << kUserActivityTimeWindow.Get() << ")"); } } // namespace diff --git a/components/brave_ads/core/internal/user_attention/user_activity/user_activity_scoring.cc b/components/brave_ads/core/internal/user_attention/user_activity/user_activity_scoring.cc index 8df8afd70db..804bb89b86f 100644 --- a/components/brave_ads/core/internal/user_attention/user_activity/user_activity_scoring.cc +++ b/components/brave_ads/core/internal/user_attention/user_activity/user_activity_scoring.cc @@ -40,7 +40,7 @@ std::string EncodeEvents(const UserActivityEventList& events) { [](const auto& event) { return event.type; }); const std::string encoded_eligible_events = - base::HexEncode(eligible_events.data(), eligible_events.size()); + base::HexEncode(base::as_byte_span(eligible_events)); return base::ToUpperASCII(encoded_eligible_events); } diff --git a/components/brave_new_tab_ui/components/search/SearchContext.tsx b/components/brave_new_tab_ui/components/search/SearchContext.tsx index 089819f9718..1767273fa40 100644 --- a/components/brave_new_tab_ui/components/search/SearchContext.tsx +++ b/components/brave_new_tab_ui/components/search/SearchContext.tsx @@ -4,7 +4,7 @@ // You can obtain one at https://mozilla.org/MPL/2.0/. import usePromise from '$web-common/usePromise'; -import { AutocompleteResult, OmniboxPopupSelection, PageHandler, PageHandlerRemote, PageInterface, PageReceiver, SelectedFileInfo, SelectionDirection, SelectionStep, TabInfo } from 'chrome://resources/mojo/components/omnibox/browser/searchbox.mojom-webui.js'; +import { AutocompleteResult, OmniboxPopupSelection, PageHandlerFactory, PageHandlerRemote, PageInterface, PageReceiver, SelectedFileInfo, SelectionDirection, SelectionStep, TabInfo } from 'chrome://resources/mojo/components/omnibox/browser/searchbox.mojom-webui.js'; import * as React from 'react'; import getNTPBrowserAPI, { SearchEngineInfo } from '../../api/background'; import { useEngineContext } from './EngineContext'; @@ -36,7 +36,7 @@ const Context = React.createContext({ export const searchEnginesPromise = getNTPBrowserAPI().pageHandler.getSearchEngines().then(r => r.searchEngines) -export const omniboxController: PageHandlerRemote = PageHandler.getRemote(); +export const omniboxController: PageHandlerRemote = new PageHandlerRemote(); (window as any).omnibox = omniboxController; class SearchPage implements PageInterface { @@ -46,7 +46,10 @@ class SearchPage implements PageInterface { private selectionListeners: Array<(selection: OmniboxPopupSelection) => void> = [] constructor() { - omniboxController.setPage(this.receiver.$.bindNewPipeAndPassRemote()) + PageHandlerFactory.getRemote().createPageHandler( + this.receiver.$.bindNewPipeAndPassRemote(), + omniboxController.$.bindNewPipeAndPassReceiver(), + ) } addResultListener(listener: (result?: AutocompleteResult) => void) { diff --git a/components/brave_news/browser/feed_fetcher.cc b/components/brave_news/browser/feed_fetcher.cc index 9dfb1eeeaf2..cdf73a0633f 100644 --- a/components/brave_news/browser/feed_fetcher.cc +++ b/components/brave_news/browser/feed_fetcher.cc @@ -225,16 +225,16 @@ void FeedFetcher::OnFetchFeedFetchedFeed( void FeedFetcher::OnFetchFeedFetchedAll(FetchFeedCallback callback, std::vector results) { base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, base::BindOnce(&CombineFeedSourceResults, std::move(results)), + FROM_HERE, {}, + base::BindOnce(&CombineFeedSourceResults, std::move(results)), base::BindOnce( [](base::WeakPtr fetcher, FetchFeedCallback callback, - std::tuple result) { + FeedItems items, ETags tags) { // If we've been destroyed, don't run the callback. if (!fetcher) { return; } - std::move(callback).Run(std::move(std::get<0>(result)), - std::move(std::get<1>(result))); + std::move(callback).Run(std::move(items), std::move(tags)); }, weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } diff --git a/components/brave_rewards/content/diagnostic_log.cc b/components/brave_rewards/content/diagnostic_log.cc index fdf767c565a..2fd5417f0db 100644 --- a/components/brave_rewards/content/diagnostic_log.cc +++ b/components/brave_rewards/content/diagnostic_log.cc @@ -179,14 +179,12 @@ bool TrimBeginningOfFile(base::File* file, int keep_num_lines) { return false; } - const std::string data(buffer.data(), *n); - const int64_t new_size = data.size(); - - if (UNSAFE_TODO(file->WriteAtCurrentPos(data.c_str(), new_size)) == -1) { + const std::string_view data(buffer.data(), *n); + if (file->WriteAtCurrentPos(base::as_byte_span(data)) == -1) { return false; } - if (!file->SetLength(new_size)) { + if (!file->SetLength(data.size())) { return false; } @@ -271,11 +269,10 @@ bool WriteOnFileTaskRunner(const base::FilePath& file_path, if (first_write) { const std::string divider = std::string(kDividerLength, '-') + "\n"; - UNSAFE_TODO(file.WriteAtCurrentPos(divider.c_str(), divider.length())); + file.WriteAtCurrentPos(base::as_byte_span(divider)); } - if (UNSAFE_TODO(file.WriteAtCurrentPos(log_entry.c_str(), - log_entry.length())) == -1) { + if (file.WriteAtCurrentPos(base::as_byte_span(log_entry)) == -1) { return false; } diff --git a/components/brave_rewards/core/engine/publisher/prefix_util.cc b/components/brave_rewards/core/engine/publisher/prefix_util.cc index 8d96225226d..9ffb85398d5 100644 --- a/components/brave_rewards/core/engine/publisher/prefix_util.cc +++ b/components/brave_rewards/core/engine/publisher/prefix_util.cc @@ -23,7 +23,7 @@ std::string GetHashPrefixRaw(const std::string& publisher_key, std::string GetHashPrefixInHex(const std::string& publisher_key, size_t prefix_size) { const std::string raw = GetHashPrefixRaw(publisher_key, prefix_size); - return base::HexEncode(raw.data(), raw.size()); + return base::HexEncode(raw); } } // namespace brave_rewards::internal::publisher diff --git a/components/brave_rewards/core/engine/util/random_util.cc b/components/brave_rewards/core/engine/util/random_util.cc index b6722a2cd4f..2c3c4ae3e3f 100644 --- a/components/brave_rewards/core/engine/util/random_util.cc +++ b/components/brave_rewards/core/engine/util/random_util.cc @@ -34,7 +34,7 @@ namespace brave_rewards::internal::util { std::string GenerateRandomHexString() { uint8_t bytes[kLengthHexString]; crypto::RandBytes(bytes); - return base::HexEncode(bytes, sizeof(bytes)); + return base::HexEncode(base::as_byte_span(bytes)); } std::string GeneratePKCECodeVerifier() { diff --git a/components/brave_rewards/core/engine/wallet_provider/bitflyer/connect_bitflyer_wallet.cc b/components/brave_rewards/core/engine/wallet_provider/bitflyer/connect_bitflyer_wallet.cc index 92461ab2832..dcf675f44bf 100644 --- a/components/brave_rewards/core/engine/wallet_provider/bitflyer/connect_bitflyer_wallet.cc +++ b/components/brave_rewards/core/engine/wallet_provider/bitflyer/connect_bitflyer_wallet.cc @@ -67,8 +67,7 @@ void ConnectBitFlyerWallet::Authorize(ConnectExternalWalletCallback callback) { const std::string hashed_payment_id = crypto::SHA256HashString(rewards_wallet->payment_id); - const std::string external_account_id = - base::HexEncode(hashed_payment_id.data(), hashed_payment_id.size()); + const std::string external_account_id = base::HexEncode(hashed_payment_id); bitflyer_server_.post_oauth().Request( external_account_id, oauth_info_.code, oauth_info_.code_verifier, diff --git a/components/brave_sync/crypto/crypto_unittest.cc b/components/brave_sync/crypto/crypto_unittest.cc index 533c9b51800..a03a9a96672 100644 --- a/components/brave_sync/crypto/crypto_unittest.cc +++ b/components/brave_sync/crypto/crypto_unittest.cc @@ -9,7 +9,6 @@ #include #include "base/strings/string_number_conversions.h" -#include "base/strings/string_util.h" #include "crypto/random.h" #include "testing/gtest/include/gtest/gtest.h" @@ -136,13 +135,11 @@ TEST(CryptoTest, Ed25519KeyDerivation) { std::vector info = {0}; DeriveSigningKeysFromSeed(seed, &HKDF_SALT, &info, &public_key, &private_key); EXPECT_EQ("f58ca446f0c33ee7e8e9874466da442b2e764afd77ad46034bdff9e01f9b87d4", - base::ToLowerASCII( - base::HexEncode(public_key.data(), public_key.size()))); + base::HexEncodeLower(public_key)); EXPECT_EQ( "b5abda6940984c5153a2ba3653f047f98dfb19e39c3e02f07c8bbb0bd8e8872ef58ca446" "f0c33ee7e8e9874466da442b2e764afd77ad46034bdff9e01f9b87d4", - base::ToLowerASCII( - base::HexEncode(private_key.data(), private_key.size()))); + base::HexEncodeLower(private_key)); std::vector message(128); ::crypto::RandBytes(message); @@ -212,8 +209,7 @@ TEST(CryptoTest, EncryptAndDecrypt) { ::crypto::RandBytes(message); EXPECT_TRUE(Encrypt(message, nonce, key, &ciphertext)); EXPECT_TRUE(Decrypt(ciphertext, nonce, key, &out_message)); - EXPECT_EQ(base::HexEncode(message.data(), message.size()), - base::HexEncode(out_message.data(), out_message.size())); + EXPECT_EQ(base::HexEncode(message), base::HexEncode(out_message)); } TEST(CryptoTest, Passphrase) { @@ -224,8 +220,7 @@ TEST(CryptoTest, Passphrase) { EXPECT_TRUE(!passphrase.empty()); std::vector to_bytes; EXPECT_TRUE(PassphraseToBytes32(passphrase, &to_bytes)); - EXPECT_EQ(base::HexEncode(bytes.data(), bytes.size()), - base::HexEncode(to_bytes.data(), to_bytes.size())); + EXPECT_EQ(base::HexEncode(bytes), base::HexEncode(to_bytes)); // original passphrase can be recovered std::vector bip_bytes; diff --git a/components/brave_wallet/browser/wallet_data_files_installer.cc b/components/brave_wallet/browser/wallet_data_files_installer.cc index 951d86d0544..e95dae0691d 100644 --- a/components/brave_wallet/browser/wallet_data_files_installer.cc +++ b/components/brave_wallet/browser/wallet_data_files_installer.cc @@ -238,7 +238,7 @@ void WalletDataFilesInstaller::OnEvent( } } -void WalletDataFilesInstaller::ResetForTesting() { +void WalletDataFilesInstaller::Reset() { component_updater_observation_.Reset(); delegate_.reset(); registered_ = false; diff --git a/components/brave_wallet/browser/wallet_data_files_installer.h b/components/brave_wallet/browser/wallet_data_files_installer.h index c35f685036f..fb35d5fa982 100644 --- a/components/brave_wallet/browser/wallet_data_files_installer.h +++ b/components/brave_wallet/browser/wallet_data_files_installer.h @@ -54,7 +54,7 @@ class WalletDataFilesInstaller // component_updater::ComponentUpdateService::Observer: void OnEvent(const update_client::CrxUpdateItem& item) override; - void ResetForTesting(); + void Reset(); private: friend base::NoDestructor; diff --git a/components/brave_wallet/browser/wallet_data_files_installer_unittest.cc b/components/brave_wallet/browser/wallet_data_files_installer_unittest.cc index 586c4c4cf3f..fbb502d955b 100644 --- a/components/brave_wallet/browser/wallet_data_files_installer_unittest.cc +++ b/components/brave_wallet/browser/wallet_data_files_installer_unittest.cc @@ -117,7 +117,7 @@ class WalletDataFilesInstallerUnitTest : public testing::Test { } void TearDown() override { - installer().ResetForTesting(); + installer().Reset(); registry()->ResetForTesting(); } diff --git a/components/brave_wallet/common/zcash_utils.cc b/components/brave_wallet/common/zcash_utils.cc index e3b65a6eed9..b540fbbfbe3 100644 --- a/components/brave_wallet/common/zcash_utils.cc +++ b/components/brave_wallet/common/zcash_utils.cc @@ -261,7 +261,7 @@ DecodedZCashTransparentAddress& DecodedZCashTransparentAddress::operator=( base::DictValue OrchardOutput::ToValue() const { base::DictValue dict; - dict.Set("address", base::HexEncode(addr.data(), addr.size())); + dict.Set("address", base::HexEncode(addr)); dict.Set("amount", base::NumberToString(value)); if (memo) { dict.Set("memo", base::HexEncode(memo.value())); diff --git a/components/brave_welcome_ui/api/default_browser_browser_proxy.ts b/components/brave_welcome_ui/api/default_browser_browser_proxy.ts index 2f1d8c40163..8b70ad185fa 100644 --- a/components/brave_welcome_ui/api/default_browser_browser_proxy.ts +++ b/components/brave_welcome_ui/api/default_browser_browser_proxy.ts @@ -37,7 +37,7 @@ export interface DefaultBrowserBrowserProxy { export class DefaultBrowserBrowserProxyImpl implements DefaultBrowserBrowserProxy { requestDefaultBrowserState () { - return sendWithPromise('requestDefaultBrowserState') + return sendWithPromise('requestDefaultBrowserState') } setAsDefaultBrowser () { diff --git a/components/brave_welcome_ui/api/import_data_browser_proxy.ts b/components/brave_welcome_ui/api/import_data_browser_proxy.ts index 0f05f31f8a5..583e24e5241 100644 --- a/components/brave_welcome_ui/api/import_data_browser_proxy.ts +++ b/components/brave_welcome_ui/api/import_data_browser_proxy.ts @@ -66,7 +66,7 @@ export interface ImportDataBrowserProxy { export class ImportDataBrowserProxyImpl implements ImportDataBrowserProxy { initializeImportDialog () { - return sendWithPromise('initializeImportDialog') + return sendWithPromise('initializeImportDialog') } importData ( diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BraveSiteSettingsPreferencesBase.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BraveSiteSettingsPreferencesBase.java index 836f5791aac..090cbd665bf 100644 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BraveSiteSettingsPreferencesBase.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BraveSiteSettingsPreferencesBase.java @@ -18,7 +18,6 @@ public class BraveSiteSettingsPreferencesBase extends BaseSiteSettingsFragment { private static final String ADS_KEY = "ads"; private static final String BACKGROUND_SYNC_KEY = "background_sync"; private static final String IDLE_DETECTION = "idle_detection"; - private static final String DIVIDER_KEY = "divider"; private static final String PERMISSION_AUTOREVOCATION_KEY = "permission_autorevocation"; public static final String ETHEREUM_CONNECTED_SITES_KEY = "ethereum_connected_sites"; public static final String SOLANA_CONNECTED_SITES_KEY = "solana_connected_sites"; @@ -92,14 +91,7 @@ public class BraveSiteSettingsPreferencesBase extends BaseSiteSettingsFragment { // Solana preference may be removed if wallet is disabled by policy. if (prefSolanaConnectedSites != null) { int solanaConnectedSitesOrder = prefSolanaConnectedSites.getOrder(); - Preference prefDivider = getPreferenceScreen().findPreference(DIVIDER_KEY); - if (prefDivider == null) { - // There is divider when `Android Settings Containment` flag is turned on - prefPermissionAutorevocation.setOrder(solanaConnectedSitesOrder + 1); - } else { - prefDivider.setOrder(solanaConnectedSitesOrder + 1); - prefPermissionAutorevocation.setOrder(solanaConnectedSitesOrder + 2); - } + prefPermissionAutorevocation.setOrder(solanaConnectedSitesOrder + 1); } } } diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd index 6545e9858cf..14748555aa8 100644 --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd @@ -324,12 +324,6 @@ Always - - Latest - - - Sort by: - Provided by Brave @@ -1151,17 +1145,6 @@ Popup zoom window - - - Suggested searches based on your last tab - - - Suggested searches - - - Based on your last tab - - See more @@ -1170,13 +1153,6 @@ See more recent tabs - - Expanded - - - Collapsed - - {PRICE_DROP_COUNT, plural, @@ -1425,7 +1401,7 @@ - + Get the most out of Brave diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp index 587a7507f72..02b6b2b1123 100644 --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp @@ -1325,8 +1325,15 @@ Manage in <link_android_advanced_protection>Android settings</link_android_advanced_protection> Advanced Protection controls these Brave settings: -• "Always use secure connections" is on. -• "JavaScript optimizer" is off. <link_javascript_optimizer>Manage Site exceptions</link_javascript_optimizer> + + + "Always use secure connections" is on. + + + "JavaScript optimizer" is off. <link_javascript_optimizer>Manage Site exceptions</link_javascript_optimizer> + + + "WebGPU" is disabled. diff --git a/components/browsing_data_strings.grdp b/components/browsing_data_strings.grdp index 5e8ed1a2bde..a6c052dcb22 100644 --- a/components/browsing_data_strings.grdp +++ b/components/browsing_data_strings.grdp @@ -228,4 +228,46 @@ To delete Brave cookies from this device, <a href="#" target="_blank" id="signOutLink">sign out of Brave</a>. + + Manage in Brave Password Manager + + + Manage in your Brave sync chain + + + Manage other data + + + Manage other Brave data + + + My Activity + + + Other data + + + Other Brave data + + + Passwords and passkeys + + + Passwords can be deleted in their management settings + + + Search history + + + Search history and passwords can be deleted in their management settings + + + To delete this data, go to its management settings + + + See your search engine's instructions for deleting your search history, if applicable + + + Your search engine is $1Bing. See their instructions for deleting your search history, if applicable. + diff --git a/components/components_strings.grd b/components/components_strings.grd index 3f5fcadf457..fbf42920fd9 100644 --- a/components/components_strings.grd +++ b/components/components_strings.grd @@ -574,49 +574,19 @@ Internal debugging pages are currently disabled. - - - Manage in Brave Password Manager + + + {DAYS, plural, =0 {Active today} =1 {Active 1 day ago} other {Active # days ago}} - - Manage in your Brave sync chain + + Active now - - Manage other data + + {MINUTES, plural, =1 {Active 1 minute ago} other {Active # minutes ago}} - - Manage other Brave data + + {HOURS, plural, =1 {Active 1 hour ago} other {Active # hours ago}} - - My Activity - - - Other data - - - Other Brave data - - - Passwords and passkeys - - - Passwords can be deleted in their management settings - - - Search history - - - Search history and passwords can be deleted in their management settings - - - To delete this data, go to its management settings - - - See your search engine's instructions for deleting your search history, if applicable - - - Your search engine is $1Bing. See their instructions for deleting your search history, if applicable. - diff --git a/components/error_page_strings.grdp b/components/error_page_strings.grdp index 0d98bd6b85d..441b01e1463 100644 --- a/components/error_page_strings.grdp +++ b/components/error_page_strings.grdp @@ -136,8 +136,8 @@ <span>$1</span>www.example.com is blocked - - “<span>$1</span>mailto” links are blocked + + This page is blocked The webpage at <strong>$1</strong> might be temporarily down or it may have moved permanently to a new web address. diff --git a/components/management_strings.grdp b/components/management_strings.grdp index cfda8d5dc36..95c415c61b9 100644 --- a/components/management_strings.grdp +++ b/components/management_strings.grdp @@ -18,6 +18,9 @@ Settings + + Search settings + @@ -474,7 +477,7 @@ - + Information about your browser, OS, device, installed software, files, and IP addresses diff --git a/components/management_strings_override.grdp b/components/management_strings_override.grdp index f46157c1676..88397b39af9 100644 --- a/components/management_strings_override.grdp +++ b/components/management_strings_override.grdp @@ -48,7 +48,7 @@ - + diff --git a/components/omnibox/browser/brave_shortcuts_provider_unittest.cc b/components/omnibox/browser/brave_shortcuts_provider_unittest.cc index cea04ee2593..1771717c378 100644 --- a/components/omnibox/browser/brave_shortcuts_provider_unittest.cc +++ b/components/omnibox/browser/brave_shortcuts_provider_unittest.cc @@ -10,13 +10,17 @@ #include #include "base/files/file_path.h" +#include "base/files/scoped_temp_dir.h" #include "base/memory/scoped_refptr.h" #include "base/strings/utf_string_conversions.h" #include "base/test/task_environment.h" #include "base/time/time.h" #include "brave/components/omnibox/browser/brave_fake_autocomplete_provider_client.h" #include "brave/components/omnibox/browser/brave_omnibox_prefs.h" +#include "components/history/core/browser/history_database_params.h" #include "components/history/core/browser/history_service.h" +#include "components/history/core/test/history_service_test_util.h" +#include "components/history/core/test/test_history_database.h" #include "components/omnibox/browser/autocomplete_input.h" #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/shortcuts_backend.h" @@ -31,8 +35,14 @@ class MockHistoryService : public history::HistoryService { public: - MockHistoryService() = default; + MockHistoryService() { + CHECK(history_dir_.CreateUniqueTempDir()); + Init(history::TestHistoryDatabaseParamsForPath(history_dir_.GetPath())); + } MOCK_METHOD1(DeleteURLs, void(const std::vector&)); + + private: + base::ScopedTempDir history_dir_; }; class BraveShortcutsProviderTest : public testing::Test { @@ -76,6 +86,13 @@ class BraveShortcutsProviderTest : public testing::Test { provider_ = base::MakeRefCounted(&client_); } + void TearDown() override { + provider_ = nullptr; + history::BlockUntilHistoryProcessesPendingRequests( + client_.GetHistoryService()); + task_environment_.RunUntilIdle(); + } + PrefService* prefs() { return client_.GetPrefs(); } protected: diff --git a/components/omnibox/browser/commander_provider.cc b/components/omnibox/browser/commander_provider.cc index 426a280c100..3dcd69afb2f 100644 --- a/components/omnibox/browser/commander_provider.cc +++ b/components/omnibox/browser/commander_provider.cc @@ -102,12 +102,12 @@ void CommanderProvider::OnCommanderUpdated() { // This is neat but it would be nice if we could always show it instead of // only when we have a result selected. - match.contents = option.annotation; - if (!option.annotation.empty()) { + match.contents = AutocompleteInput::SanitizeString(option.annotation); + if (!match.contents.empty()) { match.contents_class = { ACMatchClassification(0, ACMatchClassification::DIM)}; } - match.description = option.title; + match.description = AutocompleteInput::SanitizeString(option.title); match.allowed_to_be_default_match = true; match.swap_contents_and_description = true; diff --git a/components/omnibox/browser/leo_provider.cc b/components/omnibox/browser/leo_provider.cc index 23971561786..aeba1acc744 100644 --- a/components/omnibox/browser/leo_provider.cc +++ b/components/omnibox/browser/leo_provider.cc @@ -92,7 +92,7 @@ void LeoProvider::Start(const AutocompleteInput& input, bool minimal_changes) { AutocompleteMatch match(/*provider*/ this, relevance, /*deletable*/ false, kMatchType); - auto text = input.text(); + auto text = AutocompleteInput::SanitizeString(input.text()); if (input.InKeywordMode()) { AutocompleteInput::SplitKeywordFromInput( text, /*trim_leading_whitespace=*/true, &text); diff --git a/components/omnibox_strings.grdp b/components/omnibox_strings.grdp index 59199c04d72..8471c73bbd5 100644 --- a/components/omnibox_strings.grdp +++ b/components/omnibox_strings.grdp @@ -156,9 +156,6 @@ Search $1Yahoo or type URL - - Ask $1Yahoo anything - Gallery @@ -186,7 +183,7 @@ Gemini 3 models - + Pro @@ -410,9 +407,6 @@ - - Try AI Mode - Submit @@ -683,7 +677,7 @@ Enter a question - + Ask anything diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp index d59c55dfaaa..ee2fd58ddb6 100644 --- a/components/page_info_strings.grdp +++ b/components/page_info_strings.grdp @@ -869,4 +869,105 @@ Manage ad privacy + + + PKCS #1 RSA Encryption + + + PKCS #1 MD2 With RSA Encryption + + + PKCS #1 MD4 With RSA Encryption + + + PKCS #1 MD5 With RSA Encryption + + + PKCS #1 SHA-1 With RSA Encryption + + + PKCS #1 SHA-256 With RSA Encryption + + + PKCS #1 SHA-384 With RSA Encryption + + + PKCS #1 SHA-512 With RSA Encryption + + + X9.62 ECDSA Signature with SHA-1 + + + X9.62 ECDSA Signature with SHA-256 + + + X9.62 ECDSA Signature with SHA-384 + + + X9.62 ECDSA Signature with SHA-512 + + + Elliptic Curve Public Key + + + SECG elliptic curve secp256r1 (aka ANSI X9.62 prime256v1, NIST P-256) + + + SECG elliptic curve secp384r1 (aka NIST P-384) + + + SECG elliptic curve secp521r1 (aka NIST P-521) + + + + + Any + + + Code Signing + + + Email Protection + + + Time Stamping + + + + + Authority Information Access + + + Non-repudiation + + + Key Encipherment + + + Data Encipherment + + + Key Agreement + + + Certificate Signer + + + CRL Signer + + + Encipher Only + + + Decipher Only + + + + + Certification Practice Statement Pointer + + + User Notice + + diff --git a/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.cc b/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.cc index 39843197bac..73bd08eee6f 100644 --- a/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.cc +++ b/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.cc @@ -26,22 +26,21 @@ EnumTraits:: - FromMojom(password_manager::mojom::CSVSafariPassword_Status status, - password_manager::CSVSafariPassword::Status* out) { +std::optional +EnumTraits:: + FromMojom(password_manager::mojom::CSVSafariPassword_Status status) { + using Mojom = password_manager::mojom::CSVSafariPassword_Status; + using Native = password_manager::CSVSafariPassword::Status; switch (status) { - case password_manager::mojom::CSVSafariPassword_Status::kOK: - *out = password_manager::CSVSafariPassword::Status::kOK; - return true; - case password_manager::mojom::CSVSafariPassword_Status::kSyntaxError: - *out = password_manager::CSVSafariPassword::Status::kSyntaxError; - return true; - case password_manager::mojom::CSVSafariPassword_Status::kSemanticError: - *out = password_manager::CSVSafariPassword::Status::kSemanticError; - return true; + case Mojom::kOK: + return Native::kOK; + case Mojom::kSyntaxError: + return Native::kSyntaxError; + case Mojom::kSemanticError: + return Native::kSemanticError; } - return false; + return std::nullopt; } // static diff --git a/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.h b/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.h index 0d6f7b9abc9..cb86de71566 100644 --- a/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.h +++ b/components/password_manager/services/csv_password/public/mojom/csv_safari_password_parser_traits.h @@ -22,9 +22,8 @@ struct EnumTraits { static password_manager::mojom::CSVSafariPassword_Status ToMojom( password_manager::CSVSafariPassword::Status status); - static bool FromMojom( - password_manager::mojom::CSVSafariPassword_Status status, - password_manager::CSVSafariPassword::Status* output); + static std::optional FromMojom( + password_manager::mojom::CSVSafariPassword_Status status); }; template <> diff --git a/components/payments_strings.grdp b/components/payments_strings.grdp index c9baa98ce95..3dde2db0376 100644 --- a/components/payments_strings.grdp +++ b/components/payments_strings.grdp @@ -47,7 +47,7 @@ Order summary - + Payment @@ -508,20 +508,20 @@ - + Unlock your screen in the next step, typically using your fingerprint. You can also $1verify another way. - + verify another way - + You chose to verify with $1an authenticator device on sites that use $2example.com. This provider may have stored information about how you pay, which you can $3ask to have deleted. - + ask to have deleted - + Confirm @@ -544,71 +544,6 @@ - - - Store - - - Total - - - request to be deleted - - - $1bank.com wants to verify it's you - - - - - %1$smerchant.com may need to take additional steps to verify your payment - - - - - - $1merchant.com may need to take additional steps to verify your payment - - - - - - - Verify your purchase - - - Complete your purchase using your device - - - - - You chose to verify with an authenticator device on websites that use $1example.com. This provider may have stored information about your payment method, which you can $2request to be deleted. - - - - - - - Use Touch ID to verify and complete your purchase? - - - Complete your purchase using Touch ID - - - You chose to verify with Touch ID on websites that use $1example.com. This provider may have stored information about your payment method, which you can $2request to be deleted. - - - - - Use Windows Hello to verify and complete your purchase? - - - Complete your purchase using Windows Hello - - - You chose to verify with Windows Hello on websites that use $1example.com. This provider may have stored information about your payment method, which you can $2request to be deleted. - - - @@ -620,20 +555,17 @@ Secure payment credential authentication sheet is closed - - Secure payment credential no matching credential sheet - - - Secure payment credential no matching credential sheet is opened - - - Secure payment credential no matching credential sheet is closed - Primary Header Logo Secondary Header Logo + + Store + + + Total + diff --git a/components/payments_strings_override.grdp b/components/payments_strings_override.grdp index 0f3f5e97f7e..2033f19c2cf 100644 --- a/components/payments_strings_override.grdp +++ b/components/payments_strings_override.grdp @@ -32,13 +32,4 @@ - - - - - - - - - diff --git a/components/permissions_strings.grdp b/components/permissions_strings.grdp index 308b29778f9..6b17c530d62 100644 --- a/components/permissions_strings.grdp +++ b/components/permissions_strings.grdp @@ -10,6 +10,9 @@ $1maps.google.com wants to use your device's location + + $1maps.google.com wants to use your approximate location + $1maps.google.com wants to respond to accessibility events diff --git a/components/policy_strings.grdp b/components/policy_strings.grdp index 75f4cf88292..77f46ef33d3 100644 --- a/components/policy_strings.grdp +++ b/components/policy_strings.grdp @@ -564,6 +564,12 @@ Additional details: Last policy timestamp: + + Policy fetch + + + Extension install policy fetch + Report sent: @@ -757,6 +763,12 @@ Additional details: This policy is working as intended but a conflicting value is set elsewhere and is overridden by this policy. + + This policy has the same value applied at the machine and user levels. The policy is working as intended. + + + This policy has different values applied at the machine and user levels. The policy is working as intended. + This policy is deprecated. You should use the $1AllowDinosaurEasterEgg policy instead. @@ -875,6 +887,9 @@ Additional details: Policy Logs + + Filter logs + Version Information @@ -1328,6 +1343,12 @@ Additional details: Your administrator restarted your device + + Device unlocked + + + Your administrator located this device while it was disabled. It has been re-enabled and is ready to use. + This policy automatically disables syncing across devices for: $1passwords, autofill. diff --git a/components/privacy_sandbox/brave_privacy_sandbox_settings.cc b/components/privacy_sandbox/brave_privacy_sandbox_settings.cc index 8a017440a91..be0c8d930c5 100644 --- a/components/privacy_sandbox/brave_privacy_sandbox_settings.cc +++ b/components/privacy_sandbox/brave_privacy_sandbox_settings.cc @@ -142,13 +142,6 @@ bool BravePrivacySandboxSettings::IsSharedStorageSelectURLAllowed( return false; } -bool BravePrivacySandboxSettings::IsFencedStorageReadAllowed( - const url::Origin& top_frame_origin, - const url::Origin& accessing_origin, - content::RenderFrameHost* console_frame) const { - return false; -} - bool BravePrivacySandboxSettings::IsPrivateAggregationAllowed( const url::Origin& top_frame_origin, const url::Origin& reporting_origin, diff --git a/components/privacy_sandbox/brave_privacy_sandbox_settings.h b/components/privacy_sandbox/brave_privacy_sandbox_settings.h index a8028417d99..3635a1b36a5 100644 --- a/components/privacy_sandbox/brave_privacy_sandbox_settings.h +++ b/components/privacy_sandbox/brave_privacy_sandbox_settings.h @@ -87,10 +87,6 @@ class BravePrivacySandboxSettings const url::Origin& accessing_origin, std::string* out_debug_message, bool* out_block_is_site_setting_specific) const override; - bool IsFencedStorageReadAllowed( - const url::Origin& top_frame_origin, - const url::Origin& accessing_origin, - content::RenderFrameHost* console_frame) const override; bool IsPrivateAggregationAllowed( const url::Origin& top_frame_origin, const url::Origin& reporting_origin, diff --git a/components/script_injector/renderer/script_injector_render_frame_observer.cc b/components/script_injector/renderer/script_injector_render_frame_observer.cc index b49a81196a5..cbc75ffbb57 100644 --- a/components/script_injector/renderer/script_injector_render_frame_observer.cc +++ b/components/script_injector/renderer/script_injector_render_frame_observer.cc @@ -52,7 +52,7 @@ void ScriptInjectorRenderFrameObserver::RequestAsyncExecuteScript( blink::mojom::PromiseResultOption await_promise, RequestAsyncExecuteScriptCallback callback) { blink::WebScriptSource web_script_source = - blink::WebScriptSource(blink::WebString::FromUTF16(script)); + blink::WebScriptSource(blink::WebString::FromUtf16(script)); auto want_result = CheckIfWantResult(callback); diff --git a/components/search_engine_choice_strings.grdp b/components/search_engine_choice_strings.grdp index 18fb6810e4f..c3dca92d6e2 100644 --- a/components/search_engine_choice_strings.grdp +++ b/components/search_engine_choice_strings.grdp @@ -69,15 +69,13 @@ - - Your default lets you search the web. You can change it in settings. - - - - These are shown in random order. - - + + Your default lets you search the web. You can change it in settings. + + + These are shown in random order. + Learn more diff --git a/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.cc b/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.cc index f8cd69ee220..d8051167afe 100644 --- a/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.cc +++ b/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.cc @@ -18,7 +18,6 @@ BraveMutableProfileOAuth2TokenServiceDelegate:: AccountTrackerService* account_tracker_service, network::NetworkConnectionTracker* network_connection_tracker, scoped_refptr token_web_data, - signin::AccountConsistencyMethod account_consistency, RevokeAllTokensOnLoad revoke_all_tokens_on_load, std::unique_ptr token_binding_helper, FixRequestErrorCallback fix_request_error_callback) @@ -26,7 +25,6 @@ BraveMutableProfileOAuth2TokenServiceDelegate:: account_tracker_service, network_connection_tracker, token_web_data, - account_consistency, revoke_all_tokens_on_load, std::move(token_binding_helper), fix_request_error_callback), diff --git a/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.h b/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.h index e803ebb4e44..9c538774296 100644 --- a/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.h +++ b/components/signin/internal/identity_manager/brave_mutable_profile_oauth2_token_service_delegate.h @@ -19,7 +19,6 @@ class BraveMutableProfileOAuth2TokenServiceDelegate AccountTrackerService* account_tracker_service, network::NetworkConnectionTracker* network_connection_tracker, scoped_refptr token_web_data, - signin::AccountConsistencyMethod account_consistency, RevokeAllTokensOnLoad revoke_all_tokens_on_load, std::unique_ptr token_binding_helper, FixRequestErrorCallback fix_request_error_callback); diff --git a/components/signin/public/DEPS b/components/signin/public/DEPS index a36b5d53eaf..02231101154 100644 --- a/components/signin/public/DEPS +++ b/components/signin/public/DEPS @@ -1,4 +1,5 @@ include_rules = [ "+components/image_fetcher", + "+components/metrics", "+components/sync_preferences/testing_pref_service_syncable.h", ] diff --git a/components/signin/public/identity_manager/BUILD.gn b/components/signin/public/identity_manager/BUILD.gn index 3f776a24af6..a468a2d15c0 100644 --- a/components/signin/public/identity_manager/BUILD.gn +++ b/components/signin/public/identity_manager/BUILD.gn @@ -12,6 +12,7 @@ source_set("unit_tests") { "//base", "//base/test:test_support", "//components/image_fetcher/core:test_support", + "//components/metrics", "//components/prefs", "//components/prefs:test_support", "//components/signin/internal/identity_manager", diff --git a/components/signin/public/identity_manager/brave_identity_manager_unittest.cc b/components/signin/public/identity_manager/brave_identity_manager_unittest.cc index 4e3b50cc217..e57c21ae41f 100644 --- a/components/signin/public/identity_manager/brave_identity_manager_unittest.cc +++ b/components/signin/public/identity_manager/brave_identity_manager_unittest.cc @@ -13,6 +13,7 @@ #include "base/test/task_environment.h" #include "build/build_config.h" #include "components/image_fetcher/core/fake_image_decoder.h" +#include "components/metrics/profile_metrics_service.h" #include "components/signin/internal/identity_manager/account_fetcher_service.h" #include "components/signin/internal/identity_manager/account_tracker_service.h" #include "components/signin/internal/identity_manager/accounts_cookie_mutator_impl.h" @@ -108,10 +109,15 @@ class BraveIdentityManagerTest : public testing::Test { account_fetcher_service->Initialize( &signin_client_, token_service.get(), account_tracker_service.get(), std::make_unique(), - std::make_unique()); + std::make_unique(*token_service, + *signin_client())); + metrics::ProfileMetricsContext context = metrics::ProfileMetricsContext(); + profile_metrics_service_ = + std::make_unique(context); auto primary_account_manager = std::make_unique( - &signin_client_, token_service.get(), account_tracker_service.get()); + &signin_client_, token_service.get(), account_tracker_service.get(), + profile_metrics_service_.get()); // Passing this switch ensures that the new PrimaryAccountManager starts // with a clean slate. Otherwise PrimaryAccountManager::Initialize will use @@ -175,6 +181,7 @@ class BraveIdentityManagerTest : public testing::Test { sync_preferences::TestingPrefServiceSyncable pref_service_; network::TestURLLoaderFactory test_url_loader_factory_; TestSigninClient signin_client_; + std::unique_ptr profile_metrics_service_; std::unique_ptr identity_manager_; std::unique_ptr identity_manager_observer_; CoreAccountId primary_account_id_; diff --git a/components/smart_tab_sharing.grdp b/components/smart_tab_sharing.grdp index e86f9fbdd17..34c1faf1447 100644 --- a/components/smart_tab_sharing.grdp +++ b/components/smart_tab_sharing.grdp @@ -75,6 +75,9 @@ Relevant open tabs are used to personalize responses in all threads + + You can easily ask questions about the tabs you're sharing as you browse. + Things to consider diff --git a/components/sync/service/BUILD.gn b/components/sync/service/BUILD.gn index db46c8f849d..0fc880b3efe 100644 --- a/components/sync/service/BUILD.gn +++ b/components/sync/service/BUILD.gn @@ -14,6 +14,7 @@ source_set("unit_tests") { sources = [ "//brave/components/sync/service/brave_sync_auth_manager_unittest.cc", "//brave/components/sync/service/brave_sync_service_impl_unittest.cc", + "//brave/components/sync/service/brave_sync_user_settings_impl_unittest.cc", ] deps = [ @@ -30,6 +31,8 @@ source_set("unit_tests") { "//components/os_crypt/sync", "//components/os_crypt/sync:test_support", "//components/prefs", + "//components/prefs:test_support", + "//components/saved_tab_groups/public:prefs", "//components/signin/public/identity_manager:test_support", "//components/sync:test_support", "//components/sync/engine", diff --git a/components/sync/service/DEPS b/components/sync/service/DEPS index f83b0e87975..2776e7b5cf9 100644 --- a/components/sync/service/DEPS +++ b/components/sync/service/DEPS @@ -4,8 +4,10 @@ include_rules = [ "+components/network_time", "+components/os_crypt/sync", "+components/prefs", + "+components/saved_tab_groups/public/pref_names.h", "+components/signin", "+components/sync_preferences/testing_pref_service_syncable.h", + "+components/trusted_vault/test/fake_trusted_vault_client.h", "+content/public/test", "+google_apis/gaia/gaia_id.h", "+services/network/public", diff --git a/components/sync/service/brave_sync_auth_manager.cc b/components/sync/service/brave_sync_auth_manager.cc index c5de1b80b6e..6e829395df9 100644 --- a/components/sync/service/brave_sync_auth_manager.cc +++ b/components/sync/service/brave_sync_auth_manager.cc @@ -75,8 +75,7 @@ void BraveSyncAuthManager::RequestAccessToken() { SyncAccountInfo BraveSyncAuthManager::DetermineAccountToUse( const signin::IdentityManager* identity_manager) const { if (!public_key_.empty()) { - const std::string client_id = - base::HexEncode(public_key_.data(), public_key_.size()); + const std::string client_id = base::HexEncode(public_key_); AccountInfo account_info; account_info.account_id = CoreAccountId::FromString(client_id); account_info.gaia = GaiaId(client_id); @@ -97,11 +96,9 @@ signin::AccessTokenInfo BraveSyncAuthManager::GenerateAccessToken( VLOG(1) << "timestamp=" << timestamp; DCHECK(!timestamp.empty() && !public_key_.empty() && !private_key_.empty()); - const std::string public_key_hex = - base::HexEncode(public_key_.data(), public_key_.size()); + const std::string public_key_hex = base::HexEncode(public_key_); - const std::string timestamp_hex = - base::HexEncode(timestamp.data(), timestamp.size()); + const std::string timestamp_hex = base::HexEncode(timestamp); std::vector timestamp_bytes; base::HexStringToBytes(timestamp_hex, ×tamp_bytes); @@ -109,8 +106,7 @@ signin::AccessTokenInfo BraveSyncAuthManager::GenerateAccessToken( brave_sync::crypto::Sign(timestamp_bytes, private_key_, &signature); DCHECK(brave_sync::crypto::Verify(timestamp_bytes, signature, public_key_)); - const std::string signed_timestamp_hex = - base::HexEncode(signature.data(), signature.size()); + const std::string signed_timestamp_hex = base::HexEncode(signature); // base64(timestamp_hex|signed_timestamp_hex|public_key_hex) const std::string access_token = diff --git a/components/sync/service/brave_sync_service_impl_unittest.cc b/components/sync/service/brave_sync_service_impl_unittest.cc index 8c897067f4c..00970009cb5 100644 --- a/components/sync/service/brave_sync_service_impl_unittest.cc +++ b/components/sync/service/brave_sync_service_impl_unittest.cc @@ -321,8 +321,7 @@ TEST_F(BraveSyncServiceImplTest, ForcedSetDecryptionPassphrase) { brave_sync_service_impl() ->GetUserSettings() - ->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + ->SetInitialSyncFeatureSetupComplete(); // Pretend we need the passphrase by triggering OnPassphraseRequired and // supplying the encrypted portion of data, as it is done in @@ -422,8 +421,7 @@ TEST_F(BraveSyncServiceImplTest, PermanentlyDeleteAccount) { brave_sync_service_impl() ->GetUserSettings() - ->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + ->SetInitialSyncFeatureSetupComplete(); EXPECT_TRUE(engine()); std::unique_ptr> mock_sync_engine = @@ -552,8 +550,7 @@ TEST_F(BraveSyncServiceImplTest, HistoryPreconditions) { brave_sync_service_impl() ->GetUserSettings() - ->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + ->SetInitialSyncFeatureSetupComplete(); EXPECT_TRUE(engine()); // Code below turns on encrypt everything @@ -599,8 +596,7 @@ TEST_F(BraveSyncServiceImplTest, BookmarksAndPasswordsAfterSetup) { brave_sync_service_impl() ->GetUserSettings() - ->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + ->SetInitialSyncFeatureSetupComplete(); EXPECT_TRUE(engine()); EXPECT_FALSE( @@ -719,8 +715,7 @@ TEST_F(BraveSyncServiceImplTest_DisableSyncDefaultPasswordsTest, brave_sync_service_impl() ->GetUserSettings() - ->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + ->SetInitialSyncFeatureSetupComplete(); EXPECT_TRUE(engine()); EXPECT_FALSE( diff --git a/components/sync/service/brave_sync_user_settings_impl_unittest.cc b/components/sync/service/brave_sync_user_settings_impl_unittest.cc new file mode 100644 index 00000000000..80cb9ec5214 --- /dev/null +++ b/components/sync/service/brave_sync_user_settings_impl_unittest.cc @@ -0,0 +1,143 @@ +/* Copyright (c) 2026 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +#include + +#include "base/test/task_environment.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/testing_pref_service.h" +#include "components/saved_tab_groups/public/pref_names.h" +#include "components/signin/public/base/signin_prefs.h" +#include "components/signin/public/identity_manager/identity_manager.h" +#include "components/sync/base/features.h" +#include "components/sync/service/glue/sync_transport_data_prefs.h" +#include "components/sync/service/sync_service_crypto.h" +#include "components/sync/service/sync_user_settings_impl.h" +#include "components/sync/test/sync_service_crypto_test_utils.h" +#include "components/trusted_vault/test/fake_trusted_vault_client.h" +#include "google_apis/gaia/gaia_id.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +// This is re-worked from SyncUserSettingsImplTest + +namespace syncer { + +namespace { + +using testing::ContainerEq; +using testing::Return; + +constexpr GaiaId::Literal kTestGaiaId("1111"); + +DataTypeSet GetUserTypes() { + DataTypeSet user_types = UserTypes(); + // Ignore all Chrome OS types on non-Chrome OS platforms. + user_types.RemoveAll({APP_LIST, ARC_PACKAGE, OS_PREFERENCES, + OS_PRIORITY_PREFERENCES, PRINTERS, + PRINTERS_AUTHORIZATION_SERVERS, WIFI_CONFIGURATIONS}); + return user_types; +} + +class MockSyncServiceCryptoDelegate : public SyncServiceCrypto::Delegate { + public: + MockSyncServiceCryptoDelegate() = default; + ~MockSyncServiceCryptoDelegate() override = default; + + MOCK_METHOD(void, CryptoStateChanged, (), (override)); + MOCK_METHOD(void, CryptoRequiredUserActionChanged, (), (override)); + MOCK_METHOD(void, ReconfigureDataTypesDueToCrypto, (), (override)); + MOCK_METHOD(void, PassphraseTypeChanged, (PassphraseType), (override)); + MOCK_METHOD(std::optional, + GetPassphraseType, + (), + (const override)); + MOCK_METHOD(void, + SetEncryptionBootstrapToken, + (const std::string&), + (override)); + MOCK_METHOD(std::string, GetEncryptionBootstrapToken, (), (const override)); +}; + +class MockDelegate : public SyncUserSettingsImpl::Delegate { + public: + MockDelegate() = default; + ~MockDelegate() override = default; + + MOCK_METHOD(bool, IsCustomPassphraseAllowed, (), (const override)); + MOCK_METHOD(SyncPrefs::SyncAccountState, + GetSyncAccountStateForPrefs, + (), + (const override)); + MOCK_METHOD(CoreAccountInfo, + GetSyncAccountInfoForPrefs, + (), + (const override)); + MOCK_METHOD(void, OnSyncClientDisabledByPolicyChanged, (), (override)); + MOCK_METHOD(void, OnSelectedTypesChanged, (), (override)); + MOCK_METHOD(void, OnInitialSyncFeatureSetupCompleted, (), (override)); +}; + +class BraveSyncUserSettingsImplTest : public testing::Test { + protected: + BraveSyncUserSettingsImplTest() { + SyncPrefs::RegisterProfilePrefs(pref_service_.registry()); + SigninPrefs::RegisterProfilePrefs(pref_service_.registry()); + SyncTransportDataPrefs::RegisterProfilePrefs(pref_service_.registry()); + signin::IdentityManager::RegisterProfilePrefs(pref_service_.registry()); + // TODO(crbug.com/368409110): Necessary for a workaround in + // SyncPrefs::KeepAccountSettingsPrefsOnlyForUsers(); see TODO there. + pref_service_.registry()->RegisterDictionaryPref( + tab_groups::prefs::kLocallyClosedRemoteTabGroupIds, base::DictValue()); + sync_prefs_ = std::make_unique(&pref_service_); + + sync_service_crypto_ = std::make_unique( + &sync_service_crypto_delegate_, &trusted_vault_client_); + sync_service_crypto_->SetEncryptor( + std::make_unique(GetEncryptorForTest())); + + ON_CALL(delegate_, IsCustomPassphraseAllowed).WillByDefault(Return(true)); + ON_CALL(delegate_, GetSyncAccountStateForPrefs) + .WillByDefault(Return(SyncPrefs::SyncAccountState::kSyncing)); + ON_CALL(delegate_, GetSyncAccountInfoForPrefs).WillByDefault([]() { + CoreAccountInfo account; + account.email = "name@account.com"; + account.gaia = kTestGaiaId; + account.account_id = CoreAccountId::FromGaiaId(account.gaia); + return account; + }); + } + + std::unique_ptr MakeSyncUserSettings( + DataTypeSet registered_types) { + return std::make_unique( + &delegate_, sync_service_crypto_.get(), sync_prefs_.get(), + registered_types); + } + + base::test::SingleThreadTaskEnvironment task_environment_; + // The order of fields matters because it determines destruction order and + // fields are dependent. + TestingPrefServiceSimple pref_service_; + std::unique_ptr sync_prefs_; + testing::NiceMock + sync_service_crypto_delegate_; + testing::NiceMock delegate_; + trusted_vault::FakeTrustedVaultClient trusted_vault_client_; + std::unique_ptr sync_service_crypto_; +}; + +TEST_F(BraveSyncUserSettingsImplTest, PreferredTypesSyncEverything) { + std::unique_ptr sync_user_settings = + MakeSyncUserSettings(GetUserTypes()); + DataTypeSet preferred_user_types = + sync_user_settings->GetPreferredDataTypes(); + EXPECT_FALSE(preferred_user_types.Has(AUTOFILL_VALUABLE)); + EXPECT_FALSE(preferred_user_types.Has(AUTOFILL_VALUABLE_METADATA)); +} + +} // namespace + +} // namespace syncer diff --git a/components/sync_device_info/brave_device_info.cc b/components/sync_device_info/brave_device_info.cc index bd436f2605d..929e3a96647 100644 --- a/components/sync_device_info/brave_device_info.cc +++ b/components/sync_device_info/brave_device_info.cc @@ -16,7 +16,7 @@ BraveDeviceInfo::BraveDeviceInfo( const std::string& client_name, const std::string& chrome_version, const std::string& sync_user_agent, - const sync_pb::SyncEnums::DeviceType device_type, + const DeviceType device_type, const OsType os_type, const FormFactor form_factor, const std::string& signin_scoped_device_id, @@ -26,7 +26,7 @@ BraveDeviceInfo::BraveDeviceInfo( base::Time last_updated_timestamp, base::TimeDelta pulse_interval, bool send_tab_to_self_receiving_enabled, - sync_pb::SyncEnums_SendTabReceivingType send_tab_to_self_receiving_type, + SendTabReceivingType send_tab_to_self_receiving_type, const std::optional& sharing_info, const std::optional& paask_info, const std::string& fcm_registration_token, diff --git a/components/sync_device_info/brave_device_info.h b/components/sync_device_info/brave_device_info.h index 390d39b4da2..1675330812b 100644 --- a/components/sync_device_info/brave_device_info.h +++ b/components/sync_device_info/brave_device_info.h @@ -26,7 +26,7 @@ class BraveDeviceInfo : public DeviceInfo { const std::string& client_name, const std::string& chrome_version, const std::string& sync_user_agent, - const sync_pb::SyncEnums::DeviceType device_type, + const DeviceType device_type, const OsType os_type, const FormFactor form_factor, const std::string& signin_scoped_device_id, @@ -36,7 +36,7 @@ class BraveDeviceInfo : public DeviceInfo { base::Time last_updated_timestamp, base::TimeDelta pulse_interval, bool send_tab_to_self_receiving_enabled, - sync_pb::SyncEnums_SendTabReceivingType send_tab_to_self_receiving_type, + SendTabReceivingType send_tab_to_self_receiving_type, const std::optional& sharing_info, const std::optional& paask_info, const std::string& fcm_registration_token, diff --git a/components/tor/tor_control.cc b/components/tor/tor_control.cc index 9d0346f0a68..25f6243e4de 100644 --- a/components/tor/tor_control.cc +++ b/components/tor/tor_control.cc @@ -144,7 +144,7 @@ void TorControl::OpenControl(int portno, std::vector cookie) { DCHECK(!running_); running_ = true; - VLOG(3) << __func__ << " " << base::HexEncode(cookie.data(), cookie.size()); + VLOG(3) << __func__ << " " << base::HexEncode(cookie); net::AddressList addrlist = net::AddressList::CreateFromIPAddress( net::IPAddress::IPv4Localhost(), portno); @@ -185,8 +185,7 @@ void TorControl::Connected(std::vector cookie, int rv) { return; } - DoCmd("AUTHENTICATE " + base::HexEncode(cookie.data(), cookie.size()), - base::DoNothing(), + DoCmd("AUTHENTICATE " + base::HexEncode(cookie), base::DoNothing(), base::BindOnce(&TorControl::Authenticated, weak_ptr_factory_.GetWeakPtr())); } diff --git a/components/tor/tor_file_watcher.cc b/components/tor/tor_file_watcher.cc index 1176c746915..c548d2a635d 100644 --- a/components/tor/tor_file_watcher.cc +++ b/components/tor/tor_file_watcher.cc @@ -11,6 +11,7 @@ #include "base/check.h" #include "base/compiler_specific.h" #include "base/containers/span.h" +#include "base/containers/to_vector.h" #include "base/files/file.h" #include "base/logging.h" #include "base/sequence_checker.h" @@ -210,9 +211,10 @@ bool TorFileWatcher::EatControlCookie(std::vector& cookie, } // Success! - cookie.assign(buf, UNSAFE_TODO(buf + *nread)); + auto read_buffer = base::as_byte_span(buf).first(*nread); + cookie = base::ToVector(read_buffer); mtime = info.last_accessed; - VLOG(3) << "Control cookie " << base::HexEncode(buf, *nread) << ", mtime " + VLOG(3) << "Control cookie " << base::HexEncode(read_buffer) << ", mtime " << mtime; return true; } diff --git a/components/version_ui_strings.grdp b/components/version_ui_strings.grdp index 28725f0993f..e08dec0acc6 100644 --- a/components/version_ui_strings.grdp +++ b/components/version_ui_strings.grdp @@ -83,6 +83,9 @@ Active Variations + + Variations Source + Variations Seed Type diff --git a/eslint.config.mjs b/eslint.config.mjs index 0e46f241666..d7d74c0345f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -325,4 +325,10 @@ export default defineConfig([ 'import/enforce-node-protocol-usage': ['error', 'always'], }, }, + { + files: ['chromium_src/**/*.ts'], + rules: { + '@eslint-community/eslint-comments/no-unlimited-disable': 'off', + }, + }, ]) diff --git a/extensions/BUILD.gn b/extensions/BUILD.gn index cb716e1c3c6..209d97e054b 100644 --- a/extensions/BUILD.gn +++ b/extensions/BUILD.gn @@ -17,6 +17,7 @@ deprecated_visibility_allowed = [ "//brave/components/psst/browser/core", "//brave/components/request_otr/browser", "//chrome/browser", + "//chrome/browser/content_settings:unit_tests", ] if (enable_extensions) { diff --git a/ios/brave-ios/Sources/Brave/Frontend/Browser/SendTab/SendTabToSelfController.swift b/ios/brave-ios/Sources/Brave/Frontend/Browser/SendTab/SendTabToSelfController.swift index b7a7ab69982..a6b7bfd5b44 100644 --- a/ios/brave-ios/Sources/Brave/Frontend/Browser/SendTab/SendTabToSelfController.swift +++ b/ios/brave-ios/Sources/Brave/Frontend/Browser/SendTab/SendTabToSelfController.swift @@ -207,7 +207,7 @@ extension SendTabToSelfContentController { $0.separatorInset = UIEdgeInsets.zero $0.backgroundColor = .clear $0.accessoryType = indexPath.row == dataSource?.selectedIndex ? .checkmark : .none - $0.setLines(device.fullName, detailText: device.lastUpdatedTime.formattedActivePeriodDate) + $0.setLines(device.deviceName, detailText: device.lastUpdatedTime.formattedActivePeriodDate) $0.detailTextLabel?.font = .preferredFont(forTextStyle: .subheadline) $0.imageView?.contentMode = .scaleAspectFit $0.imageView?.tintColor = .braveLabel diff --git a/ios/browser/api/bookmarks/exporter/bookmark_html_writer.cc b/ios/browser/api/bookmarks/exporter/bookmark_html_writer.cc index bb14cddd438..01907757e09 100644 --- a/ios/browser/api/bookmarks/exporter/bookmark_html_writer.cc +++ b/ios/browser/api/bookmarks/exporter/bookmark_html_writer.cc @@ -273,13 +273,14 @@ class Writer : public base::RefCountedThreadSafe { } // Writes raw text out returning true on success. This does not escape - // the text in anyway. + // the text in any way. bool Write(const std::string& text) { - if (!text.length()) + if (text.empty()) { return true; - size_t wrote = - UNSAFE_TODO(file_->WriteAtCurrentPos(text.c_str(), text.length())); - bool result = (wrote == text.length()); + } + std::optional wrote = + file_->WriteAtCurrentPos(base::as_bytes(base::span(text))); + const bool result = wrote == text.length(); if (!result) { PLOG(ERROR) << "Could not write text to " << path_; return false; diff --git a/ios/browser/api/certificate/brave_certificate.mm b/ios/browser/api/certificate/brave_certificate.mm index e1e2c6f07d1..9fed3f5e108 100644 --- a/ios/browser/api/certificate/brave_certificate.mm +++ b/ios/browser/api/certificate/brave_certificate.mm @@ -112,8 +112,8 @@ _issuerName = [[BraveCertificateRDNSequence alloc] initWithBERName:extended_cert_->tbs().issuer_tlv uniqueId:issuer_unique_id]; - _serialNumber = base::SysUTF8ToNSString(base::HexEncode( - serial_number_string.data(), serial_number_string.size())); + _serialNumber = + base::SysUTF8ToNSString(base::HexEncode(serial_number_string)); _version = static_cast(extended_cert_->tbs().version) + 1; // version + 1 _signature = [[BraveCertificateSignature alloc] diff --git a/ios/browser/api/certificate/models/brave_certificate_fingerprint.mm b/ios/browser/api/certificate/models/brave_certificate_fingerprint.mm index bcf67ac1b92..75e506b04cd 100644 --- a/ios/browser/api/certificate/models/brave_certificate_fingerprint.mm +++ b/ios/browser/api/certificate/models/brave_certificate_fingerprint.mm @@ -27,9 +27,7 @@ std::string data = base::SHA1HashString(std::string( reinterpret_cast(CFDataGetBytePtr(cert_data)), CFDataGetLength(cert_data))); - _fingerprintHexEncoded = - base::SysUTF8ToNSString(base::HexEncode(data.data(), data.size())); - + _fingerprintHexEncoded = base::SysUTF8ToNSString(base::HexEncode(data)); } break; case BraveFingerprintType_SHA256: { @@ -43,8 +41,7 @@ secure_hash->Update(base::span(cert_bytes)); secure_hash->Finish(data); - _fingerprintHexEncoded = - base::SysUTF8ToNSString(base::HexEncode(data.data(), data.size())); + _fingerprintHexEncoded = base::SysUTF8ToNSString(base::HexEncode(data)); } break; } } diff --git a/ios/browser/api/certificate/models/brave_certificate_public_key_info.mm b/ios/browser/api/certificate/models/brave_certificate_public_key_info.mm index 532832e6575..61e4f16a05c 100644 --- a/ios/browser/api/certificate/models/brave_certificate_public_key_info.mm +++ b/ios/browser/api/certificate/models/brave_certificate_public_key_info.mm @@ -56,10 +56,8 @@ } if (!certificate::x509_utils::IsNull(parameters)) { - std::string parameters_string = - std::string(base::as_string_view(parameters)); - _parameters = base::SysUTF8ToNSString(base::HexEncode( - parameters_string.data(), parameters_string.size())); + _parameters = base::SysUTF8ToNSString( + base::HexEncode(base::as_byte_span(base::span(parameters)))); } } @@ -77,8 +75,9 @@ NSData* external_representation = (__bridge_transfer NSData*)SecKeyCopyExternalRepresentation(key, nil); - _keyHexEncoded = base::SysUTF8ToNSString(base::HexEncode( - [external_representation bytes], [external_representation length])); + _keyHexEncoded = base::SysUTF8ToNSString(base::HexEncode(std::string_view( + static_cast([external_representation bytes]), + [external_representation length]))); NSDictionary* attributes = (__bridge_transfer NSDictionary*)SecKeyCopyAttributes(key); @@ -138,10 +137,8 @@ [external_representation length]); if (certificate::x509_utils::ParseRSAPublicKeyInfo(spk, &modulus, &public_exponent)) { - std::string modulus_string = - std::string(base::as_string_view(modulus)); _keyHexEncoded = base::SysUTF8ToNSString( - base::HexEncode(modulus_string.data(), modulus_string.size())); + base::HexEncode(base::as_byte_span(base::span(modulus)))); std::uint64_t parsed_public_exponent = 0; if (bssl::der::ParseUint64(public_exponent, diff --git a/ios/browser/api/certificate/models/brave_certificate_signature.mm b/ios/browser/api/certificate/models/brave_certificate_signature.mm index d9df69224e2..7a87601458d 100644 --- a/ios/browser/api/certificate/models/brave_certificate_signature.mm +++ b/ios/browser/api/certificate/models/brave_certificate_signature.mm @@ -49,17 +49,14 @@ } if (!certificate::x509_utils::IsNull(signature_params)) { - std::string signature_params_string = - std::string(base::as_string_view(signature_params)); - _parameters = base::SysUTF8ToNSString(base::HexEncode( - signature_params_string.data(), signature_params_string.size())); + _parameters = base::SysUTF8ToNSString( + base::HexEncode(base::as_byte_span(base::span(signature_params)))); } } - std::string signature_string = std::string( - base::as_string_view(certificate->signature_value().bytes())); - _signatureHexEncoded = base::SysUTF8ToNSString( - base::HexEncode(signature_string.data(), signature_string.size())); + _signatureHexEncoded = + base::SysUTF8ToNSString(base::HexEncode(base::as_byte_span( + base::span(certificate->signature_value().bytes())))); _bytesSize = certificate->signature_value().bytes().size(); } return self; diff --git a/ios/browser/api/opentabs/brave_sendtab_api.h b/ios/browser/api/opentabs/brave_sendtab_api.h index 61eb74622a2..840dbd1405c 100644 --- a/ios/browser/api/opentabs/brave_sendtab_api.h +++ b/ios/browser/api/opentabs/brave_sendtab_api.h @@ -26,26 +26,20 @@ NS_SWIFT_NAME(SendTabTargetDevice) OBJC_EXPORT @interface IOSSendTabTargetDevice : NSObject -@property(nonatomic, strong) NSString* fullName; -@property(nonatomic, strong) NSString* shortName; @property(nonatomic, strong) NSString* deviceName; @property(nonatomic, strong) NSString* cacheId; @property(nonatomic) TargetDeviceType deviceType; @property(nonatomic, copy) NSDate* lastUpdatedTime; /// Target Device Constructor used with SendTabAPI -/// @param fullName - Device full name -/// @param shortName - Device short name /// @param deviceName - Device name /// @param cacheId - Device cacheId /// @param deviceType - Device type /// @param lastUpdatedTime - Last updated timestamp -- (instancetype)initWithFullName:(NSString*)fullName - shortName:(NSString*)shortName - deviceName:(NSString*)deviceName - cacheId:(NSString*)cacheId - deviceType:(TargetDeviceType)deviceType - lastUpdatedTime:(NSDate*)lastUpdatedTime; +- (instancetype)initWithDeviceName:(NSString*)deviceName + cacheId:(NSString*)cacheId + deviceType:(TargetDeviceType)deviceType + lastUpdatedTime:(NSDate*)lastUpdatedTime; @end NS_SWIFT_NAME(BraveSendTabAPI) diff --git a/ios/browser/api/opentabs/brave_sendtab_api.mm b/ios/browser/api/opentabs/brave_sendtab_api.mm index c84021b6b22..b1e3be494e5 100644 --- a/ios/browser/api/opentabs/brave_sendtab_api.mm +++ b/ios/browser/api/opentabs/brave_sendtab_api.mm @@ -40,15 +40,11 @@ TargetDeviceType DeviceTypeFromSyncDeviceType( @implementation IOSSendTabTargetDevice -- (instancetype)initWithFullName:(NSString*)fullName - shortName:(NSString*)shortName - deviceName:(NSString*)deviceName - cacheId:(NSString*)cacheId - deviceType:(TargetDeviceType)deviceType - lastUpdatedTime:(NSDate*)lastUpdatedTime { +- (instancetype)initWithDeviceName:(NSString*)deviceName + cacheId:(NSString*)cacheId + deviceType:(TargetDeviceType)deviceType + lastUpdatedTime:(NSDate*)lastUpdatedTime { if ((self = [super init])) { - self.fullName = fullName; - self.shortName = shortName; self.deviceName = deviceName; self.cacheId = cacheId; self.deviceType = deviceType; @@ -63,8 +59,6 @@ TargetDeviceType DeviceTypeFromSyncDeviceType( [[[self class] allocWithZone:zone] init]; if (targetDevice) { - targetDevice.fullName = self.fullName; - targetDevice.shortName = self.shortName; targetDevice.deviceName = self.deviceName; targetDevice.cacheId = self.cacheId; targetDevice.deviceType = self.deviceType; @@ -127,13 +121,11 @@ TargetDeviceType DeviceTypeFromSyncDeviceType( for (const auto& device : target_device_list_) { IOSSendTabTargetDevice* targetDevice = [[IOSSendTabTargetDevice alloc] - initWithFullName:base::SysUTF8ToNSString(device.full_name) - shortName:base::SysUTF8ToNSString(device.short_name) - deviceName:base::SysUTF8ToNSString(device.device_name) - cacheId:base::SysUTF8ToNSString(device.cache_guid) - deviceType:brave::ios::DeviceTypeFromSyncDeviceType( - device.form_factor) - lastUpdatedTime:device.last_updated_timestamp.ToNSDate()]; + initWithDeviceName:base::SysUTF8ToNSString(device.device_name) + cacheId:base::SysUTF8ToNSString(device.cache_guid) + deviceType:brave::ios::DeviceTypeFromSyncDeviceType( + device.form_factor) + lastUpdatedTime:device.last_updated_timestamp.ToNSDate()]; [targetDeviceList addObject:targetDevice]; } @@ -149,7 +141,8 @@ TargetDeviceType DeviceTypeFromSyncDeviceType( std::string target_device = base::SysNSStringToUTF8(deviceID); send_tab_to_self_model_->AddEntry(url, title, target_device, - send_tab_to_self::PageContext()); + send_tab_to_self::PageContext(), + send_tab_to_self::NavigationHistory()); } @end diff --git a/ios/browser/api/storekit_receipt/storekit_receipt.mm b/ios/browser/api/storekit_receipt/storekit_receipt.mm index 8f4e6b7b44c..9401047be2d 100644 --- a/ios/browser/api/storekit_receipt/storekit_receipt.mm +++ b/ios/browser/api/storekit_receipt/storekit_receipt.mm @@ -378,7 +378,7 @@ bool pkcs7_get_signed_content( case 5: { _sha1Hash = base::SysUTF8ToNSString( - base::HexEncode(value.data(), value.size())); + base::HexEncode(base::as_byte_span(value))); } break; case 12: { diff --git a/ios/browser/api/sync/brave_sync_api.mm b/ios/browser/api/sync/brave_sync_api.mm index 0a47c8a9419..bca0379dca4 100644 --- a/ios/browser/api/sync/brave_sync_api.mm +++ b/ios/browser/api/sync/brave_sync_api.mm @@ -282,7 +282,7 @@ BraveSyncAPIWordsValidationStatus const // QR code version 3 can only carry 84 bytes so we hex encode 32 bytes // seed then we will have 64 bytes input data - const std::string sync_code_hex = base::HexEncode(seed.data(), seed.size()); + const std::string sync_code_hex = base::HexEncode(seed); NSData* sync_code_data = [base::SysUTF8ToNSString(sync_code_hex.c_str()) dataUsingEncoding:NSUTF8StringEncoding]; // NSISOLatin1StringEncoding diff --git a/ios/browser/api/sync/brave_sync_worker.cc b/ios/browser/api/sync/brave_sync_worker.cc index c8fe9880866..a8c5a3a4ae0 100644 --- a/ios/browser/api/sync/brave_sync_worker.cc +++ b/ios/browser/api/sync/brave_sync_worker.cc @@ -207,7 +207,7 @@ std::string BraveSyncWorker::GetHexSeedFromSyncCode( if (brave_sync::crypto::PassphraseToBytes32(code_words, &bytes)) { DCHECK_EQ(bytes.size(), SEED_BYTES_COUNT); if (bytes.size() == SEED_BYTES_COUNT) { - sync_code_hex = base::HexEncode(&bytes.at(0), bytes.size()); + sync_code_hex = base::HexEncode(bytes); } else { LOG(ERROR) << "wrong seed bytes " << bytes.size(); } @@ -287,8 +287,7 @@ bool BraveSyncWorker::SetSetupComplete() { } if (!sync_service->GetUserSettings()->IsInitialSyncFeatureSetupComplete()) { - sync_service->GetUserSettings()->SetInitialSyncFeatureSetupComplete( - syncer::SyncFirstSetupCompleteSource::ADVANCED_FLOW_CONFIRM); + sync_service->GetUserSettings()->SetInitialSyncFeatureSetupComplete(); } return true; diff --git a/ios/browser/providers/BUILD.gn b/ios/browser/providers/BUILD.gn index a2ce291d2d8..0cc411105e4 100644 --- a/ios/browser/providers/BUILD.gn +++ b/ios/browser/providers/BUILD.gn @@ -18,6 +18,7 @@ group("brave_providers") { "//ios/chrome/browser/providers/application_mode_fetcher:chromium_application_mode_fetcher", "//ios/chrome/browser/providers/branded_images:chromium_branded_images", "//ios/chrome/browser/providers/bwg:chromium_bwg", + "//ios/chrome/browser/providers/cobalt:chromium_cobalt", "//ios/chrome/browser/providers/content_notification:chromium_content_notification_service", "//ios/chrome/browser/providers/context_menu:chromium_context_menu", "//ios/chrome/browser/providers/discover_feed:chromium_discover_feed", diff --git a/ios/web_view/internal/cwv_global_state.mm b/ios/web_view/internal/cwv_global_state.mm index daf9d7e651a..51007bebd76 100644 --- a/ios/web_view/internal/cwv_global_state.mm +++ b/ios/web_view/internal/cwv_global_state.mm @@ -8,6 +8,8 @@ #import "ios/web_view/public/cwv_global_state.h" +#import "base/debug/dump_without_crashing.h" + @implementation CWVEarlyInitFlags @end @@ -57,6 +59,10 @@ - (void)earlyInit { } +- (void)setDumpWithoutCrashingHandler:(void (*)(void))handler { + base::debug::SetDumpWithoutCrashingFunction(handler); +} + - (void)earlyInitWithFlags:(CWVEarlyInitFlags*)flags { } diff --git a/net/http/partitioned_host_state_map_unittest.cc b/net/http/partitioned_host_state_map_unittest.cc index 27af21521ac..7bd9e09b887 100644 --- a/net/http/partitioned_host_state_map_unittest.cc +++ b/net/http/partitioned_host_state_map_unittest.cc @@ -101,46 +101,54 @@ TEST(PartitionedHostStateMapTest, ValidPartitionHash) { TEST(PartitionedHostStateMapTest, MultiplePartitions) { PartitionedMap map; - auto auto_reset_partition_hash = - map.SetScopedPartitionHash(HashHost("partition1")); - map[HashHost("key1")] = "11"; - map[HashHost("key2")] = "12"; - EXPECT_EQ(map.size(), 2u); - EXPECT_EQ(map.find(HashHost("key1"))->second, "11"); - EXPECT_EQ(map.find(HashHost("key2"))->second, "12"); - EXPECT_EQ(map.find(HashHost("key3")), map.end()); + { + auto auto_reset_partition_hash = + map.SetScopedPartitionHash(HashHost("partition1")); + map[HashHost("key1")] = "11"; + map[HashHost("key2")] = "12"; + EXPECT_EQ(map.size(), 2u); + EXPECT_EQ(map.find(HashHost("key1"))->second, "11"); + EXPECT_EQ(map.find(HashHost("key2"))->second, "12"); + EXPECT_EQ(map.find(HashHost("key3")), map.end()); + } - auto_reset_partition_hash = - map.SetScopedPartitionHash(HashHost("partition2")); - map[HashHost("key1")] = "21"; - map[HashHost("key2")] = "22"; - EXPECT_EQ(map.size(), 4u); + { + auto auto_reset_partition_hash = + map.SetScopedPartitionHash(HashHost("partition2")); + map[HashHost("key1")] = "21"; + map[HashHost("key2")] = "22"; + EXPECT_EQ(map.size(), 4u); - EXPECT_EQ(map.find(HashHost("key1"))->second, "21"); - EXPECT_EQ(map.find(HashHost("key2"))->second, "22"); - EXPECT_EQ(map.find(HashHost("key3")), map.end()); + EXPECT_EQ(map.find(HashHost("key1"))->second, "21"); + EXPECT_EQ(map.find(HashHost("key2"))->second, "22"); + EXPECT_EQ(map.find(HashHost("key3")), map.end()); - EXPECT_EQ(map.erase(HashHost("key2")), 1u); - EXPECT_EQ(map.size(), 3u); + EXPECT_EQ(map.erase(HashHost("key2")), 1u); + EXPECT_EQ(map.size(), 3u); + } - auto_reset_partition_hash = - map.SetScopedPartitionHash(HashHost("partition3")); - EXPECT_EQ(map.find(HashHost("key1")), map.end()); - EXPECT_EQ(map.find(HashHost("key3")), map.end()); - EXPECT_EQ(map.find(HashHost("key2")), map.end()); + { + auto auto_reset_partition_hash = + map.SetScopedPartitionHash(HashHost("partition3")); + EXPECT_EQ(map.find(HashHost("key1")), map.end()); + EXPECT_EQ(map.find(HashHost("key3")), map.end()); + EXPECT_EQ(map.find(HashHost("key2")), map.end()); - EXPECT_EQ(map.erase(HashHost("key2")), 0u); - EXPECT_EQ(map.size(), 3u); + EXPECT_EQ(map.erase(HashHost("key2")), 0u); + EXPECT_EQ(map.size(), 3u); + } // Should delete key1 in partition1 and partition2. EXPECT_TRUE(map.DeleteDataInAllPartitions(HashHost("key1"))); EXPECT_EQ(map.size(), 1u); - auto_reset_partition_hash = - map.SetScopedPartitionHash(HashHost("partition1")); - EXPECT_EQ(map.find(HashHost("key1")), map.end()); - EXPECT_EQ(map.find(HashHost("key2"))->second, "12"); + { + auto auto_reset_partition_hash = + map.SetScopedPartitionHash(HashHost("partition1")); + EXPECT_EQ(map.find(HashHost("key1")), map.end()); + EXPECT_EQ(map.find(HashHost("key2"))->second, "12"); + } } } // namespace net diff --git a/net/proxy_resolution/proxy_config_service_tor.cc b/net/proxy_resolution/proxy_config_service_tor.cc index 134deb236c6..8a56c837d61 100644 --- a/net/proxy_resolution/proxy_config_service_tor.cc +++ b/net/proxy_resolution/proxy_config_service_tor.cc @@ -276,7 +276,7 @@ TorProxyMap::~TorProxyMap() { std::string TorProxyMap::GenerateNewPassword() { std::vector password(kTorPasswordLength); crypto::RandBytes(password); - return base::HexEncode(password.data(), password.size()); + return base::HexEncode(password); } std::string TorProxyMap::Get(const std::string& username) { diff --git a/package.json b/package.json index 5aca4582a8e..df5de251219 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "projects": { "chrome": { "dir": "src", - "tag": "147.0.7727.117", + "tag": "148.0.7778.60", "repository": { "url": "https://chromium.googlesource.com/chromium/src.git" }, diff --git a/patches/base-BUILD.gn.patch b/patches/base-BUILD.gn.patch index 5071c434334..f6bce40846c 100644 --- a/patches/base-BUILD.gn.patch +++ b/patches/base-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn -index c9811ba7835ed8f96dbde412543e86dc3b5ab13b..7b526c35d13c4d619342ead7cbaa4c0fe62a7c26 100644 +index aad39d792791fb1e17d7a529eb234f74fdb65b09..9955b4165a6cd53a8be1c83f11110bd410287868 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -4836,6 +4836,7 @@ if (is_android) { +@@ -4931,6 +4931,7 @@ if (is_android) { "android/java/src/org/chromium/base/UserDataHost.java", "android/java/src/org/chromium/base/ValueChangedCallback.java", ] @@ -10,7 +10,7 @@ index c9811ba7835ed8f96dbde412543e86dc3b5ab13b..7b526c35d13c4d619342ead7cbaa4c0f resources_package = "org.chromium.base" -@@ -5497,6 +5498,7 @@ if (is_android) { +@@ -5598,6 +5599,7 @@ if (is_android) { "android/java/src/org/chromium/base/shared_preferences/SharedPreferencesManager.java", "android/java/src/org/chromium/base/shared_preferences/StrictPreferenceKeyChecker.java", ] diff --git a/patches/base-metrics-histogram_functions.h.patch b/patches/base-metrics-histogram_functions.h.patch index 9796a71aca4..d985eb33e4c 100644 --- a/patches/base-metrics-histogram_functions.h.patch +++ b/patches/base-metrics-histogram_functions.h.patch @@ -1,8 +1,8 @@ diff --git a/base/metrics/histogram_functions.h b/base/metrics/histogram_functions.h -index 16e9aeaea73d3ddcad45ec59c5fd374a9b54fd20..529d0df5fcbf0b581a5703fdc2552a85046a40d9 100644 +index 6d3d4f8147c1811f3f76beaec1d20cc83d5ff663..0ceb7fa4f06e0107d80df9429813866ccaf687bd 100644 --- a/base/metrics/histogram_functions.h +++ b/base/metrics/histogram_functions.h -@@ -86,6 +86,7 @@ void UmaHistogramEnumeration(const StringType& name, T sample) { +@@ -90,6 +90,7 @@ void UmaHistogramEnumeration(const StringType& name, T sample) { "Enumeration's kMaxValue is out of range of " "LinearHistogram::kBucketCount_MAX. Use a sparse histogram " "instead."); diff --git a/patches/base-test-BUILD.gn.patch b/patches/base-test-BUILD.gn.patch index b5ba6ad5c82..96cce601ac6 100644 --- a/patches/base-test-BUILD.gn.patch +++ b/patches/base-test-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/base/test/BUILD.gn b/base/test/BUILD.gn -index 983f36dd7c712b7e0613a4cc857fb915f657b443..c5540877df72cb239823c1d1f115a2d0be52ea1b 100644 +index d3d41724bcad499c99c7ed51d22db339d6b68565..0770cf028adecbe68fe96f89c3ec1bb50e55bc51 100644 --- a/base/test/BUILD.gn +++ b/base/test/BUILD.gn -@@ -379,6 +379,7 @@ static_library("test_support") { +@@ -409,6 +409,7 @@ static_library("test_support") { # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and # enable the diagnostic by removing this line. configs += [ "//build/config/compiler:no_exit_time_destructors" ] diff --git a/patches/base-threading-thread_restrictions.h.patch b/patches/base-threading-thread_restrictions.h.patch index a0ec42ad71d..6a6f796d0aa 100644 --- a/patches/base-threading-thread_restrictions.h.patch +++ b/patches/base-threading-thread_restrictions.h.patch @@ -1,8 +1,8 @@ diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h -index b53745dd0a4011fb15ab16d61f9a6effd5c03598..934771aa66492bed993017a3eb5a98fd8660230b 100644 +index a1bb1a46029020d26d7bb88d314c5c5e5a967063..f9b4dab1d153b3d7c3e5be4e26a46b232ea0d8c2 100644 --- a/base/threading/thread_restrictions.h +++ b/base/threading/thread_restrictions.h -@@ -738,6 +738,7 @@ class BASE_EXPORT ScopedAllowBaseSyncPrimitives { +@@ -743,6 +743,7 @@ class BASE_EXPORT ScopedAllowBaseSyncPrimitives { ScopedAllowBaseSyncPrimitives& operator=( const ScopedAllowBaseSyncPrimitives&) = delete; diff --git a/patches/base-trace_event-builtin_categories.h.patch b/patches/base-trace_event-builtin_categories.h.patch index 63a9d54319e..c93de74e479 100644 --- a/patches/base-trace_event-builtin_categories.h.patch +++ b/patches/base-trace_event-builtin_categories.h.patch @@ -1,8 +1,8 @@ diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h -index 39168e90fd6ea68e562f0a2c6d8ba1162bc29e71..5c7b2bd8288f24e31e08c091da02aef68e4b8ba1 100644 +index 8bc03cb77ebdfe991e0ebe05aa187dfdea8c2764..de140be7322db6925ca86fbba3eb32d9e9eec60b 100644 --- a/base/trace_event/builtin_categories.h +++ b/base/trace_event/builtin_categories.h -@@ -282,6 +282,7 @@ PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS( +@@ -284,6 +284,7 @@ PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS( perfetto::Category("webrtc").SetTags("audio", "video"), perfetto::Category("webrtc_stats"), perfetto::Category("xr"), diff --git a/patches/build-android-gyp-proguard.py.patch b/patches/build-android-gyp-proguard.py.patch index b84d3ada701..48984d554e0 100644 --- a/patches/build-android-gyp-proguard.py.patch +++ b/patches/build-android-gyp-proguard.py.patch @@ -1,5 +1,5 @@ diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py -index ebe275036e26094ebe6ef0a6008db6dce46fbe6f..c359471eeb77ed95db9891726fab5a71419cfbd2 100755 +index 06ac6b77b543fd444ee6e2fcfa66afcc2e559e12..b14a202c551c8efc9eba01857d2fed9c7fe161cd 100755 --- a/build/android/gyp/proguard.py +++ b/build/android/gyp/proguard.py @@ -393,6 +393,7 @@ def _OptimizeWithR8(options, config_paths, libraries, dynamic_config_data): diff --git a/patches/build-android-pylib-gtest-gtest_test_instance.py.patch b/patches/build-android-pylib-gtest-gtest_test_instance.py.patch index beb9ace24d9..76ec1319414 100644 --- a/patches/build-android-pylib-gtest-gtest_test_instance.py.patch +++ b/patches/build-android-pylib-gtest-gtest_test_instance.py.patch @@ -1,8 +1,8 @@ diff --git a/build/android/pylib/gtest/gtest_test_instance.py b/build/android/pylib/gtest/gtest_test_instance.py -index b6f0e2a387e32aaebdaadffe577cd78cdfe4eb72..7e710e7422870c2c4ee5cc6d89e556bfcd52b92b 100644 +index cfae400ac2526e502dfffa4a08fa9d71f7c41bef..d7ef5ab5711bab65250a45f6818bf1e42655b8e1 100644 --- a/build/android/pylib/gtest/gtest_test_instance.py +++ b/build/android/pylib/gtest/gtest_test_instance.py -@@ -742,3 +742,4 @@ class GtestTestInstance(test_instance.TestInstance): +@@ -778,3 +778,4 @@ class GtestTestInstance(test_instance.TestInstance): if self._deobfuscator: self._deobfuscator.Close() self._deobfuscator = None diff --git a/patches/build-config-BUILDCONFIG.gn.patch b/patches/build-config-BUILDCONFIG.gn.patch index be6d77f8c2a..404338bbd63 100644 --- a/patches/build-config-BUILDCONFIG.gn.patch +++ b/patches/build-config-BUILDCONFIG.gn.patch @@ -1,5 +1,5 @@ diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn -index 4d1ac59b9b7dc05a20a3bb523b17706a00761cde..3beaf22c51b7cc2b7c0a1a8c4968f68d572b3cd1 100644 +index cc00f84630e063fee2b1897eced42c6a53a3a79e..030484bcf1e37d98e86886f9a7748cae73d33494 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn @@ -343,6 +343,7 @@ is_posix = !is_win && !is_fuchsia diff --git a/patches/build-config-android-config.gni.patch b/patches/build-config-android-config.gni.patch index 09eb2b6dc7d..5449e255321 100644 --- a/patches/build-config-android-config.gni.patch +++ b/patches/build-config-android-config.gni.patch @@ -1,5 +1,5 @@ diff --git a/build/config/android/config.gni b/build/config/android/config.gni -index b9babd477e7482011136c5e53725b4a0da292e6f..57b28faf5c8259478b503bf8d2786abeb7c493c8 100644 +index c91ad3143a2c91dd0eb94253323a594bf160db5a..d51a09eb92291728016327248b0c2b80263104d0 100644 --- a/build/config/android/config.gni +++ b/build/config/android/config.gni @@ -28,6 +28,7 @@ assert(!(incremental_install && !is_java_debug), diff --git a/patches/build-config-android-rules.gni.patch b/patches/build-config-android-rules.gni.patch index 829a8937e22..6e3cbf3af27 100644 --- a/patches/build-config-android-rules.gni.patch +++ b/patches/build-config-android-rules.gni.patch @@ -1,5 +1,5 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni -index 18867073f2af6f982fe98384b7144ca1ce362815..c43037458ce0958ab3fe0bcac5e6727e0805d03f 100644 +index a97203144a36f9c108af11f8b09c989b1f80accc..9a7321ed9ebb97eda1855f90e7b566ac288184c9 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni @@ -208,6 +208,7 @@ if (!is_robolectric && enable_java_templates) { diff --git a/patches/build-rust-cargo_crate.gni.patch b/patches/build-rust-cargo_crate.gni.patch index 7a9cdf5170e..43dd74dac69 100644 --- a/patches/build-rust-cargo_crate.gni.patch +++ b/patches/build-rust-cargo_crate.gni.patch @@ -1,5 +1,5 @@ diff --git a/build/rust/cargo_crate.gni b/build/rust/cargo_crate.gni -index a993149fa6467acf67a43a34a3fd843edabffafa..87d09c26466618c61ae1596fbfab535959d9f45a 100644 +index 8981cac7e190f217a34bf30bdd6bc5a8ba333910..eb9da1d803ebf5f19073152a48bef7e6005b0acf 100644 --- a/build/rust/cargo_crate.gni +++ b/build/rust/cargo_crate.gni @@ -181,6 +181,7 @@ template("cargo_crate") { diff --git a/patches/buildtools-checkdeps-checkdeps.py.patch b/patches/buildtools-checkdeps-checkdeps.py.patch index 80e6586d8bb..5c38c9aa671 100644 --- a/patches/buildtools-checkdeps-checkdeps.py.patch +++ b/patches/buildtools-checkdeps-checkdeps.py.patch @@ -1,8 +1,8 @@ diff --git a/buildtools/checkdeps/checkdeps.py b/buildtools/checkdeps/checkdeps.py -index 700d77968766ad7271d81c776893466d036c17f9..3fd3408869ac280237586911628f6f4540252f0a 100755 +index 201f0a5436709d18d6974caf94f219b01332b56e..befbf77df880690506fb08c45fb1e17584af14ee 100755 --- a/buildtools/checkdeps/checkdeps.py +++ b/buildtools/checkdeps/checkdeps.py -@@ -291,5 +291,6 @@ def main(): +@@ -299,5 +299,6 @@ def main(): return deps_checker.Report() diff --git a/patches/chrome-BUILD.gn.patch b/patches/chrome-BUILD.gn.patch index a5188776e1e..b086e1e4dd3 100644 --- a/patches/chrome-BUILD.gn.patch +++ b/patches/chrome-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79aa6ca4cd 100644 +index cc98a1463c539e6228c7fc614cce4736dd173dbe..74f23eaeaa10a7e7a2edbd77d6376c1b1342a796 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn @@ -200,6 +200,7 @@ if (!is_android && !is_mac) { @@ -10,7 +10,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 deps += [ ":chrome_dll", -@@ -505,11 +506,12 @@ if (is_win) { +@@ -506,11 +507,12 @@ if (is_win) { args += [ "--keystone=0" ] } } @@ -24,7 +24,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 extra_substitutions = [ "CHROMIUM_BUNDLE_ID=$chrome_mac_bundle_id", "CHROMIUM_SHORT_NAME=$chrome_product_short_name", -@@ -529,6 +531,7 @@ if (is_win) { +@@ -530,6 +532,7 @@ if (is_win) { "//chrome/common:buildflags", "//chrome/common:version_header", ] @@ -32,7 +32,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 if (enable_updater) { deps += [ ":chromium_updater_privileged_helper" ] -@@ -674,6 +677,7 @@ if (is_win) { +@@ -675,6 +678,7 @@ if (is_win) { # this dependency directly copies the file into the framework's # resources directory. public_deps += [ ":chrome_framework_widevine_signature" ] @@ -40,7 +40,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 } } -@@ -717,9 +721,11 @@ if (is_win) { +@@ -718,9 +722,11 @@ if (is_win) { "--scm=0", ] } @@ -52,7 +52,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 if (is_chrome_branded && include_branded_entitlements) { # These entitlements are bound to the official Google Chrome signing # certificate and will not necessarily work in any other build. -@@ -744,6 +750,7 @@ if (is_win) { +@@ -745,6 +751,7 @@ if (is_win) { info_plist_target = invoker.info_plist_target } else { info_plist_target = ":chrome_helper_plist" @@ -60,7 +60,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 } extra_substitutions = [ -@@ -927,6 +934,7 @@ if (is_win) { +@@ -928,6 +935,7 @@ if (is_win) { if (enable_updater) { if (is_chrome_branded) { sources += [ "//third_party/updater/chrome_mac_universal_prod/cipd/${updater_product_full_name}.app" ] @@ -68,7 +68,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 } else { sources += [ "$root_out_dir/${updater_product_full_name}.app" ] -@@ -1215,6 +1223,7 @@ if (is_win) { +@@ -1216,6 +1224,7 @@ if (is_win) { "-current_version", chrome_dylib_version, ] @@ -76,7 +76,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 if (!is_component_build) { # Specify a sensible install_name for static builds. The library is -@@ -1412,6 +1421,7 @@ if (is_win) { +@@ -1413,6 +1422,7 @@ if (is_win) { group("dependencies") { public_deps = [ @@ -84,7 +84,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 "//build:branding_buildflags", "//build:chromeos_buildflags", "//chrome/browser", -@@ -1458,7 +1468,7 @@ group("dependencies") { +@@ -1459,7 +1469,7 @@ group("dependencies") { if (is_win) { process_version_rc_template("chrome_exe_version") { @@ -93,7 +93,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 output = "$target_gen_dir/chrome_exe_version.rc" } -@@ -1507,6 +1517,7 @@ group("resources") { +@@ -1508,6 +1518,7 @@ group("resources") { "//chrome/browser:resources", "//chrome/common:resources", "//chrome/renderer:resources", @@ -101,7 +101,7 @@ index c8c10cdab040d39f69fa56aad12fc8b1c67854f3..9f386b3649a2d9cf44ae5e8959254f79 ] } -@@ -1561,6 +1572,7 @@ if (!is_android) { +@@ -1562,6 +1573,7 @@ if (!is_android) { if (enable_resource_allowlist_generation) { repack_allowlist = _chrome_resource_allowlist deps = [ ":resource_allowlist" ] diff --git a/patches/chrome-android-BUILD.gn.patch b/patches/chrome-android-BUILD.gn.patch index c6410e91489..3929af7ba3f 100644 --- a/patches/chrome-android-BUILD.gn.patch +++ b/patches/chrome-android-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn -index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab29e5e0d8 100644 +index f919f743c19f8060994c9e70ddac74e8db7d7a75..74f60a11975fb9fc7c360679cb88dc0fe54bf37f 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn @@ -164,6 +164,7 @@ if (_is_default_toolchain) { @@ -10,7 +10,7 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab } android_resources("chrome_app_java_resources") { -@@ -277,6 +278,7 @@ if (_is_default_toolchain) { +@@ -276,6 +277,7 @@ if (_is_default_toolchain) { if (enable_extensions_core) { deps += [ "//chrome/browser/ui/android/extensions:java_resources" ] } @@ -18,7 +18,7 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab } android_resources("java_overlay_resources") { -@@ -823,6 +825,7 @@ if (_is_default_toolchain) { +@@ -828,6 +830,7 @@ if (_is_default_toolchain) { ] deps += feed_deps @@ -26,7 +26,7 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab srcjar_deps = [ ":chrome_android_java_enums_srcjar", -@@ -840,6 +843,7 @@ if (_is_default_toolchain) { +@@ -846,6 +849,7 @@ if (_is_default_toolchain) { "//components/supervised_user/core/browser:supervised_user_utils_enum_javagen", "//components/touch_to_search/core/browser:quick_action_category_enum_javagen", ] @@ -34,7 +34,7 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab # From java_sources.gni. sources = chrome_java_sources -@@ -979,6 +983,7 @@ if (_is_default_toolchain) { +@@ -988,6 +992,7 @@ if (_is_default_toolchain) { # TODO(crbug.com/434123514): see if we can remove these stub targets. deps += [ "//chrome/browser/ui/android/extensions/windowing/stub:java" ] } @@ -42,7 +42,7 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab } action_with_pydeps("chrome_android_java_google_api_keys_srcjar") { -@@ -1737,6 +1742,7 @@ if (_is_default_toolchain) { +@@ -1751,6 +1756,7 @@ if (_is_default_toolchain) { "java/res_chromium_base/mipmap-xxxhdpi/layered_app_icon_background.png", "java/res_chromium_base/values/channel_constants.xml", ] @@ -50,7 +50,7 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab # Dep needed to ensure override works properly. deps = [ ":chrome_base_module_resources" ] -@@ -1889,6 +1895,7 @@ if (_is_default_toolchain) { +@@ -1903,6 +1909,7 @@ if (_is_default_toolchain) { ":${_variant}_locale_pak_assets", ":${_variant}_paks", ] @@ -58,15 +58,15 @@ index d8bd462bc9349d5a4dbe8b07bf3bcac97cda8272..77c77159d847ec53b3dfb68f6379deab } } -@@ -2148,6 +2155,7 @@ if (_is_default_toolchain) { +@@ -2164,6 +2171,7 @@ if (_is_default_toolchain) { "//third_party/androidx:androidx_annotation_annotation_experimental_java", "//third_party/androidx:androidx_browser_browser_java", ] + sources += brave_java_base_module_sources deps += brave_java_base_module_deps # More deps for DFMs. - if (dfmify_dev_ui) { -@@ -3135,6 +3143,7 @@ if (_is_default_toolchain) { + if (enable_chrome_android_internal) { +@@ -3162,6 +3170,7 @@ if (_is_default_toolchain) { "java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java", "java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java", ] diff --git a/patches/chrome-android-chrome_java_sources.gni.patch b/patches/chrome-android-chrome_java_sources.gni.patch index 5d71b6c74d3..2b3a7d7a5b3 100644 --- a/patches/chrome-android-chrome_java_sources.gni.patch +++ b/patches/chrome-android-chrome_java_sources.gni.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni -index 78babfd827c3a544c8290d19c1d6bca02a2acdf4..39052678cea518da1fbbe72bd697cb719b2bf486 100644 +index 2945d10db211f322ef6c41ba2e5af35236f4b260..5e8fe0a7931188d959ad340328d1b55a4248aeeb 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -1317,3 +1317,4 @@ if (enable_screen_capture) { +@@ -1332,3 +1332,4 @@ if (enable_screen_capture) { "java/src/org/chromium/chrome/browser/media/MediaCapturePickerTabObserver.java", ] } diff --git a/patches/chrome-android-chrome_public_apk_tmpl.gni.patch b/patches/chrome-android-chrome_public_apk_tmpl.gni.patch index bac2696798e..45ad50cd124 100644 --- a/patches/chrome-android-chrome_public_apk_tmpl.gni.patch +++ b/patches/chrome-android-chrome_public_apk_tmpl.gni.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni -index 9f7fe934e456b429435fa46c1a532d81d292cb5d..82a7935767a92cfaf0db2ab6797117e4c87aab60 100644 +index db09b8848350a84260559005251d4bdd63d3a7df..2ef336aaf0ba742a9ab254ec6e1ead5bdf803d83 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni @@ -291,6 +291,7 @@ template("chrome_common_apk_or_module_tmpl") { @@ -10,7 +10,7 @@ index 9f7fe934e456b429435fa46c1a532d81d292cb5d..82a7935767a92cfaf0db2ab6797117e4 # Most of these, with the exception of resource_exclusion_exceptions, # are currently duplicated in system_webview_apk_tmpl.gni. -@@ -315,6 +316,7 @@ template("chrome_common_apk_or_module_tmpl") { +@@ -312,6 +313,7 @@ template("chrome_common_apk_or_module_tmpl") { proguard_enabled = true proguard_configs = [ "//chrome/android/proguard/main.flags" ] @@ -18,7 +18,7 @@ index 9f7fe934e456b429435fa46c1a532d81d292cb5d..82a7935767a92cfaf0db2ab6797117e4 if (_is_test) { proguard_configs += [ "//chrome/android/proguard/apk_for_test.flags" ] } -@@ -687,6 +689,7 @@ template("chrome_common_apk_or_module_tmpl") { +@@ -684,6 +686,7 @@ template("chrome_common_apk_or_module_tmpl") { "version_code", "version_name", ]) diff --git a/patches/chrome-android-features-tab_ui-BUILD.gn.patch b/patches/chrome-android-features-tab_ui-BUILD.gn.patch index 1073bda74c6..c92d93088da 100644 --- a/patches/chrome-android-features-tab_ui-BUILD.gn.patch +++ b/patches/chrome-android-features-tab_ui-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn -index fd17b1ddb6ee7dfbf94482c47f6a52b0421baa46..abfe03db56e6769bc708374c137d95f093a807b1 100644 +index a2b6d47c42bfadb7d6414e706409bc43447f9f36..8ec434f54d831d0ec37fe8d1e695e67ac0da1340 100644 --- a/chrome/android/features/tab_ui/BUILD.gn +++ b/chrome/android/features/tab_ui/BUILD.gn @@ -133,6 +133,7 @@ android_resources("java_resources") { diff --git a/patches/chrome-android-feed-core-java-src-org-chromium-chrome-browser-feed-FeedSurfaceMediator.java.patch b/patches/chrome-android-feed-core-java-src-org-chromium-chrome-browser-feed-FeedSurfaceMediator.java.patch index 9fc865bd570..ee07a0d057f 100644 --- a/patches/chrome-android-feed-core-java-src-org-chromium-chrome-browser-feed-FeedSurfaceMediator.java.patch +++ b/patches/chrome-android-feed-core-java-src-org-chromium-chrome-browser-feed-FeedSurfaceMediator.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java -index 5eeaae1b713d705b0e0ff0d325f533828e5e7857..9c5c8f33ff46aece80d7bbf8711d4894ed9b5354 100644 +index c0cea53d25ca07797b27014cd6554d3ce60115aa..e6397453f19ec15e7d5a264e8a39a7f72b559ca5 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java -@@ -345,7 +345,7 @@ public class FeedSurfaceMediator +@@ -276,7 +276,7 @@ public class FeedSurfaceMediator // Start is showing, update the value of Pref.ENABLE_SNIPPETS_BY_DSE here. The // value should be updated before adding an observer to prevent an extra call of // updateContent(). diff --git a/patches/chrome-android-java-AndroidManifest.xml.patch b/patches/chrome-android-java-AndroidManifest.xml.patch index 3d4b52c42c3..f23c247ad4b 100644 --- a/patches/chrome-android-java-AndroidManifest.xml.patch +++ b/patches/chrome-android-java-AndroidManifest.xml.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml -index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed7862899573469 100644 +index 774ed0dde04ec15862edb822a00db8f9f27e239f..95cac1a455ec3d6b801a7cbe39b841fcd9e61604 100644 --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml @@ -62,7 +62,9 @@ by a child template that "extends" this file. @@ -48,11 +48,11 @@ index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed78628 - -+ - ++ - @@ -68,7 +68,7 @@ index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed78628 -@@ -169,7 +183,9 @@ by a child template that "extends" this file. +@@ -161,7 +175,9 @@ by a child template that "extends" this file. @@ -78,7 +78,7 @@ index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed78628 -@@ -385,6 +401,7 @@ by a child template that "extends" this file. +@@ -377,6 +393,7 @@ by a child template that "extends" this file. @@ -86,7 +86,7 @@ index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed78628 -@@ -942,6 +959,7 @@ by a child template that "extends" this file. +@@ -916,6 +933,7 @@ by a child template that "extends" this file. @@ -94,7 +94,7 @@ index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed78628 @@ -102,7 +102,7 @@ index 5270a95ee7b87aacdcad1f2823fe1d20e66cef3b..9e72230a8e6403526f9929e32ed78628 {% endif %} diff --git a/patches/chrome-android-java-res-xml-main_preferences.xml.patch b/patches/chrome-android-java-res-xml-main_preferences.xml.patch index 9385234ef8b..708a5d2e5f2 100644 --- a/patches/chrome-android-java-res-xml-main_preferences.xml.patch +++ b/patches/chrome-android-java-res-xml-main_preferences.xml.patch @@ -1,13 +1,13 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml -index 972f4db05736e73be0e9bbf5cd3d7d71a705428b..50e107a3295a2a071670f0a26619ebc62dc97521 100644 +index a3d378a69604a0169f23f6f83d159e4a20ddda99..5393fb6b546bc943acb1629f548d016d52540860 100644 --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -64,7 +64,7 @@ found in the LICENSE file. +@@ -69,7 +69,7 @@ found in the LICENSE file. android:key="autofill_section" - android:order="11" + android:order="12" android:title="@string/prefs_section_autofill"/> - diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch index 516feb7b678..d51061e5add 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -index 2c6c55b1aa5b0481692af89c5b341c106d822bfe..68d6580b49963ada988b625d905c3167f947cf25 100644 +index acaf381192074a67cea79d733e15ecef5c4a2155..d0c15256f713b9089b2a5a5f1fbac83ff079797f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -897,6 +897,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -905,6 +905,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt private void closeIfNoTabsAndHomepageEnabled( boolean isPendingClosure, boolean shouldRemoveWindowWithZeroTabs) { if (getTabModelSelector().getTotalTabCount() == 0) { @@ -10,7 +10,7 @@ index 2c6c55b1aa5b0481692af89c5b341c106d822bfe..68d6580b49963ada988b625d905c3167 if (shouldRemoveWindowWithZeroTabs) { mMultiInstanceManager.closeChromeWindowIfEmpty(mWindowId); } else if (HomepageManager.getInstance() -@@ -3583,6 +3584,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -3607,6 +3608,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt if (mMultiInstanceManager != null) { mMultiInstanceManager.onTabStateInitialized(); } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-app-ChromeActivity.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-app-ChromeActivity.java.patch index cb2138abd2a..ed1576cc343 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-app-ChromeActivity.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-app-ChromeActivity.java.patch @@ -1,17 +1,17 @@ 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 -index e8e655dfb0ddafcf9f5588c9be1e579521252451..ee1c69db9e99efd530468e4ae0b1275b76321548 100644 +index e86bd35d0057f6818b0771c840c2db74e911ce8d..9ad8c5080a1dbb97d68725d552501100c51eec6d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -659,7 +659,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity - mBottomContainer = findViewById(R.id.bottom_container); - +@@ -663,7 +663,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + getEdgeToEdgeSupplier(), + assertNonNull(mRootUiCoordinator.getBottomSheetController())); SnackbarManager snackbarManager = - new SnackbarManager( + new org.chromium.chrome.browser.ui.messages.snackbar.BraveSnackbarManager( this, mBottomContainer, getWindowAndroid(), -@@ -3082,6 +3082,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -3078,6 +3078,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity */ public void onExitVr() {} diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-app-appmenu-AppMenuPropertiesDelegateImpl.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-app-appmenu-AppMenuPropertiesDelegateImpl.java.patch index 5ef482724ba..979430c78c1 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-app-appmenu-AppMenuPropertiesDelegateImpl.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-app-appmenu-AppMenuPropertiesDelegateImpl.java.patch @@ -1,5 +1,5 @@ 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 -index 5bde2932a1a077ec0eb009e1a6b88aaaf00ad4b4..7ac0d73ea05296da27f0eb3357c9602fa2f1982f 100644 +index 83cd2f27dbda903605b7015937b26717cc63dea4..7014e9465534d446bd345a7f00abc01219402037 100644 --- 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 @@ -43,6 +43,7 @@ import org.chromium.build.annotations.NullMarked; @@ -10,7 +10,7 @@ index 5bde2932a1a077ec0eb009e1a6b88aaaf00ad4b4..7ac0d73ea05296da27f0eb3357c9602f import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.bookmarks.BookmarkModel; import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils; -@@ -682,7 +683,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -681,7 +682,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties // is not persisted when adding to the homescreen. // * If creating shortcuts it not supported by the current home screen. return WebappsUtils.isAddToHomeIntentSupported() diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-browsing_data-ClearBrowsingDataFragment.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-browsing_data-ClearBrowsingDataFragment.java.patch index b0f61338749..20e90fe00b1 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-browsing_data-ClearBrowsingDataFragment.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-browsing_data-ClearBrowsingDataFragment.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java -index d5f5a4e3c1173b890de04e124b791b131b92ce44..bc8e222ff6a0c89cc47016a689879429fe722fed 100644 +index 55641e77837597f10d0a4fbcff9d57c7b66d305a..917624d4f2f53bc63ad8e183898fe532a4289e43 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java -@@ -357,7 +357,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -356,7 +356,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment } /** Called when browsing data is about to be cleared. */ diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuItem.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuItem.java.patch index ce908ff842c..afaa78f352b 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuItem.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuItem.java.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java -index 5d50e5277b48c6cf2d03b67bc230e5e2cdf26d53..12f865ab1a3e5e719790576a4fbb7fa9653e5cf1 100644 +index 0e7032634735c6f32404e69e3f302170bd66cb47..1b99751fb6ae7578d43de5dca1f01f561d9264b6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java @@ -78,6 +78,7 @@ class ChromeContextMenuItem { diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuPopulator.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuPopulator.java.patch index ecc6b85b54b..ac6d2f55054 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuPopulator.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-contextmenu-ChromeContextMenuPopulator.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -index e122d1d9e6ded00acc4183c64c0894f3a5a69893..d59543df6067dd5499d5d89eb6949880ebc8ef44 100644 +index 5b16f302936cb92ebed8a0e0d4c7dc5bf05ceab1..f69e7abb9fceb76fd96874cbc563c7265499bbff 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -@@ -243,6 +243,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -245,6 +245,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { Action.EXIT_PICTURE_IN_PICTURE, Action.OPEN_IN_INCOGNITO_WINDOW, Action.VIEW_PAGE_SOURCE, @@ -10,7 +10,7 @@ index e122d1d9e6ded00acc4183c64c0894f3a5a69893..d59543df6067dd5499d5d89eb6949880 }) @Retention(RetentionPolicy.SOURCE) public @interface Action { -@@ -299,7 +300,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -301,7 +302,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { int EXIT_PICTURE_IN_PICTURE = 50; int OPEN_IN_INCOGNITO_WINDOW = 51; int VIEW_PAGE_SOURCE = 52; @@ -19,7 +19,7 @@ index e122d1d9e6ded00acc4183c64c0894f3a5a69893..d59543df6067dd5499d5d89eb6949880 } // LINT.ThenChange(/tools/metrics/histograms/enums.xml:ContextMenuOptionAndroid) -@@ -532,6 +533,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -539,6 +540,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { if (!MailTo.isMailTo(mParams.getLinkUrl().getSpec()) && !UrlUtilities.isTelScheme(mParams.getLinkUrl())) { linkGroup.add(createListItem(Item.COPY_LINK_ADDRESS)); diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-multiwindow-MultiInstanceOrchestratorImpl.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-multiwindow-MultiInstanceOrchestratorImpl.java.patch new file mode 100644 index 00000000000..d3c438113c2 --- /dev/null +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-multiwindow-MultiInstanceOrchestratorImpl.java.patch @@ -0,0 +1,22 @@ +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiInstanceOrchestratorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiInstanceOrchestratorImpl.java +index 351956ae3b3f03b591f24a240cb7c889f83498dc..f404c3c694f123c9595d2c7f4aaef64322b00e3d 100644 +--- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiInstanceOrchestratorImpl.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiInstanceOrchestratorImpl.java +@@ -42,7 +42,7 @@ import java.util.Set; + + /** Implements {@link MultiInstanceOrchestrator} as a singleton. */ + @NullMarked +-/* package */ final class MultiInstanceOrchestratorImpl implements MultiInstanceOrchestrator { ++/* package */ class MultiInstanceOrchestratorImpl implements MultiInstanceOrchestrator { + private static @Nullable MultiInstanceOrchestrator sInstance; + private static @Nullable TabReparentingDelegate sTabReparentingDelegateForTesting; + +@@ -63,7 +63,7 @@ import java.util.Set; + return sInstance; + } + +- private MultiInstanceOrchestratorImpl(TabReparentingDelegate tabReparentingDelegate) { ++ MultiInstanceOrchestratorImpl(TabReparentingDelegate tabReparentingDelegate) { + mTabReparentingDelegate = tabReparentingDelegate; + ApplicationStatus.registerStateListenerForAllActivities(this::onActivityStateChange); + } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPage.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPage.java.patch index 6498e33e0a3..aa12fab8956 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPage.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPage.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -index f0fbb3837ea1f04f587f7c75d6936d6158f1a671..1d5f9922f7a970b0e0afc2d9ee910e346047cfdf 100644 +index c4bed03b33dda5d481b93a14431dcaa98fbd5587..81db3f66bb4391e795bb8cbd6064e805e2d9764f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -831,7 +831,7 @@ public class NewTabPage +@@ -745,7 +745,7 @@ public class NewTabPage * NTP. */ public static boolean isInSingleUrlBarMode(boolean isTablet) { diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-privacy-settings-PrivacySettings.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-privacy-settings-PrivacySettings.java.patch index 903d33f885e..a26c06bffd5 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-privacy-settings-PrivacySettings.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-privacy-settings-PrivacySettings.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -index fd566ce93a14eb0deddc82126061861c78b1b383..ce739b896c8ffcd19c044972f798e65701e1e1d1 100644 +index 895e742dc777e4fa4ee506b1a432d0fb421a924c..7fd679343d6a94cbd7018e9cfb4774000f312377 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -86,7 +86,7 @@ import java.util.function.Consumer; +@@ -88,7 +88,7 @@ import java.util.function.Consumer; /** Fragment to keep track of the all the privacy related preferences. */ @NullMarked @@ -11,7 +11,7 @@ index fd566ce93a14eb0deddc82126061861c78b1b383..ce739b896c8ffcd19c044972f798e657 implements Preference.OnPreferenceChangeListener { private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; -@@ -565,6 +565,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -606,6 +606,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); @@ -19,7 +19,7 @@ index fd566ce93a14eb0deddc82126061861c78b1b383..ce739b896c8ffcd19c044972f798e657 MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon( -@@ -579,7 +580,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -620,7 +621,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment .show(getActivity(), getString(R.string.help_context_privacy), null); return true; } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-settings-search-SearchIndexProviderRegistry.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-settings-search-SearchIndexProviderRegistry.java.patch index a3d8c15e074..d89213b5537 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-settings-search-SearchIndexProviderRegistry.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-settings-search-SearchIndexProviderRegistry.java.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/search/SearchIndexProviderRegistry.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/search/SearchIndexProviderRegistry.java -index f1c6e7c3cc6b6896b8d07eb0e942178444a8c2eb..fbcade3f97e29a3e9d11d9ffafeb5a6be257f56b 100644 +index c539021cac45f33ba567b6f689d52cd6011a48fa..732136452932f96ba3a664aa9631adbe46f1c538 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/search/SearchIndexProviderRegistry.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/search/SearchIndexProviderRegistry.java @@ -26,7 +26,7 @@ public final class SearchIndexProviderRegistry { @@ -11,7 +11,7 @@ index f1c6e7c3cc6b6896b8d07eb0e942178444a8c2eb..fbcade3f97e29a3e9d11d9ffafeb5a6b org.chromium.chrome.browser.about_settings.AboutChromeSettings .SEARCH_INDEX_DATA_PROVIDER, org.chromium.chrome.browser.toolbar.adaptive.settings -@@ -98,8 +98,6 @@ public final class SearchIndexProviderRegistry { +@@ -100,8 +100,6 @@ public final class SearchIndexProviderRegistry { .SEARCH_INDEX_DATA_PROVIDER, org.chromium.chrome.browser.autofill.settings.AndroidPaymentAppsFragment .SEARCH_INDEX_DATA_PROVIDER, @@ -20,7 +20,7 @@ index f1c6e7c3cc6b6896b8d07eb0e942178444a8c2eb..fbcade3f97e29a3e9d11d9ffafeb5a6b org.chromium.chrome.browser.autofill.settings.AutofillBuyNowPayLaterFragment .SEARCH_INDEX_DATA_PROVIDER, org.chromium.chrome.browser.autofill.settings.AutofillCardBenefitsFragment -@@ -116,14 +114,10 @@ public final class SearchIndexProviderRegistry { +@@ -120,14 +118,10 @@ public final class SearchIndexProviderRegistry { .SEARCH_INDEX_DATA_PROVIDER, org.chromium.chrome.browser.ssl.HttpsFirstModeSettingsFragment .SEARCH_INDEX_DATA_PROVIDER, @@ -35,7 +35,7 @@ index f1c6e7c3cc6b6896b8d07eb0e942178444a8c2eb..fbcade3f97e29a3e9d11d9ffafeb5a6b org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment .SEARCH_INDEX_DATA_PROVIDER, org.chromium.chrome.browser.tasks.tab_management.TabsSettings -@@ -141,5 +135,55 @@ public final class SearchIndexProviderRegistry { +@@ -145,5 +139,55 @@ public final class SearchIndexProviderRegistry { org.chromium.chrome.browser.tracing.settings.TracingSettings .SEARCH_INDEX_DATA_PROVIDER, org.chromium.chrome.browser.tracing.settings.TracingCategoriesSettings diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-sync-settings-ManageSyncSettings.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-sync-settings-ManageSyncSettings.java.patch index 5c7c80e4dc3..44db178f31a 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-sync-settings-ManageSyncSettings.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-sync-settings-ManageSyncSettings.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java -index bdc44a47df82f729f183d11b16dd7a921d4245bd..79f1a18bef8e94b653f3989d4311ac4a63fc96ca 100644 +index b8a50b3999318cdab31d7b285976a95c7ea88740..e4f085d55b5e2cf9d68937c62243271aa14d117c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java -@@ -65,7 +65,7 @@ import org.chromium.chrome.browser.ui.signin.SignOutCoordinator; +@@ -63,7 +63,7 @@ import org.chromium.chrome.browser.ui.signin.SignOutCoordinator; import org.chromium.chrome.browser.ui.signin.SigninUtils; import org.chromium.chrome.browser.ui.signin.SignoutButtonPreference; import org.chromium.chrome.browser.ui.signin.history_sync.HistorySyncHelper; @@ -11,7 +11,7 @@ index bdc44a47df82f729f183d11b16dd7a921d4245bd..79f1a18bef8e94b653f3989d4311ac4a import org.chromium.components.browser_ui.settings.ChromeBasePreference; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.SettingsUtils; -@@ -628,6 +628,7 @@ public class ManageSyncSettings extends ChromeBaseSettingsFragment +@@ -622,6 +622,7 @@ public class ManageSyncSettings extends ChromeBaseSettingsFragment */ private void updateSyncPreferences() { String signedInAccountName = diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch index 87cf3485737..4b817009027 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-toolbar-ToolbarManager.java.patch @@ -1,8 +1,8 @@ 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 -index 9280b8e2c31d28922ced57f04f58a1531017ebba..8fb9072c60414807bc4b91516a7a800e0a3fc09f 100644 +index f872f7819bc7e16bdd16f663295ae52c46098195..3222e9559258594290fc367542195fdc1a54ef7c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -1796,7 +1796,7 @@ public class ToolbarManager +@@ -1862,7 +1862,7 @@ public class ToolbarManager return mOmniboxFocusStateSupplier.get() || (mToolbarPositionController != null && mToolbarPositionController.doesPrefMismatchPosition()) @@ -10,4 +10,4 @@ index 9280b8e2c31d28922ced57f04f58a1531017ebba..8fb9072c60414807bc4b91516a7a800e + ; } - private void back(int metaState) { + private void back(int metaState, int buttonState) { diff --git a/patches/chrome-browser-BUILD.gn.patch b/patches/chrome-browser-BUILD.gn.patch index 8db7b272dd5..59b7e5d56a4 100644 --- a/patches/chrome-browser-BUILD.gn.patch +++ b/patches/chrome-browser-BUILD.gn.patch @@ -1,17 +1,17 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 969c2af4439e4a534ad935dd09c0324a12e81829..1302c1894a0f882cee7ad0d61f8c50c69db25728 100644 +index 97b17f850c30d38216224bcd0e6d1a47efeaceb5..8847b24521319932c2cd8797b54ea7fbc66f4238 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2510,6 +2510,7 @@ static_library("browser") { +@@ -2360,6 +2360,7 @@ static_library("browser") { } else { sources += [ "net/net_error_diagnostics_dialog_stub.cc" ] } + import("//brave/browser/sources.gni") sources += brave_chrome_browser_sources deps += brave_chrome_browser_deps public_deps += brave_chrome_browser_public_deps allow_circular_includes_from += brave_chrome_browser_allow_circular_includes_from if (is_android) { - sources += [ -@@ -8451,6 +8452,7 @@ static_library("browser_public_dependencies") { - "//rlz:rlz_lib", + deps += [ +@@ -7753,6 +7754,7 @@ group("browser_public_dependencies") { + "//components/offline_pages/core/background:background_offliner", ] } + import("//brave/browser/sources.gni") public_deps += brave_chrome_browser_public_deps diff --git a/patches/chrome-browser-about_flags.cc.patch b/patches/chrome-browser-about_flags.cc.patch index 54d03f81a26..42db6ee8302 100644 --- a/patches/chrome-browser-about_flags.cc.patch +++ b/patches/chrome-browser-about_flags.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc -index 016ba0e25ff2b6dabca957a27bd4953b808b0740..572ea27072a20bc9ebd0f6193aec29186e0602d6 100644 +index a3cce33221b436370994f62a50ece2c32837954b..12567f903dc6df41408a4bc050860dc5ceb3e5cb 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -4824,6 +4824,7 @@ const FeatureEntry::FeatureVariation kSigninPromoOnAvatarPillVariation[] = { +@@ -4651,6 +4651,7 @@ const FeatureEntry::FeatureVariation // // When adding a new choice, add it to the end of the list. const FeatureEntry kFeatureEntries[] = { diff --git a/patches/chrome-browser-android-browsing_data-browsing_data_bridge.cc.patch b/patches/chrome-browser-android-browsing_data-browsing_data_bridge.cc.patch index 0e33dd3472b..d077fcfb4bc 100644 --- a/patches/chrome-browser-android-browsing_data-browsing_data_bridge.cc.patch +++ b/patches/chrome-browser-android-browsing_data-browsing_data_bridge.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc -index afb691dd65b1ca382b64a4b598a261bcbe7505bc..b7c74421d99288b99097ace493be97a35b1fe776 100644 +index 0fde3c98dcaed2d75ba7ba2d5e8d0fd005c7a98a..899038b03cea38dd498a17a8367e0631301a37d6 100644 --- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc +++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc -@@ -119,6 +119,7 @@ static void JNI_BrowsingDataBridge_ClearBrowsingData( +@@ -118,6 +118,7 @@ static void JNI_BrowsingDataBridge_ClearBrowsingData( remove_mask |= chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS; break; case browsing_data::BrowsingDataType::DOWNLOADS: diff --git a/patches/chrome-browser-app_controller_mac.mm.patch b/patches/chrome-browser-app_controller_mac.mm.patch index 0d753fd1545..6a477bbb2dd 100644 --- a/patches/chrome-browser-app_controller_mac.mm.patch +++ b/patches/chrome-browser-app_controller_mac.mm.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm -index 50ceb7af41fca9feaefeb7dd34b505c5bef8f375..4a231f1ba56bdcc00f0c332fb41488f6d6eba7a1 100644 +index 210308ebaa5de98b31975d62d9f554b7720bb352..fdcded806e612f1061b8bec67d1b45b303ef2642 100644 --- a/chrome/browser/app_controller_mac.mm +++ b/chrome/browser/app_controller_mac.mm @@ -748,7 +748,7 @@ class AppControllerProfileObserver : public ProfileAttributesStorage::Observer, @@ -11,7 +11,7 @@ index 50ceb7af41fca9feaefeb7dd34b505c5bef8f375..4a231f1ba56bdcc00f0c332fb41488f6 NSApp.delegate = sharedController; return sharedController; }(); -@@ -1420,7 +1420,7 @@ class AppControllerProfileObserver : public ProfileAttributesStorage::Observer, +@@ -1421,7 +1421,7 @@ class AppControllerProfileObserver : public ProfileAttributesStorage::Observer, } auto it = _profileBookmarkMenuBridgeMap.find(profilePath); diff --git a/patches/chrome-browser-bookmarks-android-BUILD.gn.patch b/patches/chrome-browser-bookmarks-android-BUILD.gn.patch index ceca95fc936..6e52493bbbd 100644 --- a/patches/chrome-browser-bookmarks-android-BUILD.gn.patch +++ b/patches/chrome-browser-bookmarks-android-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/bookmarks/android/BUILD.gn b/chrome/browser/bookmarks/android/BUILD.gn -index 4f5eacd5f0dcb3e701f4f40ef7a0ad3213852afc..f5703e201a70f6d4f06b419abbb2e1c19fb6664b 100644 +index 925a592205d14e94bf08d8eb60a76ab230206011..62b3d0c46901608629a40866b3cf931d25fdfe53 100644 --- a/chrome/browser/bookmarks/android/BUILD.gn +++ b/chrome/browser/bookmarks/android/BUILD.gn -@@ -37,6 +37,7 @@ source_set("impl") { +@@ -38,6 +38,7 @@ source_set("impl") { "//components/query_parser", "//components/undo", ] @@ -10,7 +10,7 @@ index 4f5eacd5f0dcb3e701f4f40ef7a0ad3213852afc..f5703e201a70f6d4f06b419abbb2e1c1 } android_resources("java_resources") { -@@ -103,6 +104,7 @@ android_library("java") { +@@ -104,6 +105,7 @@ android_library("java") { "java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarViewBinder.java", "java/src/org/chromium/chrome/browser/bookmarks/bar/BookmarkBarVisibilityProvider.java", ] diff --git a/patches/chrome-browser-browser_process_impl.h.patch b/patches/chrome-browser-browser_process_impl.h.patch index 96ee11d5316..cc02c7f7ef2 100644 --- a/patches/chrome-browser-browser_process_impl.h.patch +++ b/patches/chrome-browser-browser_process_impl.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h -index cfe7efedb177e0fe8be5be821927e11cae5954ba..e041acf3780e24b1d5fe03132e6dd32705c5383e 100644 +index b1a1a39d3decdf109e1965dd5f8da15048d7461d..eadc34d909acbda64d1f740e0c915f4dfda6e52d 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -250,6 +250,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -254,6 +254,7 @@ class BrowserProcessImpl : public BrowserProcess, GlobalFeatures* GetFeatures() override; private: diff --git a/patches/chrome-browser-browsing_data-BUILD.gn.patch b/patches/chrome-browser-browsing_data-BUILD.gn.patch index 5ec40e04952..e04573629c2 100644 --- a/patches/chrome-browser-browsing_data-BUILD.gn.patch +++ b/patches/chrome-browser-browsing_data-BUILD.gn.patch @@ -1,10 +1,12 @@ diff --git a/chrome/browser/browsing_data/BUILD.gn b/chrome/browser/browsing_data/BUILD.gn -index aaaea726ed8edbdd1593cf61705dcbe152aafcd1..986872045fd7ea39080c9fdfcf9c1c48ac5f29c6 100644 +index e9b5e52694f3bab715b5cd2c89c0d0b6cbba0aa1..6354b47d7b8241f9eb2ec4c10e2372852a6cb1d1 100644 --- a/chrome/browser/browsing_data/BUILD.gn +++ b/chrome/browser/browsing_data/BUILD.gn -@@ -9,4 +9,5 @@ source_set("constants") { +@@ -9,6 +9,7 @@ source_set("constants") { "//content/public/browser", "//extensions/buildflags", ] + public_deps = [ "//brave/components/ai_chat/core/common/buildflags" ] } + + source_set("browsing_data") { diff --git a/patches/chrome-browser-browsing_data-chrome_browsing_data_remover_delegate.cc.patch b/patches/chrome-browser-browsing_data-chrome_browsing_data_remover_delegate.cc.patch index 375987556e1..6e4711ea5b3 100644 --- a/patches/chrome-browser-browsing_data-chrome_browsing_data_remover_delegate.cc.patch +++ b/patches/chrome-browser-browsing_data-chrome_browsing_data_remover_delegate.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc -index 9c3d04b24d786c7fa72a702b68c22678fc5ac602..a1c9be974801aad1723e13cd27e4312eb8db8df6 100644 +index b528b947f7018b12e45e80b19f67bf0efb9c5489..f28dd51c094c7f6db2d19538e7cdc3818753408a 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc -@@ -1620,6 +1620,7 @@ const char* ChromeBrowsingDataRemoverDelegate::GetHistogramSuffix( +@@ -1626,6 +1626,7 @@ const char* ChromeBrowsingDataRemoverDelegate::GetHistogramSuffix( return "WebrtcVideoPerfHistory"; case TracingDataType::kMediaDeviceSalts: return "MediaDeviceSalts"; diff --git a/patches/chrome-browser-chrome_browser_main_mac.mm.patch b/patches/chrome-browser-chrome_browser_main_mac.mm.patch index 507234184cc..a4b9dc3dfeb 100644 --- a/patches/chrome-browser-chrome_browser_main_mac.mm.patch +++ b/patches/chrome-browser-chrome_browser_main_mac.mm.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/chrome_browser_main_mac.mm b/chrome/browser/chrome_browser_main_mac.mm -index 72445161880b95b6ce7f5ea25692d63c774fca70..b0c3db63fc3fd4cbf50e3f11ab38d8b9b15cb168 100644 +index f0ffab06679024d5d455d084d12655c5c700da88..44210cab62890beb1a9b24017c30e336d5e15b78 100644 --- a/chrome/browser/chrome_browser_main_mac.mm +++ b/chrome/browser/chrome_browser_main_mac.mm -@@ -103,6 +103,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -102,6 +102,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { // ChromeBrowserMainParts should have loaded the resource bundle by this // point (needed to load the nib). CHECK(ui::ResourceBundle::HasSharedInstance()); diff --git a/patches/chrome-browser-content_settings-BUILD.gn.patch b/patches/chrome-browser-content_settings-BUILD.gn.patch index 47cdf28c894..2addb6bb19e 100644 --- a/patches/chrome-browser-content_settings-BUILD.gn.patch +++ b/patches/chrome-browser-content_settings-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/content_settings/BUILD.gn b/chrome/browser/content_settings/BUILD.gn -index cec67ed273312856031056f6765ce9c196e22ebe..be2cc6c8c66427f06b4518e8000a7c69dabb5dcb 100644 +index 4f8d86fd41a8066bf440c2a6512636fff19fc84f..e814c9286e19e12a67ad836e7c62014563347959 100644 --- a/chrome/browser/content_settings/BUILD.gn +++ b/chrome/browser/content_settings/BUILD.gn @@ -131,6 +131,7 @@ source_set("impl") { @@ -10,3 +10,11 @@ index cec67ed273312856031056f6765ce9c196e22ebe..be2cc6c8c66427f06b4518e8000a7c69 } # Fixes circular deps with different components. For example - +@@ -340,6 +341,7 @@ source_set("unit_tests") { + if (is_android) { + sources += [ "javascript_optimizer_provider_android_unittest.cc" ] + deps += [ "//chrome/browser/android:tabs_public" ] ++ import("//brave/browser/content_settings/sources.gni") deps += brave_browser_content_settings_unit_tests_deps + } else { + sources += [ + "generated_cookie_prefs_unittest.cc", diff --git a/patches/chrome-browser-contextual_tasks-contextual_tasks_panel_host_desktop_impl_unittest.cc.patch b/patches/chrome-browser-contextual_tasks-contextual_tasks_panel_host_desktop_unittest.cc.patch similarity index 62% rename from patches/chrome-browser-contextual_tasks-contextual_tasks_panel_host_desktop_impl_unittest.cc.patch rename to patches/chrome-browser-contextual_tasks-contextual_tasks_panel_host_desktop_unittest.cc.patch index 81cd8d8061d..92e920782f4 100644 --- a/patches/chrome-browser-contextual_tasks-contextual_tasks_panel_host_desktop_impl_unittest.cc.patch +++ b/patches/chrome-browser-contextual_tasks-contextual_tasks_panel_host_desktop_unittest.cc.patch @@ -1,7 +1,7 @@ -diff --git a/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc b/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc -index d42cde51300932e753e6ca315e17a91cd0830ea9..f53f01890d23d1586a2f0850aed051a6f8a435a8 100644 ---- a/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc -+++ b/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_impl_unittest.cc +diff --git a/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc b/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc +index 63d5a40bfc3dbaec0328d9124425ccd28e78921d..7b80dcf0f3b2bed6b299e6eb58b4073969a4b0d9 100644 +--- a/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc ++++ b/chrome/browser/contextual_tasks/contextual_tasks_panel_host_desktop_unittest.cc @@ -97,6 +97,7 @@ class MockSidePanelUI : public SidePanelUI { SetNoDelaysForTesting, (bool no_delays_for_testing), diff --git a/patches/chrome-browser-download-download_target_determiner.cc.patch b/patches/chrome-browser-download-download_target_determiner.cc.patch index f08b090f674..0c00e8a128e 100644 --- a/patches/chrome-browser-download-download_target_determiner.cc.patch +++ b/patches/chrome-browser-download-download_target_determiner.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc -index 1dd2dbabc1fdcc137eb7e8055d77dfe6c7fd80f5..3950fb71b35dfc2554eae164a74c8b8c410452d6 100644 +index 85419457e7749089a1b5e350603e06d36c69799c..5201797bf3650395656bc83d3ced8ff5df72c317 100644 --- a/chrome/browser/download/download_target_determiner.cc +++ b/chrome/browser/download/download_target_determiner.cc -@@ -1222,6 +1222,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel( +@@ -1257,6 +1257,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel( download_->GetDownloadSource() != download::DownloadSource::DRAG_AND_DROP; if (HasPromptedForPath() || confirmation_reason_ != DownloadConfirmationReason::NONE || @@ -10,7 +10,7 @@ index 1dd2dbabc1fdcc137eb7e8055d77dfe6c7fd80f5..3950fb71b35dfc2554eae164a74c8b8c user_approved_path) { // If the "DownloadRestrictions" enterprise policy explicitly disallows the // download, don't let the user gesture bypass the dangerous verdict. -@@ -1262,6 +1263,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel( +@@ -1297,6 +1298,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel( ui::PAGE_TRANSITION_FROM_ADDRESS_BAR) != 0 || (download_->HasUserGesture() && visits == VISITED_REFERRER))) return DownloadFileType::NOT_DANGEROUS; diff --git a/patches/chrome-browser-extensions-BUILD.gn.patch b/patches/chrome-browser-extensions-BUILD.gn.patch index 0ad28de667e..a48d5d02450 100644 --- a/patches/chrome-browser-extensions-BUILD.gn.patch +++ b/patches/chrome-browser-extensions-BUILD.gn.patch @@ -1,12 +1,12 @@ diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn -index c7c960abd7ec51fe64b59cf9b13c91cd499d91a1..45906e8db3a0b4578d910cd09d1996ac5f69be6e 100644 +index 43fd1559eee7603d65d75dd70fd68971c9c2fa15..4aca139b17b5f184581f4e8a10dc5725e2b9e236 100644 --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn -@@ -1570,6 +1570,7 @@ source_set("extensions") { +@@ -1539,6 +1539,7 @@ source_set("extensions") { "api/tabs/app_window_helper.h", ] } + deps += brave_extensions_resources } - proto_library("cws_item_service_proto") { + static_library("test_support") { diff --git a/patches/chrome-browser-extensions-api-developer_private-extension_info_generator.cc.patch b/patches/chrome-browser-extensions-api-developer_private-extension_info_generator.cc.patch index fd63b373c79..cc51e52f4da 100644 --- a/patches/chrome-browser-extensions-api-developer_private-extension_info_generator.cc.patch +++ b/patches/chrome-browser-extensions-api-developer_private-extension_info_generator.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc -index 3905ec19874e708bfe4fa889b64050173e3595cf..f61cc0f405d43931342642a226f80e6333493dbf 100644 +index 3a4f7a305b2021cf26a4ffd6e5dd9480a5e36e34..774cdd3517f97243f4d583fbda3f46e25490d456 100644 --- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc +++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc -@@ -710,6 +710,7 @@ void ExtensionInfoGenerator::FillExtensionInfo(const Extension& extension, +@@ -711,6 +711,7 @@ void ExtensionInfoGenerator::FillExtensionInfo(const Extension& extension, #else info.incognito_access_pending_change = false; #endif diff --git a/patches/chrome-browser-extensions-extension_management.cc.patch b/patches/chrome-browser-extensions-extension_management.cc.patch index 167a94d80bb..cfd4b3ee740 100644 --- a/patches/chrome-browser-extensions-extension_management.cc.patch +++ b/patches/chrome-browser-extensions-extension_management.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc -index 2c809ad23947326b86b5523773cf9159915429cb..fb935ac5bad888fc7e0ad7b39090a3e49b100ea7 100644 +index bea1864156f76066fe88de154d06ef5070f6f0ac..db566cc780aedaf97233ebd36bf7938d8916c47b 100644 --- a/chrome/browser/extensions/extension_management.cc +++ b/chrome/browser/extensions/extension_management.cc -@@ -1146,6 +1146,7 @@ ExtensionManagementFactory::BuildServiceInstanceForBrowserContext( +@@ -1147,6 +1147,7 @@ ExtensionManagementFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { TRACE_EVENT0("browser,startup", "ExtensionManagementFactory::BuildServiceInstanceFor"); diff --git a/patches/chrome-browser-extensions-updater-extension_updater.cc.patch b/patches/chrome-browser-extensions-updater-extension_updater.cc.patch index 9ea252ab9ac..74a8f33ee66 100644 --- a/patches/chrome-browser-extensions-updater-extension_updater.cc.patch +++ b/patches/chrome-browser-extensions-updater-extension_updater.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/browser/extensions/updater/extension_updater.cc -index 0c6620892582a44fe5e5e951af120a4ae70c67f5..ce6ec8c55829861dac97aa1485e05a1d76d4ad5e 100644 +index bd09a394594415cdc7a61ec525bca97bcd8acc7a..424c25682c9aa3d932fc0a49ea2f66b555f8b114 100644 --- a/chrome/browser/extensions/updater/extension_updater.cc +++ b/chrome/browser/extensions/updater/extension_updater.cc -@@ -231,6 +231,7 @@ void ExtensionUpdater::Start() { +@@ -232,6 +232,7 @@ void ExtensionUpdater::Start() { alive_ = true; // Check soon, and set up the first delayed check. if (!g_skip_scheduled_checks_for_tests) { @@ -10,7 +10,7 @@ index 0c6620892582a44fe5e5e951af120a4ae70c67f5..ce6ec8c55829861dac97aa1485e05a1d CheckSoon(); ScheduleNextCheck(); } -@@ -271,6 +272,7 @@ void ExtensionUpdater::NextCheck() { +@@ -272,6 +273,7 @@ void ExtensionUpdater::NextCheck() { if (!alive_) { return; } diff --git a/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch b/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch index c08b4a898b8..049f93f62d4 100644 --- a/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch +++ b/patches/chrome-browser-external_protocol-external_protocol_handler.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/external_protocol/external_protocol_handler.cc b/chrome/browser/external_protocol/external_protocol_handler.cc -index 06f8567338cad92e86ac46aa9ba14f515d028f8c..9351812b2548a3db556877294943bf28eb97a16a 100644 +index 616edcd73eb547763621206dc97d762dd516f43f..c9253c5613bef48ad0bf68e19aecff6a129d4678 100644 --- a/chrome/browser/external_protocol/external_protocol_handler.cc +++ b/chrome/browser/external_protocol/external_protocol_handler.cc -@@ -415,7 +415,7 @@ ExternalProtocolHandler::BlockState ExternalProtocolHandler::GetBlockState( +@@ -435,7 +435,7 @@ ExternalProtocolHandler::BlockState ExternalProtocolHandler::GetBlockState( if (scheme == "mailto") { base::UmaHistogramEnumeration(kBlockStateMetric, BlockStateMetric::kAllowedDefaultMail); diff --git a/patches/chrome-browser-global_features.cc.patch b/patches/chrome-browser-global_features.cc.patch index 7fa43ef5555..3ed35afdc47 100644 --- a/patches/chrome-browser-global_features.cc.patch +++ b/patches/chrome-browser-global_features.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/global_features.cc b/chrome/browser/global_features.cc -index ef13b8f57457c08bec8d3dc17bfb730945bb6c52..1baa60d6f499167ab5e9a3baefa34df6694dddeb 100644 +index 92ef5a35d16a163bf3ffedb6a78359e4ac8ade27..1bf78288e321045c6d8114b5b20e59ee0032100f 100644 --- a/chrome/browser/global_features.cc +++ b/chrome/browser/global_features.cc @@ -71,6 +71,7 @@ diff --git a/patches/chrome-browser-global_keyboard_shortcuts_mac.mm.patch b/patches/chrome-browser-global_keyboard_shortcuts_mac.mm.patch index e3104c002f2..3d5058f09a1 100644 --- a/patches/chrome-browser-global_keyboard_shortcuts_mac.mm.patch +++ b/patches/chrome-browser-global_keyboard_shortcuts_mac.mm.patch @@ -1,11 +1,11 @@ diff --git a/chrome/browser/global_keyboard_shortcuts_mac.mm b/chrome/browser/global_keyboard_shortcuts_mac.mm -index 7619c454163c18864f828b953d8b3b0e8c5b1bbc..57e864f28a3a95a4af1c9ecdf75bbc99ac43e56b 100644 +index bc8c1e5d952c1c487411e4577a58ac661a707cdb..2617785d728504b389089ccdcb5e08f5c79ebca7 100644 --- a/chrome/browser/global_keyboard_shortcuts_mac.mm +++ b/chrome/browser/global_keyboard_shortcuts_mac.mm -@@ -150,6 +150,7 @@ const std::vector& GetShortcutsNotPresentInMainMenu() { - {true, false, false, true, kVK_DownArrow, IDC_FOCUS_NEXT_PANE}, +@@ -151,6 +151,7 @@ const std::vector& GetShortcutsNotPresentInMainMenu() { {true, false, false, true, kVK_UpArrow, IDC_FOCUS_PREVIOUS_PANE}, {true, true, false, true, kVK_ANSI_A, IDC_FOCUS_INACTIVE_POPUP_FOR_ACCESSIBILITY}, + {true, false, false, true, kVK_ANSI_R, IDC_SHOW_READING_MODE_KEYBOARD}, + {true, false, false, true, kVK_ANSI_N, IDC_NEW_OFFTHERECORD_WINDOW_TOR}, }); // clang-format on diff --git a/patches/chrome-browser-hub-internal-BUILD.gn.patch b/patches/chrome-browser-hub-internal-BUILD.gn.patch index 3969759198d..8e7fef0d6c2 100644 --- a/patches/chrome-browser-hub-internal-BUILD.gn.patch +++ b/patches/chrome-browser-hub-internal-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/BUILD.gn -index 93beb778a450109024a263fa35af1717d7acb412..765d17bc07426bd196a888aee0011ff1edcb9ec7 100644 +index b93a8de5307b8189042509414e56654afa6f612a..bd6d4e4e858742430088967941d975fdf49e887b 100644 --- a/chrome/browser/hub/internal/BUILD.gn +++ b/chrome/browser/hub/internal/BUILD.gn -@@ -103,6 +103,7 @@ android_library("java") { +@@ -107,6 +107,7 @@ android_library("java") { "//ui/edge_to_edge:java", "//url:url_java", ] diff --git a/patches/chrome-browser-importer-BUILD.gn.patch b/patches/chrome-browser-importer-BUILD.gn.patch index 4583b713866..1765cd2e511 100644 --- a/patches/chrome-browser-importer-BUILD.gn.patch +++ b/patches/chrome-browser-importer-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/importer/BUILD.gn b/chrome/browser/importer/BUILD.gn -index 0b36e87039987f567294e9a9785583e32f46a5fa..bf8cb3c79264ff713ffd58654bf052789f31849b 100644 +index 32fc9a91254aab0ba409c2956cde8b0120954110..b7a09d5f0a1e38466cab57f38f76bc9c5774eadf 100644 --- a/chrome/browser/importer/BUILD.gn +++ b/chrome/browser/importer/BUILD.gn @@ -31,6 +31,7 @@ source_set("importer") { diff --git a/patches/chrome-browser-metrics-chrome_feature_list_creator.cc.patch b/patches/chrome-browser-metrics-chrome_feature_list_creator.cc.patch index 290ad3ff2f1..ba39f6a2da3 100644 --- a/patches/chrome-browser-metrics-chrome_feature_list_creator.cc.patch +++ b/patches/chrome-browser-metrics-chrome_feature_list_creator.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/browser/metrics/chrome_feature_list_creator.cc -index c8ab55cf0bb3f347fcd826c054eff3b1c1cf5e39..c09bb2979c9831320e0d565675964ca2dce5ad52 100644 +index d45b2a9314e60f65cb62e46592812ba315a33245..fd7b551b1dc36390d9ea0743566316cf832636d6 100644 --- a/chrome/browser/metrics/chrome_feature_list_creator.cc +++ b/chrome/browser/metrics/chrome_feature_list_creator.cc -@@ -351,5 +351,6 @@ void ChromeFeatureListCreator::SetupInitialPrefs() { +@@ -338,5 +338,6 @@ void ChromeFeatureListCreator::SetupInitialPrefs() { local_state_->SetTime(variations::prefs::kVariationsSeedDate, base::Time::Now()); } diff --git a/patches/chrome-browser-net-profile_network_context_service.cc.patch b/patches/chrome-browser-net-profile_network_context_service.cc.patch index de951088572..8736eeb69b3 100644 --- a/patches/chrome-browser-net-profile_network_context_service.cc.patch +++ b/patches/chrome-browser-net-profile_network_context_service.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc -index 226a3863950c14af54207906899008d2491f8a27..ef11df29a9d8698eb6c7ba567f01b673c5cab744 100644 +index 7fed54f2fd0789b2deaa51577882935e35a95351..bdcafa7f9f32674dc61082045eba18913a537d76 100644 --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -723,6 +723,7 @@ network::mojom::CTPolicyPtr ProfileNetworkContextService::GetCTPolicy() { +@@ -747,6 +747,7 @@ network::mojom::CTPolicyPtr ProfileNetworkContextService::GetCTPolicy() { std::vector excluded_spkis( TranslateStringArray(ct_excluded_spkis)); diff --git a/patches/chrome-browser-net-system_network_context_manager.cc.patch b/patches/chrome-browser-net-system_network_context_manager.cc.patch index 83d64dbd50b..70a7ef3633e 100644 --- a/patches/chrome-browser-net-system_network_context_manager.cc.patch +++ b/patches/chrome-browser-net-system_network_context_manager.cc.patch @@ -1,10 +1,10 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc -index 6cd82a8e621a6bedbd4b538154613cfe69831f07..83c23bd665c30e9e450962ea720a5716967f7051 100644 +index d69e5334e67a43f211523c92fb11de19e7ced513..d28fc786a9bba0db1d17d70b6dbecb2cbe8a6ad5 100644 --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -478,7 +478,7 @@ class SystemNetworkContextManager::URLLoaderFactoryForSystem - if (!manager_) +@@ -476,7 +476,7 @@ class SystemNetworkContextManager::URLLoaderFactoryForSystem return; + } manager_->GetURLLoaderFactory()->CreateLoaderAndStart( - std::move(receiver), request_id, options, url_request, + std::move(receiver), request_id, options, BRAVE_CREATE_LOADER_AND_START, diff --git a/patches/chrome-browser-notifications-android-java-src-org-chromium-chrome-browser-notifications-channels-ChromeChannelDefinitions.java.patch b/patches/chrome-browser-notifications-android-java-src-org-chromium-chrome-browser-notifications-channels-ChromeChannelDefinitions.java.patch index 3062ac91abe..f29fe801ab7 100644 --- a/patches/chrome-browser-notifications-android-java-src-org-chromium-chrome-browser-notifications-channels-ChromeChannelDefinitions.java.patch +++ b/patches/chrome-browser-notifications-android-java-src-org-chromium-chrome-browser-notifications-channels-ChromeChannelDefinitions.java.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions.java b/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions.java -index a1d4a79ba55d6fb968f632302f49860212b20a75..29d02f6d11bbe816e3d0f5eb3875087179da6735 100644 +index e52e4d8cc424d03ee078761d2960762e766bdf73..2c94328c7a39da1ef09bedb8140d903bb560aa31 100644 --- a/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions.java +++ b/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions.java @@ -75,6 +75,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { @@ -10,7 +10,7 @@ index a1d4a79ba55d6fb968f632302f49860212b20a75..29d02f6d11bbe816e3d0f5eb38750871 ChannelId.MEDIA_PLAYBACK, ChannelId.SCREEN_CAPTURE, ChannelId.CONTENT_SUGGESTIONS, -@@ -142,7 +143,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { +@@ -144,7 +145,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { // ) // clang-format on @@ -19,7 +19,7 @@ index a1d4a79ba55d6fb968f632302f49860212b20a75..29d02f6d11bbe816e3d0f5eb38750871 @Retention(RetentionPolicy.SOURCE) public @interface ChannelGroupId { String SITES = "sites"; -@@ -170,6 +171,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { +@@ -172,6 +173,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { Map map = new HashMap<>(); Set startup = new HashSet<>(); @@ -27,7 +27,7 @@ index a1d4a79ba55d6fb968f632302f49860212b20a75..29d02f6d11bbe816e3d0f5eb38750871 map.put( ChannelId.BROWSER, PredefinedChannel.create( -@@ -414,6 +416,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { +@@ -426,6 +428,7 @@ public class ChromeChannelDefinitions extends ChannelDefinitions { static { Map map = new HashMap<>(); diff --git a/patches/chrome-browser-notifications-notification_display_service_impl.cc.patch b/patches/chrome-browser-notifications-notification_display_service_impl.cc.patch index 4a6c6e5dc2d..2b8930fd8ca 100644 --- a/patches/chrome-browser-notifications-notification_display_service_impl.cc.patch +++ b/patches/chrome-browser-notifications-notification_display_service_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/notifications/notification_display_service_impl.cc b/chrome/browser/notifications/notification_display_service_impl.cc -index bba7b7b6f668f7c3b7b4ebe27f8b54451817b4b8..3391dd99f0449b5450e9cd4acc8df920934dcb0f 100644 +index c185575c57d0f0e72edc3c9bcfc5874e4c2a63dd..0632480d7827cf594eb696db0237068e6c3ccd32 100644 --- a/chrome/browser/notifications/notification_display_service_impl.cc +++ b/chrome/browser/notifications/notification_display_service_impl.cc -@@ -133,6 +133,7 @@ NotificationDisplayServiceImpl::NotificationDisplayServiceImpl(Profile* profile) +@@ -124,6 +124,7 @@ NotificationDisplayServiceImpl::NotificationDisplayServiceImpl(Profile* profile) std::make_unique()); } #endif diff --git a/patches/chrome-browser-password_manager-android-BUILD.gn.patch b/patches/chrome-browser-password_manager-android-BUILD.gn.patch index 4ec7ca27027..897203b4d90 100644 --- a/patches/chrome-browser-password_manager-android-BUILD.gn.patch +++ b/patches/chrome-browser-password_manager-android-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn -index 032dddbd35beb6673c9466f04e8021fefe0dea9f..fd929399bb1eacf0648703c55bcc000f7a4d7f1c 100644 +index 2c597b1a2ffd057030e797026e5b809512705262..f0c01f8c9c5e35ede2b906740e886a35ffb5afb7 100644 --- a/chrome/browser/password_manager/android/BUILD.gn +++ b/chrome/browser/password_manager/android/BUILD.gn -@@ -189,6 +189,7 @@ android_library("java") { +@@ -188,6 +188,7 @@ android_library("java") { ] resources_package = "org.chromium.chrome.browser.password_manager" @@ -10,7 +10,7 @@ index 032dddbd35beb6673c9466f04e8021fefe0dea9f..fd929399bb1eacf0648703c55bcc000f } generate_jni("jni_headers") { -@@ -209,6 +210,7 @@ generate_jni("jni_headers") { +@@ -208,6 +209,7 @@ generate_jni("jni_headers") { "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreCredential.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java", ] diff --git a/patches/chrome-browser-policy-profile_policy_connector.cc.patch b/patches/chrome-browser-policy-profile_policy_connector.cc.patch index d9819c12777..c4a9627d67d 100644 --- a/patches/chrome-browser-policy-profile_policy_connector.cc.patch +++ b/patches/chrome-browser-policy-profile_policy_connector.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/policy/profile_policy_connector.cc b/chrome/browser/policy/profile_policy_connector.cc -index b75d2454396c6d9c7e5f822a825667b93d20bdfe..fdb171b8909e1599cfd534db4d57308260171ba7 100644 +index cc4e20ff2a998c696fd22566ff71f777388a3f2d..98b510e6a87a1a7c59c4db994fc34abfcab015ed 100644 --- a/chrome/browser/policy/profile_policy_connector.cc +++ b/chrome/browser/policy/profile_policy_connector.cc -@@ -443,6 +443,7 @@ void ProfilePolicyConnector::Init( +@@ -548,6 +548,7 @@ void ProfilePolicyConnector::Init( } #endif diff --git a/patches/chrome-browser-prefs-BUILD.gn.patch b/patches/chrome-browser-prefs-BUILD.gn.patch index 45fffce19b7..a08b7caa8b8 100644 --- a/patches/chrome-browser-prefs-BUILD.gn.patch +++ b/patches/chrome-browser-prefs-BUILD.gn.patch @@ -1,12 +1,12 @@ diff --git a/chrome/browser/prefs/BUILD.gn b/chrome/browser/prefs/BUILD.gn -index c9f76e7418faaa56ec5025d5689649a648f4d326..a2a5d01a92339eec4d94aa1a2049f1cde041675c 100644 +index 8d26ff42799fa78c02a2fb52c8c7785662de4180..3856cb5ff6505aa98a66bbdefe668bcace8d7d17 100644 --- a/chrome/browser/prefs/BUILD.gn +++ b/chrome/browser/prefs/BUILD.gn -@@ -170,6 +170,7 @@ source_set("impl") { +@@ -180,6 +180,7 @@ source_set("impl") { "//services/preferences/tracked", "//services/preferences/tracked:features", ] + import("//brave/browser/sources.gni") deps += brave_chrome_browser_prefs_impl_deps - if (enable_extensions_core) { - deps += [ "//extensions/common" ] + if (enable_print_preview) { + deps += [ "//chrome/browser/printing" ] diff --git a/patches/chrome-browser-prefs-browser_prefs.cc.patch b/patches/chrome-browser-prefs-browser_prefs.cc.patch index 2f8c7150b13..dfc7b8f2ea7 100644 --- a/patches/chrome-browser-prefs-browser_prefs.cc.patch +++ b/patches/chrome-browser-prefs-browser_prefs.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc -index ad6b592b4740392044d151801c80bbf92e7c0f55..290199413b5517fdd3aadea92de10bf1f42f82d5 100644 +index 4c7ad0aaa2347e87fd2dcb0027659afe06ab8566..c4695c015ea1ed8331ebcaa08b1086c8c967f458 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -1723,6 +1723,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1664,6 +1664,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { false); // This is intentionally last. @@ -10,7 +10,7 @@ index ad6b592b4740392044d151801c80bbf92e7c0f55..290199413b5517fdd3aadea92de10bf1 RegisterLocalStatePrefsForMigration(registry); } -@@ -2220,6 +2221,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2172,6 +2173,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #endif // BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kStaticStorageQuotaEnabled, false); @@ -18,7 +18,7 @@ index ad6b592b4740392044d151801c80bbf92e7c0f55..290199413b5517fdd3aadea92de10bf1 } void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { -@@ -2642,6 +2644,7 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, +@@ -2527,6 +2529,7 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_prefs->ClearPref(kObsoletePasswordsUseUPMLocalAndSeparateStores); profile_prefs->ClearPref(kObsoleteEmptyProfileStoreLoginDatabase); profile_prefs->ClearPref(kObsoleteUpmAutoExportCsvNeedsDeletion); @@ -26,7 +26,7 @@ index ad6b592b4740392044d151801c80bbf92e7c0f55..290199413b5517fdd3aadea92de10bf1 base::DeleteFile(profile_path.Append(FILE_PATH_LITERAL("Login Data"))); base::DeleteFile( profile_path.Append(FILE_PATH_LITERAL("Login Data For Account"))); -@@ -2649,6 +2652,7 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, +@@ -2534,6 +2537,7 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_path.Append(FILE_PATH_LITERAL("Login Data-journal"))); base::DeleteFile( profile_path.Append(FILE_PATH_LITERAL("Login Data For Account-journal"))); diff --git a/patches/chrome-browser-prefs-chrome_pref_service_factory.cc.patch b/patches/chrome-browser-prefs-chrome_pref_service_factory.cc.patch index 33cb8213d91..b84c1c93937 100644 --- a/patches/chrome-browser-prefs-chrome_pref_service_factory.cc.patch +++ b/patches/chrome-browser-prefs-chrome_pref_service_factory.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc -index 2db4de27556917f5a39ba4f43025bfed268ab671..d5be1b3c73ac5378e7ff2231ee40dd81e7239fa1 100644 +index 0ef703311feb1f5cf4dfd0664ce55dd80a4ba628..b6d46dcdb872c6b59099422c4593a351dbc8560c 100644 --- a/chrome/browser/prefs/chrome_pref_service_factory.cc +++ b/chrome/browser/prefs/chrome_pref_service_factory.cc -@@ -192,6 +192,7 @@ const auto kTrackedPrefs = std::to_array({ +@@ -191,6 +191,7 @@ const auto kTrackedPrefs = std::to_array({ // See note at top, new items added here also need to be added to // histograms.xml's TrackedPreference enum. diff --git a/patches/chrome-browser-profiles-profile_attributes_entry.cc.patch b/patches/chrome-browser-profiles-profile_attributes_entry.cc.patch index 676f04ee9c0..f0b4aaffcce 100644 --- a/patches/chrome-browser-profiles-profile_attributes_entry.cc.patch +++ b/patches/chrome-browser-profiles-profile_attributes_entry.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc -index a02025a7d78b64e2774bd62355666c076c671948..1a0263e55294eae3dd3bbcccf01bdea2f3fed8e6 100644 +index 87f4db2aa47f3b6b69dbce2cfc4092b164fe535d..d557aabe7cc494f876fc517f9f8828e955a16177 100644 --- a/chrome/browser/profiles/profile_attributes_entry.cc +++ b/chrome/browser/profiles/profile_attributes_entry.cc -@@ -1058,6 +1058,7 @@ bool ProfileAttributesEntry::ClearValue(const char* key) { +@@ -1056,6 +1056,7 @@ bool ProfileAttributesEntry::ClearValue(const char* key) { // This method should be periodically pruned of year+ old migrations. void ProfileAttributesEntry::MigrateObsoleteProfileAttributes() { diff --git a/patches/chrome-browser-profiles-profile_impl.cc.patch b/patches/chrome-browser-profiles-profile_impl.cc.patch index d9689ed8c23..55970b51e49 100644 --- a/patches/chrome-browser-profiles-profile_impl.cc.patch +++ b/patches/chrome-browser-profiles-profile_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc -index db97dc1e4813e3dcdfc8173241c17328e4e040cf..b5f86c1745b5a67ed59154a2125005cc9562ec18 100644 +index 6bb023367ec7092507fb25d9382ee978506a4b77..9cce33cca5646bd8def126f5931e9e9b52e72f83 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -570,6 +570,7 @@ void ProfileImpl::TakePrefsFromStartupData() { +@@ -574,6 +574,7 @@ void ProfileImpl::TakePrefsFromStartupData() { CreateExtensionPrefStore(this, /*incognito_pref_store=*/false)); ProfileKeyStartupAccessor::GetInstance()->Reset(); diff --git a/patches/chrome-browser-renderer_context_menu-render_view_context_menu.cc.patch b/patches/chrome-browser-renderer_context_menu-render_view_context_menu.cc.patch index ba73dba3579..d98cf96dbe7 100644 --- a/patches/chrome-browser-renderer_context_menu-render_view_context_menu.cc.patch +++ b/patches/chrome-browser-renderer_context_menu-render_view_context_menu.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc -index 7f23f224a46a4d3fb100adbbfb5c0ae2058406e1..e73f0e4f0cadda0e0e556a7c415e76222b07b3ea 100644 +index 669daf79fa74a1cae798ddc512f1a83e4adb73b3..bac22210fd40e138a071e5a3cc4de7579ec40405 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc -@@ -2515,6 +2515,7 @@ void RenderViewContextMenu::AppendSearchProvider() { +@@ -2516,6 +2516,7 @@ void RenderViewContextMenu::AppendSearchProvider() { if (!selection_navigation_url_.is_valid()) { return; } diff --git a/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch b/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch index 5f9cb3ae62b..a4aaaba461c 100644 --- a/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch +++ b/patches/chrome-browser-renderer_context_menu-render_view_context_menu.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.h b/chrome/browser/renderer_context_menu/render_view_context_menu.h -index 783739ac45bcb0e5373a8736e1359a4e3fadd094..7ffd369f83ad79d5ef988dcad172f836f3c4ef89 100644 +index f9174e34baa1af6ff61fadebc97bd4ebd76a31b2..bd864f1c30331960db27c1674f5ca24d4c512baa 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.h +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.h -@@ -202,6 +202,7 @@ class RenderViewContextMenu +@@ -206,6 +206,7 @@ class RenderViewContextMenu // Returns true if keyboard lock is active and requires the user to press and // hold escape to exit exclusive access mode. bool IsPressAndHoldEscRequiredToExitFullscreen() const; diff --git a/patches/chrome-browser-resources-certificate_manager-certificate_manager.ts.patch b/patches/chrome-browser-resources-certificate_manager-certificate_manager.ts.patch index 170468d5c71..50a42adc86b 100644 --- a/patches/chrome-browser-resources-certificate_manager-certificate_manager.ts.patch +++ b/patches/chrome-browser-resources-certificate_manager-certificate_manager.ts.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/certificate_manager/certificate_manager.ts b/chrome/browser/resources/certificate_manager/certificate_manager.ts -index 36f29e1137ebb11e3cf9e6a28e25b8f87a2383ab..8a3533cabaf4b9f5ba33f0dc3f6af6de636e5285 100644 +index dd49f8d34a3c907d6151f862bab47c708265b861..1657b321ad070ed7d8b9ef0728788959c0db619f 100644 --- a/chrome/browser/resources/certificate_manager/certificate_manager.ts +++ b/chrome/browser/resources/certificate_manager/certificate_manager.ts -@@ -537,4 +537,4 @@ declare global { +@@ -459,4 +459,4 @@ declare global { } } diff --git a/patches/chrome-browser-resources-history-app.html.ts.patch b/patches/chrome-browser-resources-history-app.html.ts.patch index d43eaa6f86d..57b122a3669 100644 --- a/patches/chrome-browser-resources-history-app.html.ts.patch +++ b/patches/chrome-browser-resources-history-app.html.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/history/app.html.ts b/chrome/browser/resources/history/app.html.ts -index c920480cb8e8cb1a51d8ac47c1eab200698e4737..cd4c26e687f6a136a9a643b4ba81a4381835845e 100644 +index 13be39dc75d2bd81bd91cf0cd54ee6063926fc7c..61c161fd67f0c5fae622b86e85d54ff2c0c99185 100644 --- a/chrome/browser/resources/history/app.html.ts +++ b/chrome/browser/resources/history/app.html.ts @@ -54,13 +54,6 @@ export function getHtml(this: HistoryAppElement) { diff --git a/patches/chrome-browser-resources-settings-BUILD.gn.patch b/patches/chrome-browser-resources-settings-BUILD.gn.patch index 07086eedc3e..0770f8c9f9c 100644 --- a/patches/chrome-browser-resources-settings-BUILD.gn.patch +++ b/patches/chrome-browser-resources-settings-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn -index da914af0eb958dce35250b05e2bf01388bd40f5f..26414c95b4f61914b4befdf96a9c02f7657d7948 100644 +index c2759ca2b0f48264becdd095859b110f473e04fe..f863d1795c64f263444e976e568ab7a455eb6984 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -495,4 +495,5 @@ build_webui("build") { +@@ -501,4 +501,5 @@ build_webui("build") { "$root_gen_dir/chrome/browser/resources/settings_shared/tsc", root_build_dir) ] } diff --git a/patches/chrome-browser-resources-settings-clear_browsing_data_dialog-clear_browsing_data_browser_proxy.ts.patch b/patches/chrome-browser-resources-settings-clear_browsing_data_dialog-clear_browsing_data_browser_proxy.ts.patch index b51936de400..593648e39a3 100644 --- a/patches/chrome-browser-resources-settings-clear_browsing_data_dialog-clear_browsing_data_browser_proxy.ts.patch +++ b/patches/chrome-browser-resources-settings-clear_browsing_data_dialog-clear_browsing_data_browser_proxy.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts -index 06ee59bb164f056e507aee6af5a3847a77ef3266..0231c7f3a7037d7498dd27936a1b25413df5995e 100644 +index f29b70ed4083cb8f0ea499f9e75b7cd409ce959c..a7c4391d37f9e246ed5c9088181d98ec0aef0f27 100644 --- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts +++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts @@ -43,6 +43,9 @@ export enum BrowsingDataType { diff --git a/patches/chrome-browser-resources-settings-privacy_page-privacy_page.html.patch b/patches/chrome-browser-resources-settings-privacy_page-privacy_page.html.patch index 6ef1ab9fcdd..360992f7dce 100644 --- a/patches/chrome-browser-resources-settings-privacy_page-privacy_page.html.patch +++ b/patches/chrome-browser-resources-settings-privacy_page-privacy_page.html.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html -index 4aca8addafc30f254582613b3e9c6673e6baf9b2..ad7d62173c682434d252f68c3b35d6743a655f2d 100644 +index 45fc8906030b9ab6e63baaeeff0afe6a46bb35df..f6933f21cb8eda546cc934f9c06248c370d1768c 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html @@ -11,6 +11,7 @@ diff --git a/patches/chrome-browser-resources-settings-privacy_page-privacy_page.ts.patch b/patches/chrome-browser-resources-settings-privacy_page-privacy_page.ts.patch index edd2aab7a2a..19e5298692c 100644 --- a/patches/chrome-browser-resources-settings-privacy_page-privacy_page.ts.patch +++ b/patches/chrome-browser-resources-settings-privacy_page-privacy_page.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -index 4ab4d784d4fe5b04e6e5406e2a4a4c2399292380..c26e1367c1c900e8272dd03a0b480f9268a5b3fb 100644 +index 354fc9e0a39df1e2ab41ad789c60223b3412a095..db269adff4239b9bd8b59aca344238cb44e4bc76 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts @@ -16,6 +16,7 @@ import '../icons.html.js'; diff --git a/patches/chrome-browser-resources-settings-route.ts.patch b/patches/chrome-browser-resources-settings-route.ts.patch index 1e050cae1f6..e96a50a7aca 100644 --- a/patches/chrome-browser-resources-settings-route.ts.patch +++ b/patches/chrome-browser-resources-settings-route.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts -index 687bc78abc1c780c262fb8193fbf034bb87147a4..847c7eb5f878a67ac30d077ed4e5c005513fdcce 100644 +index 1503074a46519e04d7a2a3294e1cd6faaa151fa9..4f064f24aa1e2e5ffa5ccc173eaca7f1bbcc23fa 100644 --- a/chrome/browser/resources/settings/route.ts +++ b/chrome/browser/resources/settings/route.ts @@ -9,6 +9,7 @@ import {pageVisibility} from './page_visibility.js'; @@ -10,7 +10,7 @@ index 687bc78abc1c780c262fb8193fbf034bb87147a4..847c7eb5f878a67ac30d077ed4e5c005 /** * Add all of the child routes that originate from the privacy route, * regardless of whether the privacy section under basic or advanced. -@@ -321,6 +322,7 @@ function createRoutes(): SettingsRoutes { +@@ -322,6 +323,7 @@ function createRoutes(): SettingsRoutes { loadTimeData.getString('performancePageTitle')); } @@ -18,7 +18,7 @@ index 687bc78abc1c780c262fb8193fbf034bb87147a4..847c7eb5f878a67ac30d077ed4e5c005 return r as unknown as SettingsRoutes; } -@@ -354,7 +356,7 @@ export let routes: SettingsRoutes = Router.getInstance().getRoutes(); +@@ -355,7 +357,7 @@ export let routes: SettingsRoutes = Router.getInstance().getRoutes(); // Returns the "effective" route when at chrome://settings/. export function getTopLevelRoute(): Route { if (!loadTimeData.getBoolean('isGuest')) { diff --git a/patches/chrome-browser-resources-settings-router.ts.patch b/patches/chrome-browser-resources-settings-router.ts.patch index ed8717e4711..783f9f0a8cc 100644 --- a/patches/chrome-browser-resources-settings-router.ts.patch +++ b/patches/chrome-browser-resources-settings-router.ts.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts -index 2977bf7cb1d5ad004d8469502aa19c7a6dc13205..513440800bf1d9549b8d5b19c249e52617566543 100644 +index f918f01db06a019b6a75661d4184e7674d10926a..1c44ec5c5be6c5a8ee03667c5514cbefe4a2820b 100644 --- a/chrome/browser/resources/settings/router.ts +++ b/chrome/browser/resources/settings/router.ts -@@ -125,6 +125,7 @@ export interface SettingsRoutes { +@@ -126,6 +126,7 @@ export interface SettingsRoutes { IMPORT_DATA: Route; SIGN_OUT: Route; // diff --git a/patches/chrome-browser-resources-settings-settings.ts.patch b/patches/chrome-browser-resources-settings-settings.ts.patch index 4a960f293c8..d4731ddc8f6 100644 --- a/patches/chrome-browser-resources-settings-settings.ts.patch +++ b/patches/chrome-browser-resources-settings-settings.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/settings.ts b/chrome/browser/resources/settings/settings.ts -index 98b163bfe8829c6597d4862272dbcadb3f9c5470..e5f8feba4b36e2ad63de31064172c1e72c37d7ae 100644 +index f221bf6cd2c42447755aa083e750adbc66a42512..953711267878a4af477d88e4a478ebcdc5ae0a78 100644 --- a/chrome/browser/resources/settings/settings.ts +++ b/chrome/browser/resources/settings/settings.ts @@ -2,6 +2,7 @@ diff --git a/patches/chrome-browser-resources-settings-site_settings-site_settings_browser_proxy.ts.patch b/patches/chrome-browser-resources-settings-site_settings-site_settings_browser_proxy.ts.patch index 8fbb6458e6d..d9dec8aa0a1 100644 --- a/patches/chrome-browser-resources-settings-site_settings-site_settings_browser_proxy.ts.patch +++ b/patches/chrome-browser-resources-settings-site_settings-site_settings_browser_proxy.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_browser_proxy.ts b/chrome/browser/resources/settings/site_settings/site_settings_browser_proxy.ts -index 8756d61d1d83d09a5a55dadc1d21821f5634cda3..225c1854830a0a6593ffd336359278dfb3940773 100644 +index e8c91f37044a84a5867c1185ef38be37f018db12..4a32133b5363f8e5db5461b4a2f51ee4ea7e92cc 100644 --- a/chrome/browser/resources/settings/site_settings/site_settings_browser_proxy.ts +++ b/chrome/browser/resources/settings/site_settings/site_settings_browser_proxy.ts @@ -83,6 +83,7 @@ export interface RawSiteException { diff --git a/patches/chrome-browser-resources-settings_shared-privacy_page-privacy_page_browser_proxy.ts.patch b/patches/chrome-browser-resources-settings_shared-privacy_page-privacy_page_browser_proxy.ts.patch index 84a7fa823f6..e2d69146762 100644 --- a/patches/chrome-browser-resources-settings_shared-privacy_page-privacy_page_browser_proxy.ts.patch +++ b/patches/chrome-browser-resources-settings_shared-privacy_page-privacy_page_browser_proxy.ts.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/settings_shared/privacy_page/privacy_page_browser_proxy.ts b/chrome/browser/resources/settings_shared/privacy_page/privacy_page_browser_proxy.ts -index cd907e7bc607db7f004bf704b627c58099209ab5..3a23f8bb638cc4f16b73c1f642da825f63c18869 100644 +index d45222679dd87714d8e06f98061d0682dc071810..bec508e159ecaac138660fc81eaea2368224ad63 100644 --- a/chrome/browser/resources/settings_shared/privacy_page/privacy_page_browser_proxy.ts +++ b/chrome/browser/resources/settings_shared/privacy_page/privacy_page_browser_proxy.ts -@@ -62,7 +62,7 @@ export interface SecureDnsSetting { +@@ -14,14 +14,14 @@ export interface MetricsReporting { } export interface PrivacyPageBrowserProxy { @@ -10,13 +10,12 @@ index cd907e7bc607db7f004bf704b627c58099209ab5..3a23f8bb638cc4f16b73c1f642da825f + // getMetricsReporting(): Promise; setMetricsReportingEnabled(enabled: boolean): void; - -@@ -84,7 +84,7 @@ export interface PrivacyPageBrowserProxy { + // } export class PrivacyPageBrowserProxyImpl implements PrivacyPageBrowserProxy { - // + // getMetricsReporting() { - return sendWithPromise('getMetricsReporting'); + return sendWithPromise('getMetricsReporting'); } diff --git a/patches/chrome-browser-resources-side_panel-bookmarks-power_bookmarks_list.ts.patch b/patches/chrome-browser-resources-side_panel-bookmarks-power_bookmarks_list.ts.patch index 0dc4f82ff09..af544b67c8f 100644 --- a/patches/chrome-browser-resources-side_panel-bookmarks-power_bookmarks_list.ts.patch +++ b/patches/chrome-browser-resources-side_panel-bookmarks-power_bookmarks_list.ts.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.ts b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.ts -index c9e07b2d289952595ded4d18e542d668137265eb..44fd9ce2311c3ae1ed56a92e079b442c36812800 100644 +index 2fabeb2aac5b27e5c7b9dfd39299328037be7d88..05ed115cadce641daa6446058d10274c9e39e301 100644 --- a/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.ts +++ b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.ts @@ -194,7 +194,8 @@ export class PowerBookmarksListElement extends PolymerElement implements diff --git a/patches/chrome-browser-resources-side_panel-read_anything-BUILD.gn.patch b/patches/chrome-browser-resources-side_panel-read_anything-BUILD.gn.patch index a01a7de9de1..0ce9dc56716 100644 --- a/patches/chrome-browser-resources-side_panel-read_anything-BUILD.gn.patch +++ b/patches/chrome-browser-resources-side_panel-read_anything-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/resources/side_panel/read_anything/BUILD.gn b/chrome/browser/resources/side_panel/read_anything/BUILD.gn -index 4e1fcd93211771a0577ba7b9c70f4dabb62945a8..90b3fe80d5f6ac0cb2f3a4f328121bec875da8ea 100644 +index 470d1251b9792016a54038a67276467a9b551243..a541b3bfe71fa17a315db743d6b4d62b6a697a72 100644 --- a/chrome/browser/resources/side_panel/read_anything/BUILD.gn +++ b/chrome/browser/resources/side_panel/read_anything/BUILD.gn -@@ -111,7 +111,7 @@ build_webui("build") { +@@ -112,7 +112,7 @@ build_webui("build") { target_gen_dir) ] webui_context_type = "untrusted" diff --git a/patches/chrome-browser-resources-tab_search-BUILD.gn.patch b/patches/chrome-browser-resources-tab_search-BUILD.gn.patch index 6a30eae8d92..b800cd84ece 100644 --- a/patches/chrome-browser-resources-tab_search-BUILD.gn.patch +++ b/patches/chrome-browser-resources-tab_search-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/resources/tab_search/BUILD.gn b/chrome/browser/resources/tab_search/BUILD.gn -index 5559ef2d0038dd8d078105f703fe23c26602216c..ba701315f0c266fd42ad6fedef0b33aa8abd1ae8 100644 +index 04a7516c72344b5291cf06a19728e11d870c3b6c..20d1c497004c042e967a7abcef169fbf0c406236 100644 --- a/chrome/browser/resources/tab_search/BUILD.gn +++ b/chrome/browser/resources/tab_search/BUILD.gn @@ -91,4 +91,5 @@ build_webui("build") { diff --git a/patches/chrome-browser-safe_browsing-download_protection-check_client_download_request_base.cc.patch b/patches/chrome-browser-safe_browsing-download_protection-check_client_download_request_base.cc.patch index 8ff0034466b..043ed77fc8e 100644 --- a/patches/chrome-browser-safe_browsing-download_protection-check_client_download_request_base.cc.patch +++ b/patches/chrome-browser-safe_browsing-download_protection-check_client_download_request_base.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc -index 28fc394196f05c30123953130966c0b4ca1be063..02ac09603f8045f4151163168ba6d2b540a4196a 100644 +index 9712726eb1767b2c3efb5eb595b0ee3818b715b7..2e0c81a9c686f32dd62166fc75989d8ea03933ef 100644 --- a/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc +++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request_base.cc @@ -338,6 +338,7 @@ void CheckClientDownloadRequestBase::OnRequestBuilt( diff --git a/patches/chrome-browser-segmentation_platform-android-home_modules_ranking_helper.cc.patch b/patches/chrome-browser-segmentation_platform-android-home_modules_ranking_helper.cc.patch new file mode 100644 index 00000000000..2fa13677017 --- /dev/null +++ b/patches/chrome-browser-segmentation_platform-android-home_modules_ranking_helper.cc.patch @@ -0,0 +1,28 @@ +diff --git a/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc b/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc +index da83120c707deb4f32705f43179cfe026186018c..503ec7407077039f8ca0a162522d4614276d29e1 100644 +--- a/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc ++++ b/chrome/browser/segmentation_platform/android/home_modules_ranking_helper.cc +@@ -51,6 +51,7 @@ static void JNI_HomeModulesRankingHelper_GetClassificationResult( + segmentation_platform::home_modules::HomeModulesCardRegistry* registry = + segmentation_platform::SegmentationPlatformServiceFactory:: + GetHomeModulesCardRegistry(profile); ++ BRAVE_JNI_HOME_MODULES_RANKING_HELPER_GET_CLASSIFICATION_RESULT + scoped_refptr native_input_context = + segmentation_platform::InputContextAndroid::ToNativeInputContext( + env, input_context); +@@ -72,6 +73,7 @@ static void JNI_HomeModulesRankingHelper_NotifyCardShown( + segmentation_platform::home_modules::HomeModulesCardRegistry* registry = + segmentation_platform::SegmentationPlatformServiceFactory:: + GetHomeModulesCardRegistry(profile); ++ BRAVE_JNI_HOME_MODULES_RANKING_HELPER_NOTIFY_CARD_SHOWN + std::string native_card_label = ConvertJavaStringToUTF8(env, card_label); + registry->NotifyCardShown(native_card_label.c_str()); + } +@@ -84,6 +86,7 @@ static void JNI_HomeModulesRankingHelper_NotifyCardInteracted( + segmentation_platform::home_modules::HomeModulesCardRegistry* registry = + segmentation_platform::SegmentationPlatformServiceFactory:: + GetHomeModulesCardRegistry(profile); ++ BRAVE_JNI_HOME_MODULES_RANKING_HELPER_NOTIFY_CARD_INTERACTED + std::string native_card_label = ConvertJavaStringToUTF8(env, card_label); + registry->NotifyCardInteracted(native_card_label.c_str()); + } diff --git a/patches/chrome-browser-sessions-session_service.cc.patch b/patches/chrome-browser-sessions-session_service.cc.patch index 2692b7d52d7..0294a4f4cb0 100644 --- a/patches/chrome-browser-sessions-session_service.cc.patch +++ b/patches/chrome-browser-sessions-session_service.cc.patch @@ -1,10 +1,10 @@ diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc -index 2081a22bf7ccfa12ad943ed7510d3e03ca506e42..943cac60ed3508d1c6e1ce5a76ef98bc409f3f24 100644 +index 7aca9a9c6c5b057d119a6f2872217086ec4b713c..e0f801a0e713bb698222cee29d9aaabb8b543db6 100644 --- a/chrome/browser/sessions/session_service.cc +++ b/chrome/browser/sessions/session_service.cc -@@ -385,6 +385,7 @@ void SessionService::TabClosed(SessionID window_id, SessionID tab_id) { - window_id) == window_closing_ids_.end()) && - IsOnlyOneTabLeft()) { +@@ -382,6 +382,7 @@ void SessionService::TabClosed(SessionID window_id, SessionID tab_id) { + ScheduleCommand(sessions::CreateTabClosedCommand(tab_id)); + if (!window_closing_ids_.contains(window_id) && IsOnlyOneTabLeft()) { // This is the last tab in the last tabbed browser. + BRAVE_SESSION_SERVICE_TAB_CLOSED has_open_trackable_browsers_ = false; diff --git a/patches/chrome-browser-shell_integration_linux.cc.patch b/patches/chrome-browser-shell_integration_linux.cc.patch index 1cc96325f75..0b980ad4e08 100644 --- a/patches/chrome-browser-shell_integration_linux.cc.patch +++ b/patches/chrome-browser-shell_integration_linux.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/shell_integration_linux.cc b/chrome/browser/shell_integration_linux.cc -index da32d124606ca2d19359c6c7a2ee5c74f12b90c2..21e999630e30f8ca30011f87cdeba00b62e18e53 100644 +index 94c5e9be9e9a42740a06c04e08f140e27b3686aa..9a5c4c0da00548a86ef98fbb44e91329e076fdc2 100644 --- a/chrome/browser/shell_integration_linux.cc +++ b/chrome/browser/shell_integration_linux.cc -@@ -516,7 +516,7 @@ std::string GetIconName() { +@@ -461,7 +461,7 @@ std::string GetIconName() { #if BUILDFLAG(GOOGLE_CHROME_BRANDING) return "google-chrome"; #else // BUILDFLAG(CHROMIUM_BRANDING) diff --git a/patches/chrome-browser-signin-chrome_signin_helper.cc.patch b/patches/chrome-browser-signin-chrome_signin_helper.cc.patch index 5853a4fdefb..4414ea2feea 100644 --- a/patches/chrome-browser-signin-chrome_signin_helper.cc.patch +++ b/patches/chrome-browser-signin-chrome_signin_helper.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/signin/chrome_signin_helper.cc b/chrome/browser/signin/chrome_signin_helper.cc -index 3e6b26b0cc5d6f1df1276aa08e35bb05a085e17e..f3cbbfc396c3e12b828df292ab97f42fc230d951 100644 +index b8976d02ad591cdf241ab6cb5aa19bc21d3fe56f..3e621abb5b6388e275e631e38b6b19baba70862f 100644 --- a/chrome/browser/signin/chrome_signin_helper.cc +++ b/chrome/browser/signin/chrome_signin_helper.cc -@@ -248,6 +248,7 @@ void ProcessMirrorHeader( +@@ -251,6 +251,7 @@ void ProcessMirrorHeader( // Do not allow non-Google origins to open incognito windows. // TODO(crbug.com/40064889): Expand this check to all Mirror headers, // regardless of `service_type`. diff --git a/patches/chrome-browser-signin-signin_promo_util.cc.patch b/patches/chrome-browser-signin-signin_promo_util.cc.patch index dcca1c4af6a..a3f57261521 100644 --- a/patches/chrome-browser-signin-signin_promo_util.cc.patch +++ b/patches/chrome-browser-signin-signin_promo_util.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/signin/signin_promo_util.cc b/chrome/browser/signin/signin_promo_util.cc -index 2568c43b7684ae69ff6971603018968625bc0703..5bb5c59f067519dd242bd03eae789603eb850d30 100644 +index 3283094f284b2028ac11e37eb9b7831606b22791..91151c30cbde97d1a3de0830db00598b0a2aeb94 100644 --- a/chrome/browser/signin/signin_promo_util.cc +++ b/chrome/browser/signin/signin_promo_util.cc -@@ -480,6 +480,7 @@ bool ShouldShowPromoBasedOnImpressionOrDismissalCount(Profile& profile, +@@ -578,6 +578,7 @@ bool ShouldShowSyncPromo(Profile& profile) { // `ShouldShowAddressSignInPromo` and `ShouldShowPasswordSignInPromo`). // `profile` is the profile of the tab the promo would be shown on. bool ShouldShowSignInPromoCommon(Profile& profile, SignInPromoType type) { diff --git a/patches/chrome-browser-storage_access_api-storage_access_grant_permission_context.cc.patch b/patches/chrome-browser-storage_access_api-storage_access_grant_permission_context.cc.patch index 0912975b81c..d32fe109dbb 100644 --- a/patches/chrome-browser-storage_access_api-storage_access_grant_permission_context.cc.patch +++ b/patches/chrome-browser-storage_access_api-storage_access_grant_permission_context.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc -index db1734d92f89712ca74d388a7778a15ef66f9d19..371ceafd5dfaa78ebab36fc75e16514c0386de53 100644 +index 1f774ae42daad4e5612b70fd942e44d1db079c09..c70c491f5c43665774b177cbc8175be907f063a9 100644 --- a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc +++ b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc @@ -477,6 +477,7 @@ void StorageAccessGrantPermissionContext::CheckForAutoGrantOrAutoDenial( diff --git a/patches/chrome-browser-sync-sync_service_factory.cc.patch b/patches/chrome-browser-sync-sync_service_factory.cc.patch index f34e8d7f7b8..f23a29100ab 100644 --- a/patches/chrome-browser-sync-sync_service_factory.cc.patch +++ b/patches/chrome-browser-sync-sync_service_factory.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/sync/sync_service_factory.cc b/chrome/browser/sync/sync_service_factory.cc -index 9292d9cc433f3da323170ab44d70bd9b5df6e431..6efda65c538c987e064fd11fb4409e76b365ebb1 100644 +index 437d750e626ff146c5f8249188de48e2594b83ca..efe879b9576e10e60100145791465ded138dfc14 100644 --- a/chrome/browser/sync/sync_service_factory.cc +++ b/chrome/browser/sync/sync_service_factory.cc @@ -444,7 +444,7 @@ std::unique_ptr BuildSyncService( diff --git a/patches/chrome-browser-ui-BUILD.gn.patch b/patches/chrome-browser-ui-BUILD.gn.patch index 062afc87795..51108065d98 100644 --- a/patches/chrome-browser-ui-BUILD.gn.patch +++ b/patches/chrome-browser-ui-BUILD.gn.patch @@ -1,16 +1,16 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn -index 00b9254990f2428a5e3205448d75bf7ede720454..c73f7c08f8b18f7136f8e3da642ecd4fa475a611 100644 +index 5907498d01115ce03dcdad1606fc8f436a7e00e8..8c3a7ad22f8e9a0f1c2508522279f5b67c30e936 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -799,6 +799,7 @@ static_library("ui") { - # gets componentized. - "//chrome/browser/ui/extensions:impl", +@@ -825,6 +825,7 @@ static_library("ui") { + # translate's impl no longer includes headers from //chrome/browser/ui. + "//chrome/browser/translate:impl", ] + import("//brave/browser/sources.gni") import("//brave/components/brave_wallet/sources.gni") public_deps += [ "//brave/browser/ui" ] deps += brave_chrome_browser_ui_allow_circular_includes_from + brave_chrome_browser_ui_deps allow_circular_includes_from += brave_chrome_browser_ui_allow_circular_includes_from if (enable_vr && is_win) { deps += [ "//chrome/browser/vr:vr_base" ] -@@ -3441,7 +3442,10 @@ static_library("ui") { +@@ -3496,7 +3497,10 @@ static_library("ui") { "//chrome/updater/app/server/win:updater_legacy_idl", ] } else { @@ -22,7 +22,7 @@ index 00b9254990f2428a5e3205448d75bf7ede720454..c73f7c08f8b18f7136f8e3da642ecd4f } } -@@ -5555,6 +5559,7 @@ static_library("ui_public_dependencies") { +@@ -5621,6 +5625,7 @@ group("ui_public_dependencies") { "//components/enterprise/buildflags", "//components/paint_preview/buildflags", "//components/safe_browsing:buildflags", @@ -30,7 +30,7 @@ index 00b9254990f2428a5e3205448d75bf7ede720454..c73f7c08f8b18f7136f8e3da642ecd4f "//components/segmentation_platform/public", "//components/sync", "//components/sync_user_events", -@@ -5567,6 +5572,7 @@ static_library("ui_public_dependencies") { +@@ -5633,6 +5638,7 @@ group("ui_public_dependencies") { if (enable_extensions_core) { public_deps += [ "//extensions/browser" ] } @@ -38,7 +38,7 @@ index 00b9254990f2428a5e3205448d75bf7ede720454..c73f7c08f8b18f7136f8e3da642ecd4f if (!is_android) { public_deps += [ "//build:branding_buildflags", -@@ -5706,6 +5712,7 @@ source_set("browser_navigator_params_headers") { +@@ -5771,6 +5777,7 @@ source_set("browser_navigator_params_headers") { "//url", ] deps = [] diff --git a/patches/chrome-browser-ui-actions-chrome_action_id.h.patch b/patches/chrome-browser-ui-actions-chrome_action_id.h.patch index 1303753281d..d1126ddf268 100644 --- a/patches/chrome-browser-ui-actions-chrome_action_id.h.patch +++ b/patches/chrome-browser-ui-actions-chrome_action_id.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/actions/chrome_action_id.h b/chrome/browser/ui/actions/chrome_action_id.h -index 3c03bd655e7e7e63f4e7ff7e85094d93b92b690c..13fa66e6b54e94125be69797a12d15bdb9db8273 100644 +index 89d7ca24222243b88c99cdb5b92a14dab7c720f4..45259de71fbbdb1bacfc7d40f3825e85c1f8f356 100644 --- a/chrome/browser/ui/actions/chrome_action_id.h +++ b/chrome/browser/ui/actions/chrome_action_id.h @@ -556,6 +556,7 @@ @@ -16,5 +16,5 @@ index 3c03bd655e7e7e63f4e7ff7e85094d93b92b690c..13fa66e6b54e94125be69797a12d15bd E(kActionTabSearch, IDC_TAB_SEARCH) \ + E(kActionShowPartitionedStorage) \ E(kActionSplitTab, IDC_SPLIT_TAB) \ + E(kActionFederation) \ E(kActionGlicContextualCueing) \ - diff --git a/patches/chrome-browser-ui-android-toolbar-BUILD.gn.patch b/patches/chrome-browser-ui-android-toolbar-BUILD.gn.patch index c7e05e8ffb0..c3332bd0cbf 100644 --- a/patches/chrome-browser-ui-android-toolbar-BUILD.gn.patch +++ b/patches/chrome-browser-ui-android-toolbar-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn -index 6c73054568e72484304e06fe3118c84c0391528c..0af12fc2fb30767c0244a2e7f11eb1a50a63e26b 100644 +index 1f1f8c256a61d000e289e2034db966ac3835588d..652bb6fa918ef217f41bad5b9b9299d79e0053a5 100644 --- a/chrome/browser/ui/android/toolbar/BUILD.gn +++ b/chrome/browser/ui/android/toolbar/BUILD.gn @@ -138,6 +138,7 @@ android_library("core_java") { @@ -10,7 +10,7 @@ index 6c73054568e72484304e06fe3118c84c0391528c..0af12fc2fb30767c0244a2e7f11eb1a5 deps = [ ":java_resources", -@@ -346,6 +347,7 @@ android_resources("java_resources") { +@@ -353,6 +354,7 @@ android_resources("java_resources") { "//components/browser_ui/styles/android:java_resources", "//ui/android:ui_java_resources", ] diff --git a/patches/chrome-browser-ui-android-toolbar-java-res-layout-radio_button_group_adaptive_toolbar_preference.xml.patch b/patches/chrome-browser-ui-android-toolbar-java-res-layout-radio_button_group_adaptive_toolbar_preference.xml.patch index 0e077e5fe3c..bea9263ddde 100644 --- a/patches/chrome-browser-ui-android-toolbar-java-res-layout-radio_button_group_adaptive_toolbar_preference.xml.patch +++ b/patches/chrome-browser-ui-android-toolbar-java-res-layout-radio_button_group_adaptive_toolbar_preference.xml.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml b/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml -index ffaa6e6a77985d61dc0dbda7aa2ea4a95a301ceb..43a3176e7ce01a5a4a7559c355f2e2f61cd01f67 100644 +index f1e7be7ccefbdb820e88db2d757c0945e3a6dde7..b3e1ee9d94c76155d50ef3fd18323de30e7c9372 100644 --- a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml @@ -36,6 +36,7 @@ found in the LICENSE file. diff --git a/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_phone.xml.patch b/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_phone.xml.patch index a560a3b6bf5..90e4638ffca 100644 --- a/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_phone.xml.patch +++ b/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_phone.xml.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml -index 38d66204d2cb9aa78382fc10cf5538e6d85463e3..8720bbfc4eb26aa128c36a3b5d98db00e63cb884 100644 +index 52e1748d74a589cb37bbfda824f6868c9bd86433..47c1123d1905fa0792c36c73c46be26f86ad19f2 100644 --- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml @@ -46,9 +46,11 @@ found in the LICENSE file. diff --git a/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_tablet.xml.patch b/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_tablet.xml.patch index 15449bfe4c7..7582ce19ac1 100644 --- a/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_tablet.xml.patch +++ b/patches/chrome-browser-ui-android-toolbar-java-res-layout-toolbar_tablet.xml.patch @@ -1,5 +1,5 @@ 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 -index 7ffcd089ce8b3292c67a64811d22601ad4e0feed..86cca63f44af183f30b5efc07cff9d93dacbebac 100644 +index 49abb2500e1b3bc32c900216b849d9df43c209dd..ad15507e1722c98e17165c70fcb89c092bbdf3a0 100644 --- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml @@ -79,6 +79,7 @@ found in the LICENSE file. diff --git a/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch b/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch index 1014f06bb1d..49cd76c0f3b 100644 --- a/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch +++ b/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarPhone.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java -index 5f8529453b0c4b3b210d2bfee27f6adb3138a70b..26cc200fd4834a6faae72f284189008c207a8c88 100644 +index 63115ffa02bb1231cdc741aa7b3662e13c4bf939..9fa820a4a051fcaae0a07386f02c2ae9c869a7fa 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java -@@ -576,6 +576,7 @@ public class ToolbarPhone extends ToolbarLayout +@@ -581,6 +581,7 @@ public class ToolbarPhone extends ToolbarLayout if (mOptionalButtonCoordinator != null) { mOptionalButtonCoordinator.setBackgroundColorFilter(color); } @@ -10,7 +10,7 @@ index 5f8529453b0c4b3b210d2bfee27f6adb3138a70b..26cc200fd4834a6faae72f284189008c } private void updateModernLocationBarCorners() { -@@ -1250,6 +1251,7 @@ public class ToolbarPhone extends ToolbarLayout +@@ -1255,6 +1256,7 @@ public class ToolbarPhone extends ToolbarLayout * Tab Page. */ private void updateLocationBarLayoutForExpansionAnimation() { @@ -18,15 +18,15 @@ index 5f8529453b0c4b3b210d2bfee27f6adb3138a70b..26cc200fd4834a6faae72f284189008c TraceEvent.begin("ToolbarPhone.updateLocationBarLayoutForExpansionAnimation"); if (isInTabSwitcherMode()) return; -@@ -1652,6 +1654,7 @@ public class ToolbarPhone extends ToolbarLayout - canvas.restore(); +@@ -1668,6 +1670,7 @@ public class ToolbarPhone extends ToolbarLayout + } } + BraveToolbarLayout.class.cast(this).drawAnimationOverlay(mToolbarButtonsContainer, canvas); // Draw the tab stack button and associated text if necessary. if (getTabSwitcherButtonCoordinator() != null && mUrlExpansionFraction != 1f) { // Draw the tab stack button image. -@@ -2016,6 +2019,7 @@ public class ToolbarPhone extends ToolbarLayout +@@ -2050,6 +2053,7 @@ public class ToolbarPhone extends ToolbarLayout @Override public void onHomeButtonIsEnabledUpdate(boolean homeButtonEnabled) { mIsHomeButtonEnabled = homeButtonEnabled; @@ -34,7 +34,7 @@ index 5f8529453b0c4b3b210d2bfee27f6adb3138a70b..26cc200fd4834a6faae72f284189008c updateButtonVisibility(); } -@@ -2416,6 +2420,7 @@ public class ToolbarPhone extends ToolbarLayout +@@ -2450,6 +2454,7 @@ public class ToolbarPhone extends ToolbarLayout } else { populateUrlClearExpansionAnimatorSet(animators); } diff --git a/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarTablet.java.patch b/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarTablet.java.patch index eb2b50a19b0..bf9aa81115b 100644 --- a/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarTablet.java.patch +++ b/patches/chrome-browser-ui-android-toolbar-java-src-org-chromium-chrome-browser-toolbar-top-ToolbarTablet.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java -index 37a12b4846df3e74bb1bdc9e9202235c7b1ca279..08309d203a221af98ca8e50119cf2c15bc3002c0 100644 +index 42321b3598a426b9d33f91f61e347c32f5559685..6907ec77eee2669aaba1511fe59d08d4cc34055c 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java -@@ -290,6 +290,7 @@ public class ToolbarTablet extends ToolbarLayout { +@@ -291,6 +291,7 @@ public class ToolbarTablet extends ToolbarLayout { mLocationBar.getTabletCoordinator().tintBackground(textBoxColor); mLocationBar.updateVisualsForState(); setToolbarHairlineColor(color); diff --git a/patches/chrome-browser-ui-autofill-BUILD.gn.patch b/patches/chrome-browser-ui-autofill-BUILD.gn.patch index b74c74c55d7..a370e0ee6a7 100644 --- a/patches/chrome-browser-ui-autofill-BUILD.gn.patch +++ b/patches/chrome-browser-ui-autofill-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/autofill/BUILD.gn b/chrome/browser/ui/autofill/BUILD.gn -index e59abb96c6dcd8a6626bcbe836842fe15e240925..45b2a5e1ca3953c0f7bd78f6ca4a064ff1898144 100644 +index 9838e48e9aba297272abd0b6b1b9d8f820a55983..8f944d517650909e11a18b8522f27ece276a8ae8 100644 --- a/chrome/browser/ui/autofill/BUILD.gn +++ b/chrome/browser/ui/autofill/BUILD.gn -@@ -241,6 +241,7 @@ source_set("impl") { +@@ -250,6 +250,7 @@ source_set("impl") { "//components/password_manager/core/browser/features:password_features", "//components/plus_addresses/core/browser/resources/strings", ] diff --git a/patches/chrome-browser-ui-browser.cc.patch b/patches/chrome-browser-ui-browser.cc.patch index 956b55f3cf8..02a9a2f9f78 100644 --- a/patches/chrome-browser-ui-browser.cc.patch +++ b/patches/chrome-browser-ui-browser.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc -index dd77f2fda3db2e7974003085a22981cad3f6c794..50dcdd6351f18dad5be5928ca8b6db49610769d8 100644 +index 9603137595182b9f442bd54cd6711fffc1fe7af8..dd2f9d4313cea9b71e00e329ce163e98a930fe24 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc -@@ -555,7 +555,7 @@ Browser* Browser::Create(const CreateParams& params) { +@@ -559,7 +559,7 @@ Browser* Browser::Create(const CreateParams& params) { // should handle this; see e.g. crbug.com/1141608 and crbug.com/1261628. CHECK_EQ(CreationStatus::kOk, GetCreationStatusForProfile(params.profile)); @@ -11,7 +11,7 @@ index dd77f2fda3db2e7974003085a22981cad3f6c794..50dcdd6351f18dad5be5928ca8b6db49 Browser* const browser_ptr = browser.get(); BrowserManagerServiceFactory::GetForProfile(params.profile) ->AddBrowser(std::move(browser)); -@@ -571,7 +571,7 @@ std::unique_ptr Browser::DeprecatedCreateOwnedForTesting( +@@ -575,7 +575,7 @@ std::unique_ptr Browser::DeprecatedCreateOwnedForTesting( // should handle this; see e.g. crbug.com/1141608 and crbug.com/1261628. CHECK_EQ(CreationStatus::kOk, GetCreationStatusForProfile(params.profile)); @@ -20,7 +20,7 @@ index dd77f2fda3db2e7974003085a22981cad3f6c794..50dcdd6351f18dad5be5928ca8b6db49 BrowserManagerServiceFactory::GetForProfile(params.profile) ->AddBrowserForTesting(browser.get()); return browser; -@@ -584,7 +584,7 @@ Browser::Browser(const CreateParams& params) +@@ -588,7 +588,7 @@ Browser::Browser(const CreateParams& params) window_(nullptr), tab_strip_model_delegate_( std::make_unique(this)), @@ -29,7 +29,7 @@ index dd77f2fda3db2e7974003085a22981cad3f6c794..50dcdd6351f18dad5be5928ca8b6db49 tab_strip_model_delegate_.get(), params.profile, // Tab groups are disabled for app browsers. -@@ -1294,6 +1294,7 @@ void Browser::OnWindowClosing() { +@@ -1299,6 +1299,7 @@ void Browser::OnWindowClosing() { if (tab_restore_service && notify_restore_service) { tab_restore_service->BrowserClosing(GetFeatures().live_tab_context()); } diff --git a/patches/chrome-browser-ui-browser_actions.h.patch b/patches/chrome-browser-ui-browser_actions.h.patch index 40456a291fe..f14baf7a22f 100644 --- a/patches/chrome-browser-ui-browser_actions.h.patch +++ b/patches/chrome-browser-ui-browser_actions.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/browser_actions.h b/chrome/browser/ui/browser_actions.h -index cbdff7aa3bf0724364ef4e1572dc1a5527a71161..371c1eaeb6b68f9e1fecc4051518d1ddda89448f 100644 +index 8dda105f4a356467ba3a9e23f7663a42c0af86d1..875069eff6f73d29b24ae92ecacde8673bd23d57 100644 --- a/chrome/browser/ui/browser_actions.h +++ b/chrome/browser/ui/browser_actions.h @@ -24,7 +24,7 @@ class BrowserActions { diff --git a/patches/chrome-browser-ui-browser_commands.cc.patch b/patches/chrome-browser-ui-browser_commands.cc.patch index 3e3c4e83710..837ab38a708 100644 --- a/patches/chrome-browser-ui-browser_commands.cc.patch +++ b/patches/chrome-browser-ui-browser_commands.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc -index 657cd294df1d3ca983d6fe2b6ca43d92ded569f9..221e5e3f09e48d587e2a650655f8aa96ba16896b 100644 +index cd7f650386e23edb31f0b0c8c16fdeb91219b63e..4acec2d4f53c655b24cbd973e40bb096de273a4a 100644 --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc -@@ -1182,6 +1182,7 @@ void CloseTab(BrowserWindowInterface* browser) { +@@ -1200,6 +1200,7 @@ void CloseTab(BrowserWindowInterface* browser) { } ToastController* toast_controller = browser->GetFeatures().toast_controller(); diff --git a/patches/chrome-browser-ui-browser_navigator.cc.patch b/patches/chrome-browser-ui-browser_navigator.cc.patch index b6e25fc97cb..0a14cb6b8f5 100644 --- a/patches/chrome-browser-ui-browser_navigator.cc.patch +++ b/patches/chrome-browser-ui-browser_navigator.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/browser_navigator.cc b/chrome/browser/ui/browser_navigator.cc -index dab09c63a53bbe0abd8ef305a1991df8eb3f9cc8..ec75b47ec5bfbf5c38cd17fc951ea18860b5b24b 100644 +index 481b5691b71e792a405999e1e2ee082fe6690dc4..ad598d09ad1e9782d602454040fda408d52982ca 100644 --- a/chrome/browser/ui/browser_navigator.cc +++ b/chrome/browser/ui/browser_navigator.cc -@@ -559,6 +559,7 @@ base::WeakPtr Navigate(NavigateParams* params) { +@@ -572,6 +572,7 @@ base::WeakPtr Navigate(NavigateParams* params) { return nullptr; } } diff --git a/patches/chrome-browser-ui-browser_ui_prefs.cc.patch b/patches/chrome-browser-ui-browser_ui_prefs.cc.patch index 9710392e9d7..7a3f73ca93a 100644 --- a/patches/chrome-browser-ui-browser_ui_prefs.cc.patch +++ b/patches/chrome-browser-ui-browser_ui_prefs.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc -index 771d84612a86fba2482b4ecff6f4920522343725..b5e43e56072adaa3cd09582eb12b2fd3c9cc9d2c 100644 +index 25d238a208dcf2480d3a4e731afb257715eab818..d7ad7057bf4314a0b70330af27b0850571a41d79 100644 --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -133,7 +133,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -135,7 +135,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); registry->RegisterBooleanPref( translate::prefs::kOfferTranslateEnabled, true, diff --git a/patches/chrome-browser-ui-browser_window-internal-BUILD.gn.patch b/patches/chrome-browser-ui-browser_window-internal-BUILD.gn.patch index 5df83ea2564..d5403d0ca5b 100644 --- a/patches/chrome-browser-ui-browser_window-internal-BUILD.gn.patch +++ b/patches/chrome-browser-ui-browser_window-internal-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/browser_window/internal/BUILD.gn b/chrome/browser/ui/browser_window/internal/BUILD.gn -index 25969faad4be7b51489b844cc2529d928b73108d..017fd2409911502e9a79064e03d217465f27123b 100644 +index 1249dc3c2f189354ee6966b0f4fda2df7e8d8839..06faaf282038010b851702f8342108d2e09b6136 100644 --- a/chrome/browser/ui/browser_window/internal/BUILD.gn +++ b/chrome/browser/ui/browser_window/internal/BUILD.gn -@@ -149,6 +149,7 @@ source_set("internal") { +@@ -157,6 +157,7 @@ source_set("internal") { if (enable_extensions_core) { deps += [ "//chrome/browser/extensions" ] } diff --git a/patches/chrome-browser-ui-browser_window-public-browser_window_features.h.patch b/patches/chrome-browser-ui-browser_window-public-browser_window_features.h.patch index 39f3e558fef..f0c5aa6541e 100644 --- a/patches/chrome-browser-ui-browser_window-public-browser_window_features.h.patch +++ b/patches/chrome-browser-ui-browser_window-public-browser_window_features.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/browser_window/public/browser_window_features.h b/chrome/browser/ui/browser_window/public/browser_window_features.h -index 2bdba2a8de29e3e097b03bcc5d53558fcc7783f6..1a6d868d5fa1c33e49b5d41aa9e4e1e2699889eb 100644 +index acb63225a9ab14814c90af8490d2e15056c7ba18..ccbc8cd8b3f27dc7446541e131bb74fa51c6834c 100644 --- a/chrome/browser/ui/browser_window/public/browser_window_features.h +++ b/chrome/browser/ui/browser_window/public/browser_window_features.h -@@ -230,7 +230,7 @@ class SkillsUiWindowController; +@@ -238,7 +238,7 @@ class AiOverlayDialogController; class BrowserWindowFeatures { public: BrowserWindowFeatures(); diff --git a/patches/chrome-browser-ui-chrome_pages.cc.patch b/patches/chrome-browser-ui-chrome_pages.cc.patch index 82c1468022a..cde1689f2b7 100644 --- a/patches/chrome-browser-ui-chrome_pages.cc.patch +++ b/patches/chrome-browser-ui-chrome_pages.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc -index e05fb064e75b72206b90347cc9925cc1011f0e7e..13cf6903c5efbe0199c89a8958e8cb2730d99e57 100644 +index 9a4734e92a272a56a641927c1fbbcbf01fcf9851..27df63b59dd73255401401d0fd4fcfe40bb9ed4c 100644 --- a/chrome/browser/ui/chrome_pages.cc +++ b/chrome/browser/ui/chrome_pages.cc -@@ -422,7 +422,7 @@ void ShowSlow(Browser* browser) { +@@ -432,7 +432,7 @@ void ShowSlow(BrowserWindowInterface* browser) { #endif } diff --git a/patches/chrome-browser-ui-messages-android-java-src-org-chromium-chrome-browser-ui-messages-snackbar-SnackbarManager.java.patch b/patches/chrome-browser-ui-messages-android-java-src-org-chromium-chrome-browser-ui-messages-snackbar-SnackbarManager.java.patch index d6462ada917..ccb5386ba34 100644 --- a/patches/chrome-browser-ui-messages-android-java-src-org-chromium-chrome-browser-ui-messages-snackbar-SnackbarManager.java.patch +++ b/patches/chrome-browser-ui-messages-android-java-src-org-chromium-chrome-browser-ui-messages-snackbar-SnackbarManager.java.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java -index 28f3cee253ea8c7c246554f5fad1e91a5ab12e81..e9b6829b40cf8ad9e24e3664f31c32d2504f4f30 100644 +index cc51dcbb68b9a309d0f4f8bdda17b70ead4431b6..278ac3c39dff44b5f67742d657a79998e8cc95cb 100644 --- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java +++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java -@@ -431,7 +431,7 @@ public class SnackbarManager +@@ -461,7 +461,7 @@ public class SnackbarManager boolean viewChanged = true; if (mView == null) { mView = diff --git a/patches/chrome-browser-ui-omnibox-chrome_omnibox_client.h.patch b/patches/chrome-browser-ui-omnibox-chrome_omnibox_client.h.patch index 58fb49d4b11..84ffc193ac9 100644 --- a/patches/chrome-browser-ui-omnibox-chrome_omnibox_client.h.patch +++ b/patches/chrome-browser-ui-omnibox-chrome_omnibox_client.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_client.h b/chrome/browser/ui/omnibox/chrome_omnibox_client.h -index c9088e8e3a34a350094b6ffb42c3d6ff583bc8f4..510eb1f4e4762f5f725dd793f19dd258b607a5c2 100644 +index ce68ab6ad699cbdcd5d479f1adb1636892d6e554..728c2ad2d6e369965f84173ec3f115b3e98c3606 100644 --- a/chrome/browser/ui/omnibox/chrome_omnibox_client.h +++ b/chrome/browser/ui/omnibox/chrome_omnibox_client.h -@@ -27,7 +27,7 @@ namespace omnibox { +@@ -28,7 +28,7 @@ namespace omnibox { class OmniboxPopupCloser; } // namespace omnibox diff --git a/patches/chrome-browser-ui-omnibox-omnibox_edit_model.cc.patch b/patches/chrome-browser-ui-omnibox-omnibox_edit_model.cc.patch index 3861d328f40..be8b7ad4527 100644 --- a/patches/chrome-browser-ui-omnibox-omnibox_edit_model.cc.patch +++ b/patches/chrome-browser-ui-omnibox-omnibox_edit_model.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/omnibox/omnibox_edit_model.cc b/chrome/browser/ui/omnibox/omnibox_edit_model.cc -index bd2f46cd794a65023c5f3b9ebd3de8a93f6b04b5..e84766e9d82d8ec2e41d3544748c75f7f87a97e0 100644 +index 7bac1634aa3ef8f94e269a7e804573ab1791d75a..bcaf2771b134c67fc927352a07e007710c10e844 100644 --- a/chrome/browser/ui/omnibox/omnibox_edit_model.cc +++ b/chrome/browser/ui/omnibox/omnibox_edit_model.cc -@@ -663,6 +663,7 @@ void OmniboxEditModel::StartAutocomplete(bool has_selected_text, +@@ -665,6 +665,7 @@ void OmniboxEditModel::StartAutocomplete(bool prevent_inline_autocomplete) { input_.set_lens_overlay_suggest_inputs(*suggest_inputs); } diff --git a/patches/chrome-browser-ui-safety_hub-password_status_check_service.cc.patch b/patches/chrome-browser-ui-safety_hub-password_status_check_service.cc.patch index dcd4ab7e70a..8c1853e7dd9 100644 --- a/patches/chrome-browser-ui-safety_hub-password_status_check_service.cc.patch +++ b/patches/chrome-browser-ui-safety_hub-password_status_check_service.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/safety_hub/password_status_check_service.cc b/chrome/browser/ui/safety_hub/password_status_check_service.cc -index 487d4aa5d390427d91ab8ce0efdccfc2c89852b3..c9be957b07c45c8ef70fa16bdd22110bb79228da 100644 +index d90c5df1ec5245eff83be71126b9c5e3e1f5337d..9f2c8e79e4e3a1b7ca575f90d5123c5e9e5b169b 100644 --- a/chrome/browser/ui/safety_hub/password_status_check_service.cc +++ b/chrome/browser/ui/safety_hub/password_status_check_service.cc @@ -721,6 +721,7 @@ base::TimeDelta PasswordStatusCheckService::GetScheduledPasswordCheckInterval() diff --git a/patches/chrome-browser-ui-side_panel-side_panel_entry_id.h.patch b/patches/chrome-browser-ui-side_panel-side_panel_entry_id.h.patch index 8d59bd8adf0..b1fd33d3c68 100644 --- a/patches/chrome-browser-ui-side_panel-side_panel_entry_id.h.patch +++ b/patches/chrome-browser-ui-side_panel-side_panel_entry_id.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/side_panel/side_panel_entry_id.h b/chrome/browser/ui/side_panel/side_panel_entry_id.h -index 4bcd669843672414b31e938c5e9f75d1e54824db..5907fd5c39764f2cfdf6afd4b6d5cdc6ce7877bb 100644 +index b089b5e276bab33c5eaeaec29662201ff78ec590..d538bcd93615060587f256ecf11647e9799fdbfb 100644 --- a/chrome/browser/ui/side_panel/side_panel_entry_id.h +++ b/chrome/browser/ui/side_panel/side_panel_entry_id.h -@@ -31,6 +31,7 @@ +@@ -30,6 +30,7 @@ V(kSideSearch, kActionSidePanelShowSideSearch, "SideSearch") \ V(kLens, kActionSidePanelShowLens, "Lens") \ V(kAssistant, kActionSidePanelShowAssistant, "Assistant") \ diff --git a/patches/chrome-browser-ui-tab_helpers.cc.patch b/patches/chrome-browser-ui-tab_helpers.cc.patch index 539160f7f9c..7dea97cd9e1 100644 --- a/patches/chrome-browser-ui-tab_helpers.cc.patch +++ b/patches/chrome-browser-ui-tab_helpers.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc -index 6c3874b43f7fe707addcee98190657e282f52b57..8a8f47f5219bb1c29eaf3d770175dfde297ebc33 100644 +index 0854cc7f49103346aa1cec1fbf06f4a72d0e5db5..f08b8e8ad5a100890fc12cfe355de1e6399f72a4 100644 --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -819,4 +819,5 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -840,4 +840,5 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { // This is common code for all of us. PLEASE DO YOUR PART to keep it tidy and // organized. diff --git a/patches/chrome-browser-ui-tabs-public-tab_features.h.patch b/patches/chrome-browser-ui-tabs-public-tab_features.h.patch index c236868092f..e12a93b06fd 100644 --- a/patches/chrome-browser-ui-tabs-public-tab_features.h.patch +++ b/patches/chrome-browser-ui-tabs-public-tab_features.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/tabs/public/tab_features.h b/chrome/browser/ui/tabs/public/tab_features.h -index f4ecae66f8facedf03790bedfae965f18620191e..73775e8d2c5ae406b68a42c64905526afba33a3c 100644 +index e5720b2d6f0478ecfb490cb3935547edf112e5cc..75d4a454fc2388c839867983b763a15075eec512 100644 --- a/chrome/browser/ui/tabs/public/tab_features.h +++ b/chrome/browser/ui/tabs/public/tab_features.h @@ -194,7 +194,7 @@ class TabInterface; diff --git a/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model.cc.patch b/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model.cc.patch index d91b51a1168..d4be06e2934 100644 --- a/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model.cc.patch +++ b/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/tabs/recent_tabs_sub_menu_model.cc b/chrome/browser/ui/tabs/recent_tabs_sub_menu_model.cc -index 53dbacdb3bb81881eb48f6979a01891dc5aa13c6..c6b676e5bde6cc4c5cf3b1303567dc69c872789b 100644 +index fd79d4c0db301d3f107e3ec4ebcee34f108c15c8..f16157906c9d3e594971b3c3ef82571c9387d0b7 100644 --- a/chrome/browser/ui/tabs/recent_tabs_sub_menu_model.cc +++ b/chrome/browser/ui/tabs/recent_tabs_sub_menu_model.cc -@@ -520,6 +520,7 @@ void RecentTabsSubMenuModel::BuildTabsFromOtherDevices() { +@@ -516,6 +516,7 @@ void RecentTabsSubMenuModel::BuildTabsFromOtherDevices() { DCHECK(!session->GetSessionName().empty()); std::unique_ptr device_menu_model = CreateOtherDeviceSubMenu(session, tabs_in_session); diff --git a/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model_browsertest.cc.patch b/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model_browsertest.cc.patch index fea35434390..15c77a3bc15 100644 --- a/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model_browsertest.cc.patch +++ b/patches/chrome-browser-ui-tabs-recent_tabs_sub_menu_model_browsertest.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc b/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc -index 3877b0f0fb463a7652066fe15f5120ba1f85143e..7763027e084f4b178d1cf1a723a3a9500a494a99 100644 +index 6bfcb532e8b7601e141254ed064e0dd531348c47..0fcb231d7e1dde71e91f73c1d88c8e52b5a56cc7 100644 --- a/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc +++ b/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc -@@ -197,6 +197,7 @@ class RecentTabsSubMenuModelTest : public InProcessBrowserTest { +@@ -198,6 +198,7 @@ class RecentTabsSubMenuModelTest : public InProcessBrowserTest { return new_browser; } diff --git a/patches/chrome-browser-ui-tabs-split_tab_menu_model.cc.patch b/patches/chrome-browser-ui-tabs-split_tab_menu_model.cc.patch index f2db18fcc1c..d258a9d3b99 100644 --- a/patches/chrome-browser-ui-tabs-split_tab_menu_model.cc.patch +++ b/patches/chrome-browser-ui-tabs-split_tab_menu_model.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/tabs/split_tab_menu_model.cc b/chrome/browser/ui/tabs/split_tab_menu_model.cc -index 782da15b492fc4990807057a506473b77abdc6f8..cef41539f8a2b17d18aecac810278d3a405275d7 100644 +index 702745840296e66652f0e4f87c5c68a464d0a584..d6256d6afd4e7b3d4563d206b45f555398c23b3f 100644 --- a/chrome/browser/ui/tabs/split_tab_menu_model.cc +++ b/chrome/browser/ui/tabs/split_tab_menu_model.cc @@ -79,6 +79,7 @@ std::string_view GetMetricsSuffixForCommand( @@ -10,7 +10,7 @@ index 782da15b492fc4990807057a506473b77abdc6f8..cef41539f8a2b17d18aecac810278d3a } } -@@ -247,6 +248,7 @@ void SplitTabMenuModel::ExecuteCommand(int command_id, int event_flags) { +@@ -246,6 +247,7 @@ void SplitTabMenuModel::ExecuteCommand(int command_id, int event_flags) { case CommandId::kSendFeedback: SendFeedback(); break; diff --git a/patches/chrome-browser-ui-tabs-tab_strip_model.cc.patch b/patches/chrome-browser-ui-tabs-tab_strip_model.cc.patch index 74070a811d3..f666e8fa7cd 100644 --- a/patches/chrome-browser-ui-tabs-tab_strip_model.cc.patch +++ b/patches/chrome-browser-ui-tabs-tab_strip_model.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/tabs/tab_strip_model.cc b/chrome/browser/ui/tabs/tab_strip_model.cc -index cb0db177da8287674b22fc6e2bde8dbcbfc2c431..ea771606ffc87f69e8e8342f41341c2df79b9eea 100644 +index a08a0071d3eb45d9adf887f960da660183231428..2fd99e5df898aa0dc91042d82f2f085874184112 100644 --- a/chrome/browser/ui/tabs/tab_strip_model.cc +++ b/chrome/browser/ui/tabs/tab_strip_model.cc -@@ -1763,6 +1763,7 @@ void TabStripModel::AddTab(std::unique_ptr tab, +@@ -1785,6 +1785,7 @@ void TabStripModel::AddTab(std::unique_ptr tab, // in the address bar and presses Alt+Enter. This allows for opening a new // Tab to quickly look up something. When this Tab is closed, the old one // is re-activated, not the next-adjacent. diff --git a/patches/chrome-browser-ui-tabs-tab_strip_model.h.patch b/patches/chrome-browser-ui-tabs-tab_strip_model.h.patch index 9dae2c1df5a..0f85d0907f2 100644 --- a/patches/chrome-browser-ui-tabs-tab_strip_model.h.patch +++ b/patches/chrome-browser-ui-tabs-tab_strip_model.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/tabs/tab_strip_model.h b/chrome/browser/ui/tabs/tab_strip_model.h -index d88080f753fd81084f44af2cafa18a71bd37422f..d63c85bc5ffc2e1a25f9784c7cb0a0c840dbc633 100644 +index 2042f061a3855e2a210af632eabcf33aa5ec6936..54d79de67f085c7f7f7342dfcab60a26ea2966cb 100644 --- a/chrome/browser/ui/tabs/tab_strip_model.h +++ b/chrome/browser/ui/tabs/tab_strip_model.h @@ -211,6 +211,7 @@ class TabStripModel { diff --git a/patches/chrome-browser-ui-tabs-tab_strip_prefs.cc.patch b/patches/chrome-browser-ui-tabs-tab_strip_prefs.cc.patch index eb7a8e08686..dbbe81cf50c 100644 --- a/patches/chrome-browser-ui-tabs-tab_strip_prefs.cc.patch +++ b/patches/chrome-browser-ui-tabs-tab_strip_prefs.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/tabs/tab_strip_prefs.cc b/chrome/browser/ui/tabs/tab_strip_prefs.cc -index a82eac2eb9aaffc77fa6e971b8a5d016d5d5ad06..9649d113500d160c5fd0f6b157073dd2455ec481 100644 +index 67ac393bd49235493ebbbf345e1cf6e5270e1ae2..f5e71e9040196cd605a8f3751402ca17a5ceae82 100644 --- a/chrome/browser/ui/tabs/tab_strip_prefs.cc +++ b/chrome/browser/ui/tabs/tab_strip_prefs.cc -@@ -26,6 +26,7 @@ std::optional g_tab_search_trailing_tabstrip_at_startup = std::nullopt; +@@ -27,6 +27,7 @@ std::optional g_tab_search_trailing_tabstrip_at_startup = std::nullopt; namespace tabs { bool GetDefaultTabSearchRightAligned() { diff --git a/patches/chrome-browser-ui-tabs-tab_style.cc.patch b/patches/chrome-browser-ui-tabs-tab_style.cc.patch index 51e9102aa3a..e38b980bf40 100644 --- a/patches/chrome-browser-ui-tabs-tab_style.cc.patch +++ b/patches/chrome-browser-ui-tabs-tab_style.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/tabs/tab_style.cc b/chrome/browser/ui/tabs/tab_style.cc -index 7f1003ce0789fcd702e0710d41b06feb537cf24e..e7dd568b62064dca56b27f25b000f31a95d3a16c 100644 +index f10c20de22037a851e90bb18095772f7ed0ce1d0..02a9d6969c3b24682b225de09e5f097e35944488 100644 --- a/chrome/browser/ui/tabs/tab_style.cc +++ b/chrome/browser/ui/tabs/tab_style.cc -@@ -280,7 +280,7 @@ float TabStyle::GetSelectedTabOpacity() const { +@@ -279,7 +279,7 @@ float TabStyle::GetSelectedTabOpacity() const { // static const TabStyle* TabStyle::Get() { diff --git a/patches/chrome-browser-ui-tabs-tab_style.h.patch b/patches/chrome-browser-ui-tabs-tab_style.h.patch index acbef6423b5..b9f17990d61 100644 --- a/patches/chrome-browser-ui-tabs-tab_style.h.patch +++ b/patches/chrome-browser-ui-tabs-tab_style.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/tabs/tab_style.h b/chrome/browser/ui/tabs/tab_style.h -index ebb6b8bf2d092ade5f014306514e2006d49bfd3d..82218fa9b5a19570e18c0cd2462a6f6ed2f92d89 100644 +index b0ba9e9aea3cad00d2e799ff5f8b7a60293c3fa0..42609a63168ac5936b98fdbd552d78eff0e36055 100644 --- a/chrome/browser/ui/tabs/tab_style.h +++ b/chrome/browser/ui/tabs/tab_style.h @@ -111,7 +111,7 @@ class TabStyle { diff --git a/patches/chrome-browser-ui-views-bookmarks-bookmark_bar_view.cc.patch b/patches/chrome-browser-ui-views-bookmarks-bookmark_bar_view.cc.patch index b1c0555e4b9..22c040d36b1 100644 --- a/patches/chrome-browser-ui-views-bookmarks-bookmark_bar_view.cc.patch +++ b/patches/chrome-browser-ui-views-bookmarks-bookmark_bar_view.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc -index 50ce0608cab851cc461971f94bf7876d531d8d13..e048f65501621f1d67efa2750c0045918669fd23 100644 +index f8d518d4a335f1e91d77e64065e272f6d264d194..d66b73d0c3b5055fe0167381de6878e8a3636750 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc @@ -901,6 +901,7 @@ void BookmarkBarView::Layout(PassKey) { diff --git a/patches/chrome-browser-ui-views-bookmarks-bookmark_bubble_view.cc.patch b/patches/chrome-browser-ui-views-bookmarks-bookmark_bubble_view.cc.patch index 5bbdb28ac13..24117781e46 100644 --- a/patches/chrome-browser-ui-views-bookmarks-bookmark_bubble_view.cc.patch +++ b/patches/chrome-browser-ui-views-bookmarks-bookmark_bubble_view.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc -index 6b91efeea31ba927aff9c2f0a8891b96fbd6804e..5c35de3ccf6018e37b13712f79d806b1cbed7ab0 100644 +index a0b82253fd4552cbe32be803e37692cde6586156..42559d0bf611b3e26611beff56d579d6361ff0a7 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc -@@ -549,6 +549,7 @@ void BookmarkBubbleView::ShowBubble(views::View* anchor_view, +@@ -559,6 +559,7 @@ void BookmarkBubbleView::ShowBubble(views::View* anchor_view, dialog_model_builder.Build(), anchor_view, views::BubbleBorder::TOP_RIGHT); bookmark_bubble_ = bubble.get(); diff --git a/patches/chrome-browser-ui-views-download-bubble-download_toolbar_ui_controller.cc.patch b/patches/chrome-browser-ui-views-download-bubble-download_toolbar_ui_controller.cc.patch index a7d17b995ed..a8cfbaed21d 100644 --- a/patches/chrome-browser-ui-views-download-bubble-download_toolbar_ui_controller.cc.patch +++ b/patches/chrome-browser-ui-views-download-bubble-download_toolbar_ui_controller.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/download/bubble/download_toolbar_ui_controller.cc b/chrome/browser/ui/views/download/bubble/download_toolbar_ui_controller.cc -index c67a71bad966bebb540b74a031f6310999dfc529..3cb0ac987e2bae17edfce9970661add88cf8355a 100644 +index 2a37f9974008e4f2e59c53619ca5142daea6bbe9..bb6a9d51a3f9d61f6d82d3eeeede84ef312b0d8f 100644 --- a/chrome/browser/ui/views/download/bubble/download_toolbar_ui_controller.cc +++ b/chrome/browser/ui/views/download/bubble/download_toolbar_ui_controller.cc @@ -674,6 +674,7 @@ void DownloadToolbarUIController::UpdateIcon() { diff --git a/patches/chrome-browser-ui-views-frame-browser_view.cc.patch b/patches/chrome-browser-ui-views-frame-browser_view.cc.patch index 9c14c84d50d..949a3ca40c9 100644 --- a/patches/chrome-browser-ui-views-frame-browser_view.cc.patch +++ b/patches/chrome-browser-ui-views-frame-browser_view.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc -index e4d4e62095f96c75e9c88869dc867ee2e1cd2b62..613744bc89e8d2ef4e286d900f50b81bba8f5416 100644 +index 987c59be280091d959c1b78f92edd83c4cfa8407..307a9004c22fa41037649bc584f15cc69afe78cf 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -628,6 +628,7 @@ bool ConvertedHitTest(views::View* src, views::View* dst, gfx::Point* point) { @@ -10,7 +10,7 @@ index e4d4e62095f96c75e9c88869dc867ee2e1cd2b62..613744bc89e8d2ef4e286d900f50b81b views::View::ConvertPointToTarget(src, dst, point); return dst->HitTestPoint(*point); } -@@ -1958,6 +1959,7 @@ void BrowserView::OnActiveTabChanged(content::WebContents* old_contents, +@@ -1971,6 +1972,7 @@ void BrowserView::OnActiveTabChanged(content::WebContents* old_contents, !browser_->tab_strip_model()->closing_all() && GetWidget()->IsActive() && GetWidget()->IsVisible() && !tab_change_in_split_view; #endif diff --git a/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.cc.patch b/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.cc.patch index ae880ebce16..f1e30a5df5b 100644 --- a/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.cc.patch +++ b/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc b/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc -index 11fbfe4bc7acacd18e25e0819a89811b377bcd98..a2d3ea11492e12073e18b15ed6d777e2b10ef767 100644 +index 8365eb0a18e923c178bd7f35ce2825a5d833cb45..0188b309f671ab862eb8077db0cf4915accbf5fc 100644 --- a/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc +++ b/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.cc -@@ -159,7 +159,7 @@ std::unique_ptr CreateTabStrip( +@@ -158,7 +158,7 @@ std::unique_ptr CreateTabStrip( std::unique_ptr hover_card_controller( std::make_unique(tab_strip_region_view, browser_view->browser())); diff --git a/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.h.patch b/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.h.patch index 00bc057f7f1..44e764edec7 100644 --- a/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.h.patch +++ b/patches/chrome-browser-ui-views-frame-horizontal_tab_strip_region_view.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.h b/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.h -index d1098733c4f4c83793dd16d94088ea59b579d0b2..2815fb2019dceb081709dbe3d8beac958c9699bb 100644 +index 79b2765d4d02495ee55c1897d19731441c31e002..063b3f6e99142dc3272c89ae4d4f3a5cec829e63 100644 --- a/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.h +++ b/chrome/browser/ui/views/frame/horizontal_tab_strip_region_view.h -@@ -35,7 +35,7 @@ class TabStripFlatEdgeButton; +@@ -33,7 +33,7 @@ class TabStripControlButton; // Container for the tabstrip and the other views sharing space with it - // with the exception of the caption buttons. diff --git a/patches/chrome-browser-ui-views-frame-layout-browser_view_tabbed_layout_impl.cc.patch b/patches/chrome-browser-ui-views-frame-layout-browser_view_tabbed_layout_impl.cc.patch index cc470f35bd8..d72dbabba8a 100644 --- a/patches/chrome-browser-ui-views-frame-layout-browser_view_tabbed_layout_impl.cc.patch +++ b/patches/chrome-browser-ui-views-frame-layout-browser_view_tabbed_layout_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/frame/layout/browser_view_tabbed_layout_impl.cc b/chrome/browser/ui/views/frame/layout/browser_view_tabbed_layout_impl.cc -index eb2876bca56c4175c5689c198ec30284218da072..a4e0870d591a3cab9c636d10ee915f03cdfa0a24 100644 +index 39eaf48e023ed8a0d083a3817f347c783e36db65..803da61f2e839e64cdb67fd590a9f5ff07e112cd 100644 --- a/chrome/browser/ui/views/frame/layout/browser_view_tabbed_layout_impl.cc +++ b/chrome/browser/ui/views/frame/layout/browser_view_tabbed_layout_impl.cc -@@ -561,7 +561,7 @@ BrowserViewTabbedLayoutImpl::CalculateProposedLayout( +@@ -624,7 +624,7 @@ BrowserViewTabbedLayoutImpl::CalculateProposedLayout( } BrowserLayoutParams params = browser_params; diff --git a/patches/chrome-browser-ui-views-location_bar-location_bar_view.cc.patch b/patches/chrome-browser-ui-views-location_bar-location_bar_view.cc.patch index ca5e19857f5..02d4ffe6b9e 100644 --- a/patches/chrome-browser-ui-views-location_bar-location_bar_view.cc.patch +++ b/patches/chrome-browser-ui-views-location_bar-location_bar_view.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc -index f920fdfb0bcaca755c92ee459270b78011503952..67f8ed8ada65a6da8562edfdbb10c837dfd0c593 100644 +index a5039973e1528b948499c1e7440e119a7d3b692c..157cbc911007c8fe442d25813bda22db4b36f945 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc @@ -860,6 +860,7 @@ void LocationBarView::Layout(PassKey) { diff --git a/patches/chrome-browser-ui-views-location_bar-location_icon_view.cc.patch b/patches/chrome-browser-ui-views-location_bar-location_icon_view.cc.patch index 7ddba733aed..bcf853576cf 100644 --- a/patches/chrome-browser-ui-views-location_bar-location_icon_view.cc.patch +++ b/patches/chrome-browser-ui-views-location_bar-location_icon_view.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/location_bar/location_icon_view.cc b/chrome/browser/ui/views/location_bar/location_icon_view.cc -index 183afb4d5e8e50a0d2f8599d51a83ae50bc284a6..b057a5cdaad3f2edf7bfaf363fff7e3266bd8122 100644 +index a47529da1a23cc7851a7d940dfa5b9c15545eb0e..521722f19dd1f19e22d8ff395794d2ea6c6bc32e 100644 --- a/chrome/browser/ui/views/location_bar/location_icon_view.cc +++ b/chrome/browser/ui/views/location_bar/location_icon_view.cc -@@ -352,6 +352,7 @@ void LocationIconView::UpdateBackground() { +@@ -297,6 +297,7 @@ void LocationIconView::UpdateBackground() { SetBackgroundColor(GetColorProvider()->GetColor(id)); diff --git a/patches/chrome-browser-ui-views-overlay-video_overlay_window_views.cc.patch b/patches/chrome-browser-ui-views-overlay-video_overlay_window_views.cc.patch index 3cfeb2c6864..1871b341dab 100644 --- a/patches/chrome-browser-ui-views-overlay-video_overlay_window_views.cc.patch +++ b/patches/chrome-browser-ui-views-overlay-video_overlay_window_views.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/overlay/video_overlay_window_views.cc b/chrome/browser/ui/views/overlay/video_overlay_window_views.cc -index 69b2fbfbcbabda336021c5b4935f6d6e4cdd1a7e..d2d0271802308e8b362a92d9effac3a2c97bda3f 100644 +index 4fb1404d16398793a1658fcf0c3efebffafced13..1bfb589df78a091cf8170d34985fdca51ac0da48 100644 --- a/chrome/browser/ui/views/overlay/video_overlay_window_views.cc +++ b/chrome/browser/ui/views/overlay/video_overlay_window_views.cc @@ -354,7 +354,7 @@ std::unique_ptr VideoOverlayWindowViews::Create( diff --git a/patches/chrome-browser-ui-views-page_action-action_ids.h.patch b/patches/chrome-browser-ui-views-page_action-action_ids.h.patch index 3e6b4c421d5..56bcd19157b 100644 --- a/patches/chrome-browser-ui-views-page_action-action_ids.h.patch +++ b/patches/chrome-browser-ui-views-page_action-action_ids.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/page_action/action_ids.h b/chrome/browser/ui/views/page_action/action_ids.h -index 98b2fa389eeb2c2c2733ca423a965f665a54c438..3c4872b1726390a614c56b3f25ec8b378519a6fb 100644 +index a5f6c92a1d8cf5d41fbe9af024143cc48401af02..4ec8463ba8ffaca66abbfe8022f366835c7f5505 100644 --- a/chrome/browser/ui/views/page_action/action_ids.h +++ b/chrome/browser/ui/views/page_action/action_ids.h @@ -16,6 +16,7 @@ namespace page_actions { diff --git a/patches/chrome-browser-ui-views-page_action-page_action_controller.h.patch b/patches/chrome-browser-ui-views-page_action-page_action_controller.h.patch index 3e20147b146..b90da9eace4 100644 --- a/patches/chrome-browser-ui-views-page_action-page_action_controller.h.patch +++ b/patches/chrome-browser-ui-views-page_action-page_action_controller.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/page_action/page_action_controller.h b/chrome/browser/ui/views/page_action/page_action_controller.h -index f8b60561923541d940cbc6c7fdee6fa0d025584f..69bd78e2632769ee82bf473c668576c660109869 100644 +index 730b49f9a3e8a9d10c3ba1357a0d8d1172e170d5..b26e564898ec31ece4ae55059cb1296ce6f3af67 100644 --- a/chrome/browser/ui/views/page_action/page_action_controller.h +++ b/chrome/browser/ui/views/page_action/page_action_controller.h -@@ -109,6 +109,27 @@ class PageActionController { +@@ -144,6 +144,27 @@ class PageActionController { public: virtual ~PageActionController() = default; @@ -30,7 +30,7 @@ index f8b60561923541d940cbc6c7fdee6fa0d025584f..69bd78e2632769ee82bf473c668576c6 // Requests that the page action be shown or hidden. virtual void Show(actions::ActionId action_id) = 0; virtual void Hide(actions::ActionId action_id) = 0; -@@ -246,6 +267,18 @@ class PageActionControllerImpl : public PageActionController, +@@ -286,6 +307,18 @@ class PageActionControllerImpl : public PageActionController, PageActionControllerImpl& operator=(const PageActionControllerImpl&) = delete; ~PageActionControllerImpl() override; diff --git a/patches/chrome-browser-ui-views-page_action-page_action_model.h.patch b/patches/chrome-browser-ui-views-page_action-page_action_model.h.patch index 90a184ae1d2..f222d8ea580 100644 --- a/patches/chrome-browser-ui-views-page_action-page_action_model.h.patch +++ b/patches/chrome-browser-ui-views-page_action-page_action_model.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/page_action/page_action_model.h b/chrome/browser/ui/views/page_action/page_action_model.h -index a3d1abf58e71b25edb1487e2cf92c5587539d85b..e928a6a2c80bac025e6a64258fdc3c693e08562e 100644 +index 05c873f91672109a073561149122969c5d906069..2cab1aaf5e6c742e437bcb849105912af57a106e 100644 --- a/chrome/browser/ui/views/page_action/page_action_model.h +++ b/chrome/browser/ui/views/page_action/page_action_model.h -@@ -33,6 +33,22 @@ class PageActionModelInterface { +@@ -40,6 +40,22 @@ class PageActionModelInterface { public: PageActionModelInterface() = default; virtual ~PageActionModelInterface() = default; @@ -25,7 +25,7 @@ index a3d1abf58e71b25edb1487e2cf92c5587539d85b..e928a6a2c80bac025e6a64258fdc3c69 virtual void AddObserver(PageActionModelObserver* observer) = 0; virtual void RemoveObserver(PageActionModelObserver* observer) = 0; -@@ -120,6 +136,31 @@ class PageActionModel : public PageActionModelInterface { +@@ -130,6 +146,31 @@ class PageActionModel : public PageActionModelInterface { PageActionModel& operator=(const PageActionModel&) = delete; ~PageActionModel() override; @@ -57,7 +57,7 @@ index a3d1abf58e71b25edb1487e2cf92c5587539d85b..e928a6a2c80bac025e6a64258fdc3c69 void AddObserver(PageActionModelObserver* observer) override; void RemoveObserver(PageActionModelObserver* observer) override; -@@ -210,6 +251,10 @@ class PageActionModel : public PageActionModelInterface { +@@ -223,6 +264,10 @@ class PageActionModel : public PageActionModelInterface { // per-property reentrancy checks. enum class Property { kShowRequested, diff --git a/patches/chrome-browser-ui-views-page_action-page_action_properties_provider.cc.patch b/patches/chrome-browser-ui-views-page_action-page_action_properties_provider.cc.patch index a3468e141cb..a9c3226a2db 100644 --- a/patches/chrome-browser-ui-views-page_action-page_action_properties_provider.cc.patch +++ b/patches/chrome-browser-ui-views-page_action-page_action_properties_provider.cc.patch @@ -1,9 +1,9 @@ diff --git a/chrome/browser/ui/views/page_action/page_action_properties_provider.cc b/chrome/browser/ui/views/page_action/page_action_properties_provider.cc -index 854463654ab80a5242402e9ff86fc506d621c4ff..16220cd577a3902f019d07bea71be2f1f9455f60 100644 +index 6987316ac59d5d5f2b296a18d646c5dc09a789fc..30f3d343aaeadafb06453cb604b22eea68027f93 100644 --- a/chrome/browser/ui/views/page_action/page_action_properties_provider.cc +++ b/chrome/browser/ui/views/page_action/page_action_properties_provider.cc -@@ -190,6 +190,13 @@ constexpr auto kPageActionProperties = - .type = PageActionIconType::kAutofillAddress, +@@ -193,6 +193,13 @@ constexpr auto kPageActionProperties = + .element_identifier = kAutofillAddressPageActionElementId, }, }, + { diff --git a/patches/chrome-browser-ui-views-page_action-page_action_view.cc.patch b/patches/chrome-browser-ui-views-page_action-page_action_view.cc.patch index 3a7d9a5aea6..f22f68dee7e 100644 --- a/patches/chrome-browser-ui-views-page_action-page_action_view.cc.patch +++ b/patches/chrome-browser-ui-views-page_action-page_action_view.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/page_action/page_action_view.cc b/chrome/browser/ui/views/page_action/page_action_view.cc -index 6471745b5f2aa666d517e14d1c259821755a2a5e..21cd4d8a70cae18eee6b16ca9af9650d0c864d4b 100644 +index d04fe827e1c8448d223c44ae8cb13287a787c1ac..9d0524bd6e815ae3cb700829a505bd412084bc05 100644 --- a/chrome/browser/ui/views/page_action/page_action_view.cc +++ b/chrome/browser/ui/views/page_action/page_action_view.cc @@ -135,7 +135,7 @@ void PageActionView::OnPageActionModelChanged( diff --git a/patches/chrome-browser-ui-views-page_info-page_info_cookies_content_view.cc.patch b/patches/chrome-browser-ui-views-page_info-page_info_cookies_content_view.cc.patch index a57af6ae6c4..94e3eec651d 100644 --- a/patches/chrome-browser-ui-views-page_info-page_info_cookies_content_view.cc.patch +++ b/patches/chrome-browser-ui-views-page_info-page_info_cookies_content_view.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc b/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc -index 3abf87556ecc7b17253ea103f3a8204f71d611c6..24676a81a7cd1996746e8661ab9deacb7fe30c92 100644 +index 145c7e9fa39ec606ceb6bcba99308d8ce34207a8..b4ddd6d38a299f20e9de13897a5f33a5a76f0d7d 100644 --- a/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_cookies_content_view.cc -@@ -330,6 +330,7 @@ void PageInfoCookiesContentView::SetThirdPartyCookiesInfo( +@@ -335,6 +335,7 @@ void PageInfoCookiesContentView::SetThirdPartyCookiesInfo( CookieControlsState controls_state, CookieControlsEnforcement enforcement, base::Time expiration) { diff --git a/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.h.patch b/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.h.patch index 497ca1521bc..4d02fc35bb2 100644 --- a/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.h.patch +++ b/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/profiles/avatar_toolbar_button.h b/chrome/browser/ui/views/profiles/avatar_toolbar_button.h -index 28caee9dd31c96d3dcca8040e91e5d9bb546972c..9f767a862cce4b248c012b246024f798c6cb8b77 100644 +index ea090b62bd84b029c2e21895272963cc8c8e5656..d5b15390c34147742a2bcafaab8ccb26df2ef862 100644 --- a/chrome/browser/ui/views/profiles/avatar_toolbar_button.h +++ b/chrome/browser/ui/views/profiles/avatar_toolbar_button.h @@ -174,6 +174,7 @@ class AvatarToolbarButton : public ToolbarButton, diff --git a/patches/chrome-browser-ui-views-profiles-profile_menu_view_base.h.patch b/patches/chrome-browser-ui-views-profiles-profile_menu_view_base.h.patch index ab58a5f5f08..b3328ffc859 100644 --- a/patches/chrome-browser-ui-views-profiles-profile_menu_view_base.h.patch +++ b/patches/chrome-browser-ui-views-profiles-profile_menu_view_base.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.h b/chrome/browser/ui/views/profiles/profile_menu_view_base.h -index 0621ead4149f85519ae9c359cedbabf33c240008..944929234a99bc93937c8bd59e529a6b03afe8b5 100644 +index 20dd2e96039f8b55beaf0e545c4f953011adbee1..6890e758839a32e82c4bee9af00e4d0f1a7f7d4b 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view_base.h +++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.h -@@ -204,6 +204,7 @@ class ProfileMenuViewBase : public content::WebContentsDelegate, +@@ -203,6 +203,7 @@ class ProfileMenuViewBase : public content::WebContentsDelegate, return identity_button_; } diff --git a/patches/chrome-browser-ui-views-side_panel-BUILD.gn.patch b/patches/chrome-browser-ui-views-side_panel-BUILD.gn.patch index 91c9b6a16ea..6276b7985bc 100644 --- a/patches/chrome-browser-ui-views-side_panel-BUILD.gn.patch +++ b/patches/chrome-browser-ui-views-side_panel-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/side_panel/BUILD.gn b/chrome/browser/ui/views/side_panel/BUILD.gn -index e3bc99078f4732e86b6998933357666360a62e7a..503ba9afc1a5b59f03d29671befcb3c406eb618f 100644 +index 555a27ca0c1717f9792b3e4d4b5ebcc06627716e..f804d9a5d2fe22046569c9a8e308da864944d4a6 100644 --- a/chrome/browser/ui/views/side_panel/BUILD.gn +++ b/chrome/browser/ui/views/side_panel/BUILD.gn -@@ -176,6 +176,7 @@ source_set("side_panel") { +@@ -172,6 +172,7 @@ source_set("side_panel") { "//ui/webui", ] diff --git a/patches/chrome-browser-ui-views-side_panel-bookmarks-bookmarks_side_panel_coordinator.h.patch b/patches/chrome-browser-ui-views-side_panel-bookmarks-bookmarks_side_panel_coordinator.h.patch index 0390ef6f504..88cae9bc00b 100644 --- a/patches/chrome-browser-ui-views-side_panel-bookmarks-bookmarks_side_panel_coordinator.h.patch +++ b/patches/chrome-browser-ui-views-side_panel-bookmarks-bookmarks_side_panel_coordinator.h.patch @@ -1,12 +1,12 @@ diff --git a/chrome/browser/ui/views/side_panel/bookmarks/bookmarks_side_panel_coordinator.h b/chrome/browser/ui/views/side_panel/bookmarks/bookmarks_side_panel_coordinator.h -index 3261f83b474d41255a94dc3d47c915eb536d40c8..d4d80d896f297a56bf926183fea8599d55b4987e 100644 +index b08aa0cddccddeddf58e49f3cfca51422bdfc66e..b714f5ad9bf0fe3b549411da11faa1188e21a602 100644 --- a/chrome/browser/ui/views/side_panel/bookmarks/bookmarks_side_panel_coordinator.h +++ b/chrome/browser/ui/views/side_panel/bookmarks/bookmarks_side_panel_coordinator.h -@@ -21,6 +21,7 @@ class View; - class BookmarksSidePanelCoordinator { +@@ -24,6 +24,7 @@ class BookmarksSidePanelCoordinator { public: - BookmarksSidePanelCoordinator(); + explicit BookmarksSidePanelCoordinator( + BrowserWindowInterface& browser_window_interface); + virtual - ~BookmarksSidePanelCoordinator() = default; + ~BookmarksSidePanelCoordinator(); - void CreateAndRegisterEntry(SidePanelRegistry* global_registry); + static BookmarksSidePanelCoordinator* From(BrowserWindowInterface* browser); diff --git a/patches/chrome-browser-ui-views-side_panel-side_panel_coordinator.h.patch b/patches/chrome-browser-ui-views-side_panel-side_panel_coordinator.h.patch index 939aa4c6b75..148ce97f5a6 100644 --- a/patches/chrome-browser-ui-views-side_panel-side_panel_coordinator.h.patch +++ b/patches/chrome-browser-ui-views-side_panel-side_panel_coordinator.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/side_panel/side_panel_coordinator.h b/chrome/browser/ui/views/side_panel/side_panel_coordinator.h -index 982a679e9e4ee867c8c6293b27c70d8e988a783e..f33009f5d2d123724b22d3fd369ab1afd5c778fe 100644 +index d249c2de310a739577361d834e91c189c86fd7a0..6828373d67e20d0135d4f708b31022ecd13b19f4 100644 --- a/chrome/browser/ui/views/side_panel/side_panel_coordinator.h +++ b/chrome/browser/ui/views/side_panel/side_panel_coordinator.h -@@ -36,7 +36,7 @@ class View; +@@ -37,7 +37,7 @@ class View; // Existence and value of registries' active_entry() determines which entry is // visible for a given tab where the order of precedence is contextual // registry's active_entry() then global registry's. diff --git a/patches/chrome-browser-ui-views-tabs-dragging-tab_drag_controller.h.patch b/patches/chrome-browser-ui-views-tabs-dragging-tab_drag_controller.h.patch index 84211a000bb..9026e4733b9 100644 --- a/patches/chrome-browser-ui-views-tabs-dragging-tab_drag_controller.h.patch +++ b/patches/chrome-browser-ui-views-tabs-dragging-tab_drag_controller.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/tabs/dragging/tab_drag_controller.h b/chrome/browser/ui/views/tabs/dragging/tab_drag_controller.h -index 48a432ac2db8c7119d3bf36754419f07390893f5..8c4deefe04c532f5370ef6ac6a8d224d408fcbbe 100644 +index b7db88b675d8010273c867c9f30215b771cd062a..3340ec9f875da94b891b1f1634ba5accdde8a897 100644 --- a/chrome/browser/ui/views/tabs/dragging/tab_drag_controller.h +++ b/chrome/browser/ui/views/tabs/dragging/tab_drag_controller.h @@ -135,7 +135,7 @@ class TabDragController : public views::WidgetObserver, diff --git a/patches/chrome-browser-ui-views-tabs-hovercard-tab_hover_card_bubble_view.h.patch b/patches/chrome-browser-ui-views-tabs-hovercard-tab_hover_card_bubble_view.h.patch new file mode 100644 index 00000000000..63a1f072f1b --- /dev/null +++ b/patches/chrome-browser-ui-views-tabs-hovercard-tab_hover_card_bubble_view.h.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h b/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h +index 18b3db2edbdf9c28b9c77585d7abc939f1af6e50..33939b81a54cc7ba7c979f169baf26318783fd60 100644 +--- a/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h ++++ b/chrome/browser/ui/views/tabs/hovercard/tab_hover_card_bubble_view.h +@@ -107,6 +107,7 @@ class TabHoverCardBubbleView : public views::BubbleDialogDelegateView { + // available, or `std::nullopt` to disable crossfades entirely. + static std::optional GetPreviewImageCrossfadeStart(); + ++ BRAVE_TAB_HOVER_CARD_BUBBLE_VIEW_H_ + protected: + class ThumbnailView; + diff --git a/patches/chrome-browser-ui-views-tabs-tab.cc.patch b/patches/chrome-browser-ui-views-tabs-tab.cc.patch index 053f46a8aff..d79a61ec9e2 100644 --- a/patches/chrome-browser-ui-views-tabs-tab.cc.patch +++ b/patches/chrome-browser-ui-views-tabs-tab.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc -index 5eb82642318a922e9faefb1d696c597aa5c062c4..babfc7af6aeb6c0fb2434da40474dbda7aa1fdbf 100644 +index efa9e31601ed843218efaead33766b980899e90f..ec28278cb9f26e4206afc2d84624d8252242d2f4 100644 --- a/chrome/browser/ui/views/tabs/tab.cc +++ b/chrome/browser/ui/views/tabs/tab.cc -@@ -402,6 +402,7 @@ void Tab::Layout(PassKey) { +@@ -405,6 +405,7 @@ void Tab::Layout(PassKey) { // indicator, but visually it will be smaller at kFaviconSize wide. gfx::Rect favicon_bounds(start, contents_rect.y(), 0, 0); if (showing_icon_) { @@ -10,7 +10,7 @@ index 5eb82642318a922e9faefb1d696c597aa5c062c4..babfc7af6aeb6c0fb2434da40474dbda if (center_icon_) { // When centering the favicon, the favicon is allowed to escape the normal // contents rect. -@@ -499,6 +500,7 @@ void Tab::Layout(PassKey) { +@@ -505,6 +506,7 @@ void Tab::Layout(PassKey) { int title_right = contents_rect.right(); if (showing_alert_indicator_) { title_right = alert_indicator_button_->x() - after_title_padding; @@ -18,7 +18,7 @@ index 5eb82642318a922e9faefb1d696c597aa5c062c4..babfc7af6aeb6c0fb2434da40474dbda } else if (showing_close_button_) { // Allow the title to overlay the close button's empty border padding. title_right = close_x - after_title_padding; -@@ -646,7 +648,7 @@ void Tab::OnMouseReleased(const ui::MouseEvent& event) { +@@ -652,7 +654,7 @@ void Tab::OnMouseReleased(const ui::MouseEvent& event) { // Close tab on middle click, but only if the button is released over the tab // (normal windows behavior is to discard presses of a UI element where the // releases happen off the element). diff --git a/patches/chrome-browser-ui-views-tabs-tab.h.patch b/patches/chrome-browser-ui-views-tabs-tab.h.patch index 6ee66d7084e..e7e367b3454 100644 --- a/patches/chrome-browser-ui-views-tabs-tab.h.patch +++ b/patches/chrome-browser-ui-views-tabs-tab.h.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/tabs/tab.h b/chrome/browser/ui/views/tabs/tab.h -index 6cd517dd3706c663a2092e9dc0de0e5229b320a9..2651092d68a43f7476e0c8bf4bbacc60b4429159 100644 +index e3fe43ec48c0cf387ae3cc49aac9e49ecfb8572b..769b3fb6bd543da40216b9f1530615f41f90dc66 100644 --- a/chrome/browser/ui/views/tabs/tab.h +++ b/chrome/browser/ui/views/tabs/tab.h -@@ -301,7 +301,7 @@ class Tab : public gfx::AnimationDelegate, +@@ -310,7 +310,7 @@ class Tab : public gfx::AnimationDelegate, // Whether we are showing the close button. It is cached so that we can // detect when it changes and layout appropriately. diff --git a/patches/chrome-browser-ui-views-tabs-tab_hover_card_bubble_view.h.patch b/patches/chrome-browser-ui-views-tabs-tab_hover_card_bubble_view.h.patch deleted file mode 100644 index a0e74c02323..00000000000 --- a/patches/chrome-browser-ui-views-tabs-tab_hover_card_bubble_view.h.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h b/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h -index fabec4410e7c7fe26379bbfbecdc4e5080f56147..685852d37fc5d43b053bf3b9c366c725a838f137 100644 ---- a/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h -+++ b/chrome/browser/ui/views/tabs/tab_hover_card_bubble_view.h -@@ -104,6 +104,7 @@ class TabHoverCardBubbleView : public views::BubbleDialogDelegateView { - // available, or `std::nullopt` to disable crossfades entirely. - static std::optional GetPreviewImageCrossfadeStart(); - -+ BRAVE_TAB_HOVER_CARD_BUBBLE_VIEW_H_ - protected: - // views::View: - void AddedToWidget() override; diff --git a/patches/chrome-browser-ui-views-tabs-tab_strip.cc.patch b/patches/chrome-browser-ui-views-tabs-tab_strip.cc.patch index 483ad55e678..0a5997a4e2b 100644 --- a/patches/chrome-browser-ui-views-tabs-tab_strip.cc.patch +++ b/patches/chrome-browser-ui-views-tabs-tab_strip.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc -index 8964767230cca9fb96abdc67893fbe803e0f09ea..e527496900849722145fc119dbf0e810977288aa 100644 +index 6096db72868ca2ac2684c4744e836a0f8d27acc6..fe472b1e4ae0f43e483b4dbb88e49cd72cff818b 100644 --- a/chrome/browser/ui/views/tabs/tab_strip.cc +++ b/chrome/browser/ui/views/tabs/tab_strip.cc -@@ -350,7 +350,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext, +@@ -352,7 +352,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext, event.type() == ui::EventType::kGestureScrollBegin)) << "Event type must be suitable for starting a drag."; @@ -11,7 +11,7 @@ index 8964767230cca9fb96abdc67893fbe803e0f09ea..e527496900849722145fc119dbf0e810 // !!! Init may delete `drag_controller_` on some platforms. !!! // Init takes capture, which on some platforms may reenter Chrome, the -@@ -591,6 +591,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext, +@@ -593,6 +593,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext, std::vector CalculateBoundsForDraggedViews( const std::vector& views) override { @@ -19,7 +19,7 @@ index 8964767230cca9fb96abdc67893fbe803e0f09ea..e527496900849722145fc119dbf0e810 CHECK(!views.empty()) << "The views vector must not be empty."; std::vector bounds; -@@ -940,6 +941,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext, +@@ -942,6 +943,7 @@ class TabStrip::TabDragContextImpl : public TabDragContext, continue; } @@ -27,7 +27,7 @@ index 8964767230cca9fb96abdc67893fbe803e0f09ea..e527496900849722145fc119dbf0e810 // If there's a group header here, and we're dragging a group, we might // end up on either side of that header. Check both cases to find the // best option. -@@ -1510,7 +1512,7 @@ void TabStrip::SetSelection(const ui::ListSelectionModel& new_selection) { +@@ -1501,7 +1503,7 @@ void TabStrip::SetSelection(const ui::ListSelectionModel& new_selection) { const tab_groups::TabGroupId new_group = selected_tab->group().value(); // If the tab that is about to be selected is in a collapsed group, // automatically expand the group. diff --git a/patches/chrome-browser-ui-views-tabs-tab_style_views.cc.patch b/patches/chrome-browser-ui-views-tabs-tab_style_views.cc.patch index b992b998f47..86233215a4d 100644 --- a/patches/chrome-browser-ui-views-tabs-tab_style_views.cc.patch +++ b/patches/chrome-browser-ui-views-tabs-tab_style_views.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/tabs/tab_style_views.cc b/chrome/browser/ui/views/tabs/tab_style_views.cc -index 06cb552168bd568a1702107e512f127ea217d553..891396cfe221b541ee96f24534da8f0e5a19d931 100644 +index f5155d8e3d0e79cf6a75b48d163b85fcb2f99d96..9122703351127d10f02a383d3ca51d160514a5c3 100644 --- a/chrome/browser/ui/views/tabs/tab_style_views.cc +++ b/chrome/browser/ui/views/tabs/tab_style_views.cc @@ -123,6 +123,7 @@ class TabStyleViewsImpl : public TabStyleViews { @@ -18,7 +18,7 @@ index 06cb552168bd568a1702107e512f127ea217d553..891396cfe221b541ee96f24534da8f0e bool IsHovering() const; // Returns whether the hover animation is being shown. -@@ -364,6 +366,7 @@ SkPath TabStyleViewsImpl::GetPath(TabStyle::PathType path_type, +@@ -362,6 +364,7 @@ SkPath TabStyleViewsImpl::GetPath(TabStyle::PathType path_type, extension_corner_radius -= 0.5f * stroke_adjustment; } const bool compact_left_to_bottom = ShouldCompactLeadingEdge(path_type); @@ -26,7 +26,7 @@ index 06cb552168bd568a1702107e512f127ea217d553..891396cfe221b541ee96f24534da8f0e float left_extension_corner_radius = extension_corner_radius; if (compact_left_to_bottom) { -@@ -1041,14 +1044,18 @@ void TabStyleViewsImpl::PaintSeparators(gfx::Canvas* canvas) const { +@@ -1039,14 +1042,18 @@ void TabStyleViewsImpl::PaintSeparators(gfx::Canvas* canvas) const { SK_AlphaOPAQUE)); }; diff --git a/patches/chrome-browser-ui-views-tabs-vertical-tab_collection_node.cc.patch b/patches/chrome-browser-ui-views-tabs-vertical-tab_collection_node.cc.patch index f4f6dc2468a..436e8a3336b 100644 --- a/patches/chrome-browser-ui-views-tabs-vertical-tab_collection_node.cc.patch +++ b/patches/chrome-browser-ui-views-tabs-vertical-tab_collection_node.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/tabs/vertical/tab_collection_node.cc b/chrome/browser/ui/views/tabs/vertical/tab_collection_node.cc -index 3f6e58c37d76c2e8fbe9948d9274cbbad1d6c0b7..fbcf378f36b435a17d4ef46ae270858b622a09f9 100644 +index 6b45055b4443f88131ac03df55166cb8b9596ea9..20f79349856a952a9409f5dcdb12dfe56975c22b 100644 --- a/chrome/browser/ui/views/tabs/vertical/tab_collection_node.cc +++ b/chrome/browser/ui/views/tabs/vertical/tab_collection_node.cc -@@ -37,6 +37,7 @@ TabCollectionNode::Type GetTypeFromNode(tabs::ConstChildPtr node_data_) { +@@ -38,6 +38,7 @@ TabCollectionNode::Type GetTypeFromNode(tabs::ConstChildPtr node_data_) { return TabCollectionNode::Type::GROUP; case tabs::TabCollection::Type::SPLIT: return TabCollectionNode::Type::SPLIT; @@ -10,7 +10,7 @@ index 3f6e58c37d76c2e8fbe9948d9274cbbad1d6c0b7..fbcf378f36b435a17d4ef46ae270858b } } CHECK(std::holds_alternative(node_data_)); -@@ -105,6 +106,7 @@ std::unique_ptr TabCollectionNode::CreateViewForNode( +@@ -106,6 +107,7 @@ std::unique_ptr TabCollectionNode::CreateViewForNode( return std::make_unique(node_for_view); case Type::TAB: return std::make_unique(node_for_view); diff --git a/patches/chrome-browser-ui-views-toolbar-app_menu.h.patch b/patches/chrome-browser-ui-views-toolbar-app_menu.h.patch index a115c8a1f33..a08bf7e07cf 100644 --- a/patches/chrome-browser-ui-views-toolbar-app_menu.h.patch +++ b/patches/chrome-browser-ui-views-toolbar-app_menu.h.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/toolbar/app_menu.h b/chrome/browser/ui/views/toolbar/app_menu.h -index 572500b8d8257358916a05615898b3fc6c36af79..9ace56b5f8b2fb487d94e25eacf806011a803251 100644 +index f2acf6e7111efe3cdd8a59fe580db5be62a12c2a..89420ab38e5205c210fd43dcab6f0ea3b5cc947b 100644 --- a/chrome/browser/ui/views/toolbar/app_menu.h +++ b/chrome/browser/ui/views/toolbar/app_menu.h @@ -34,7 +34,7 @@ class MenuRunner; diff --git a/patches/chrome-browser-ui-views-toolbar-toolbar_view.cc.patch b/patches/chrome-browser-ui-views-toolbar-toolbar_view.cc.patch index 50954581191..4e8da366981 100644 --- a/patches/chrome-browser-ui-views-toolbar-toolbar_view.cc.patch +++ b/patches/chrome-browser-ui-views-toolbar-toolbar_view.cc.patch @@ -1,9 +1,9 @@ diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc -index 1cf41ed40cff86e73de855995614f0afe074c36a..976a4abe20205fe55a0c0dbc7e6001f8fad52d79 100644 +index 1701b7550912ab4dba2ce3741af6016394afe37e..f37a53f7c0a210bfefe92c295300d25e5163bd39 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc -@@ -597,6 +597,7 @@ void ToolbarView::Init() { - media_button_ = AddChildView(std::move(media_button)); +@@ -572,6 +572,7 @@ void ToolbarView::Init() { + } } + BRAVE_TOOLBAR_VIEW_INIT diff --git a/patches/chrome-browser-ui-views-translate-translate_bubble_view_unittest.cc.patch b/patches/chrome-browser-ui-views-translate-translate_bubble_view_unittest.cc.patch index 8ee91e08d4c..2dc74cd714b 100644 --- a/patches/chrome-browser-ui-views-translate-translate_bubble_view_unittest.cc.patch +++ b/patches/chrome-browser-ui-views-translate-translate_bubble_view_unittest.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc -index e5efc13441a82fe8110df484798e06ec7c19936a..1d393dc18577e05178d1bb66aea289ee03ccbd42 100644 +index 9045a64a51685cc948e2efabb7b530aeeb7844be..884d164f81b2c6a84813f40d111418151accb4e3 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc @@ -174,6 +174,7 @@ class TranslateBubbleViewTest : public ChromeViewsTestBase { diff --git a/patches/chrome-browser-ui-views-user_education-browser_user_education_service.cc.patch b/patches/chrome-browser-ui-views-user_education-browser_user_education_service.cc.patch index a207237beb3..8ce44632356 100644 --- a/patches/chrome-browser-ui-views-user_education-browser_user_education_service.cc.patch +++ b/patches/chrome-browser-ui-views-user_education-browser_user_education_service.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/views/user_education/browser_user_education_service.cc b/chrome/browser/ui/views/user_education/browser_user_education_service.cc -index b7ec475c863755bd4f8fa1a816e8b3cc6ada7e40..c06c1db69134c1a539213782b2aa70f37e27f7eb 100644 +index 865c12b3e545b24fcdef3bf13552c50547d3a196..9b9c62a4ab16a68419f59d841c81b988ded75b38 100644 --- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc +++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc -@@ -326,6 +326,7 @@ void MaybeRegisterChromeFeaturePromos( +@@ -323,6 +323,7 @@ void MaybeRegisterChromeFeaturePromos( feature_engagement::kIPHWebUiHelpBubbleTestFeature)) { return; } diff --git a/patches/chrome-browser-ui-webui-BUILD.gn.patch b/patches/chrome-browser-ui-webui-BUILD.gn.patch index 0e39c6c326a..6261afc60b1 100644 --- a/patches/chrome-browser-ui-webui-BUILD.gn.patch +++ b/patches/chrome-browser-ui-webui-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/BUILD.gn b/chrome/browser/ui/webui/BUILD.gn -index d8294ffa72da32a99a06214271dd1352619cdf2b..f14458392441e82067d543e670a8cf1bb32457cc 100644 +index 0cccaa551b87121703e3bd183ad0a4a93a71f7e7..d4255cc92e10110ea48093f82bef5f2503b9ee16 100644 --- a/chrome/browser/ui/webui/BUILD.gn +++ b/chrome/browser/ui/webui/BUILD.gn -@@ -146,6 +146,7 @@ source_set("configs") { +@@ -148,6 +148,7 @@ source_set("configs") { if (is_mac) { deps += [ "//chrome/browser/ui/webui/unexportable_keys_internals" ] } diff --git a/patches/chrome-browser-ui-webui-cr_components-searchbox-searchbox_handler.cc.patch b/patches/chrome-browser-ui-webui-cr_components-searchbox-searchbox_handler.cc.patch index 3541bcce3b6..ac6a737ba19 100644 --- a/patches/chrome-browser-ui-webui-cr_components-searchbox-searchbox_handler.cc.patch +++ b/patches/chrome-browser-ui-webui-cr_components-searchbox-searchbox_handler.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc b/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc -index e617abe61c629296b1e4b167fb146afe1d9c3755..e962c00520868b6778703caf5465c9fe6daedda4 100644 +index e9c7a9180c85381486c18b30d27e3cad9828e986..05c2b60e23fb48053afb878b3cf7cc205c982ea4 100644 --- a/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc +++ b/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc -@@ -618,6 +618,7 @@ std::string SearchboxHandler::AutocompleteIconToResourceName( +@@ -628,6 +628,7 @@ std::string SearchboxHandler::AutocompleteIconToResourceName( // TODO(446953331): It's error-prone to keep the above if's up to date. When // omnibox input and popup views are replaced with webUI, matches and // actions can store an icon enum instead of `VectorIcon`. diff --git a/patches/chrome-browser-ui-webui-extensions-extensions_ui.cc.patch b/patches/chrome-browser-ui-webui-extensions-extensions_ui.cc.patch index 38c0f4ef344..7faba70e709 100644 --- a/patches/chrome-browser-ui-webui-extensions-extensions_ui.cc.patch +++ b/patches/chrome-browser-ui-webui-extensions-extensions_ui.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc -index a68192c5921ce04c934da07a8364b000a0bdf38d..a9111873ff39562b29c61dbffdc365f099471ff7 100644 +index dbf1d5ce606a56ef6c7eba088104d79d1ad67837..f6ad1222ee4d4728637faf5b089c0fb2fc37a503 100644 --- a/chrome/browser/ui/webui/extensions/extensions_ui.cc +++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc -@@ -515,6 +515,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile, +@@ -514,6 +514,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile, l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_OS_NAME))); #endif // BUILDFLAG(IS_CHROMEOS) diff --git a/patches/chrome-browser-ui-webui-settings-import_data_handler.cc.patch b/patches/chrome-browser-ui-webui-settings-import_data_handler.cc.patch index bab3106d759..9ad3b0891d5 100644 --- a/patches/chrome-browser-ui-webui-settings-import_data_handler.cc.patch +++ b/patches/chrome-browser-ui-webui-settings-import_data_handler.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/settings/import_data_handler.cc b/chrome/browser/ui/webui/settings/import_data_handler.cc -index cdbe7b0119d5daffbabc669c08de49cae4680b03..9a08618d88c60eb3b51777de885d6ad1a66c5ea5 100644 +index 9b70f041c6b8b0c434ffe8b8db8a39f1095e4808..5ac90b75a64930691ab1142853b0a19a25b215ae 100644 --- a/chrome/browser/ui/webui/settings/import_data_handler.cc +++ b/chrome/browser/ui/webui/settings/import_data_handler.cc -@@ -146,6 +146,7 @@ void ImportDataHandler::HandleImportData(const base::ListValue& args) { +@@ -149,6 +149,7 @@ void ImportDataHandler::HandleImportData(const base::ListValue& args) { if (*type_dict.FindBool(prefs::kImportDialogSearchEngine)) { selected_items |= user_data_importer::SEARCH_ENGINES; } @@ -10,7 +10,7 @@ index cdbe7b0119d5daffbabc669c08de49cae4680b03..9a08618d88c60eb3b51777de885d6ad1 const user_data_importer::SourceProfile& source_profile = importer_list_->GetSourceProfileAt(browser_index); -@@ -226,6 +227,7 @@ void ImportDataHandler::SendBrowserProfileData(const std::string& callback_id) { +@@ -229,6 +230,7 @@ void ImportDataHandler::SendBrowserProfileData(const std::string& callback_id) { "autofillFormData", (browser_services & user_data_importer::AUTOFILL_FORM_DATA) != 0); diff --git a/patches/chrome-browser-ui-webui-settings-people_handler.cc.patch b/patches/chrome-browser-ui-webui-settings-people_handler.cc.patch index ad9c2b72e86..d259d2591d5 100644 --- a/patches/chrome-browser-ui-webui-settings-people_handler.cc.patch +++ b/patches/chrome-browser-ui-webui-settings-people_handler.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc -index ef29f7482a041eaa038276dcc46a86d968983fd6..7a0ad30cb2148d410bf6d92c275571beeef416c5 100644 +index 30360bd5cd01a375ed02f41bb452dadd3544290f..933b431cba743ea4f685c9ef5bf831704a88ca8d 100644 --- a/chrome/browser/ui/webui/settings/people_handler.cc +++ b/chrome/browser/ui/webui/settings/people_handler.cc -@@ -1153,6 +1153,7 @@ void PeopleHandler::OnSyncShutdown(syncer::SyncService* sync_service) { +@@ -1150,6 +1150,7 @@ void PeopleHandler::OnSyncShutdown(syncer::SyncService* sync_service) { void PeopleHandler::BeforeUnloadDialogCancelled() { // The before unload dialog is only shown during the first sync setup. @@ -10,7 +10,7 @@ index ef29f7482a041eaa038276dcc46a86d968983fd6..7a0ad30cb2148d410bf6d92c275571be DCHECK(IdentityManagerFactory::GetForProfile(profile_)->HasPrimaryAccount( signin::ConsentLevel::kSync)); syncer::SyncService* service = GetSyncService(); -@@ -1202,6 +1203,7 @@ base::DictValue PeopleHandler::GetSyncStatusDictionary() const { +@@ -1199,6 +1200,7 @@ base::DictValue PeopleHandler::GetSyncStatusDictionary() const { service && !disallowed_by_policy && service->IsSetupInProgress() && !service->GetUserSettings()->IsInitialSyncFeatureSetupComplete() && identity_manager->HasPrimaryAccount(signin::ConsentLevel::kSync)); @@ -18,7 +18,7 @@ index ef29f7482a041eaa038276dcc46a86d968983fd6..7a0ad30cb2148d410bf6d92c275571be SyncStatusLabels status_labels = GetSyncStatusLabelsForSettings( SyncServiceFactory::GetForProfile(profile_)); -@@ -1412,6 +1414,7 @@ void PeopleHandler::MaybeMarkSyncConfiguring() { +@@ -1408,6 +1410,7 @@ void PeopleHandler::MaybeMarkSyncConfiguring() { } bool PeopleHandler::IsProfileAuthNeededOrHasErrors() { diff --git a/patches/chrome-browser-ui-webui-settings-settings_localized_strings_provider.cc.patch b/patches/chrome-browser-ui-webui-settings-settings_localized_strings_provider.cc.patch index c6aa5344418..14720c0098d 100644 --- a/patches/chrome-browser-ui-webui-settings-settings_localized_strings_provider.cc.patch +++ b/patches/chrome-browser-ui-webui-settings-settings_localized_strings_provider.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -index 6f70406bc570c23177338c26a08b1fbe656069eb..1458d42cdd2592c3f1e66ca842d41b15c14233a7 100644 +index a0c5ecb6455e68173bbe6a29206c3568d3936a9c..b3acae4a165ba3e530003a4a32a2ef2907d2111e 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -4258,6 +4258,7 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -4312,6 +4312,7 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); diff --git a/patches/chrome-browser-ui-webui-settings-site_settings_helper.cc.patch b/patches/chrome-browser-ui-webui-settings-site_settings_helper.cc.patch index 5662ac19d33..53064ec1d0b 100644 --- a/patches/chrome-browser-ui-webui-settings-site_settings_helper.cc.patch +++ b/patches/chrome-browser-ui-webui-settings-site_settings_helper.cc.patch @@ -1,16 +1,16 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc -index a37a4d23d7bee7b46f24c1bdb9d7072b1fb2820f..98fdb84587ccfdb279351e9597793b0f0f207847 100644 +index 42d603bb9dc9accf799f9409b8b4e35743e22db3..1d03fd8e6a754d8a908a00ba083835cc95b94882 100644 --- a/chrome/browser/ui/webui/settings/site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -258,6 +258,7 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< - {ContentSettingsType::DEVICE_ATTRIBUTES, nullptr}, +@@ -261,6 +261,7 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< {ContentSettingsType::PERMISSION_ACTIONS_HISTORY, nullptr}, {ContentSettingsType::SUSPICIOUS_NOTIFICATION_SHOW_ORIGINAL, nullptr}, + {ContentSettingsType::DEPRECATED_SUB_APP_INSTALLATION_PROMPTS, nullptr}, + BRAVE_CONTENT_SETTINGS_TYPE_GROUP_NAMES_LIST }); static_assert( -@@ -532,6 +533,7 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -535,6 +536,7 @@ bool HasRegisteredGroupName(ContentSettingsType type) { } ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { @@ -18,7 +18,7 @@ index a37a4d23d7bee7b46f24c1bdb9d7072b1fb2820f..98fdb84587ccfdb279351e9597793b0f for (const auto& entry : kContentSettingsTypeGroupNames) { // Content setting types that aren't represented in the settings UI // will have `nullptr` as their `name`. However, converting `nullptr` -@@ -546,6 +548,7 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { +@@ -549,6 +551,7 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { } std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { @@ -26,7 +26,7 @@ index a37a4d23d7bee7b46f24c1bdb9d7072b1fb2820f..98fdb84587ccfdb279351e9597793b0f for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -720,6 +723,7 @@ std::string SiteSettingSourceToString(const SiteSettingSource source) { +@@ -723,6 +726,7 @@ std::string SiteSettingSourceToString(const SiteSettingSource source) { SiteSettingSource ProviderTypeToSiteSettingsSource( const ProviderType provider_type) { switch (provider_type) { @@ -34,7 +34,7 @@ index a37a4d23d7bee7b46f24c1bdb9d7072b1fb2820f..98fdb84587ccfdb279351e9597793b0f case ProviderType::kWebuiAllowlistProvider: case ProviderType::kComponentExtensionProvider: return SiteSettingSource::kAllowlist; -@@ -748,6 +752,7 @@ SiteSettingSource ProviderTypeToSiteSettingsSource( +@@ -752,6 +756,7 @@ SiteSettingSource ProviderTypeToSiteSettingsSource( std::string_view ProviderToDefaultSettingSourceString( const ProviderType provider) { switch (provider) { @@ -42,7 +42,7 @@ index a37a4d23d7bee7b46f24c1bdb9d7072b1fb2820f..98fdb84587ccfdb279351e9597793b0f case ProviderType::kPolicyProvider: return "policy"; case ProviderType::kSupervisedProvider: -@@ -872,6 +877,7 @@ base::DictValue GetExceptionForPage( +@@ -877,6 +882,7 @@ base::DictValue GetExceptionForPage( exception.Set(kSource, SiteSettingSourceToString(source)); exception.Set(kIncognito, incognito); exception.Set(kIsEmbargoed, is_embargoed); diff --git a/patches/chrome-browser-ui-webui-theme_source.cc.patch b/patches/chrome-browser-ui-webui-theme_source.cc.patch index f619bb5f716..ac7fc479928 100644 --- a/patches/chrome-browser-ui-webui-theme_source.cc.patch +++ b/patches/chrome-browser-ui-webui-theme_source.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/browser/ui/webui/theme_source.cc b/chrome/browser/ui/webui/theme_source.cc -index 585833c193b2030bc3e137ce03da4d2f4092b296..855a164db0526e9e97e45cdf7888a1b0edf53590 100644 +index d259b3ef857da189c00e9a3d73ccaeec97b490ab..a4cc1621accbc895d885f0f40495b7cc9911df6f 100644 --- a/chrome/browser/ui/webui/theme_source.cc +++ b/chrome/browser/ui/webui/theme_source.cc -@@ -353,6 +353,7 @@ void ThemeSource::SendColorsCss( +@@ -354,6 +354,7 @@ void ThemeSource::SendColorsCss( const auto* theme_service = ThemeServiceFactory::GetForProfile(profile_->GetOriginalProfile()); diff --git a/patches/chrome-common-BUILD.gn.patch b/patches/chrome-common-BUILD.gn.patch index 0888b3d1e97..4d1fea6e04a 100644 --- a/patches/chrome-common-BUILD.gn.patch +++ b/patches/chrome-common-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn -index e6ec5782e66340524576cbb0d09768dc296ce994..003abc6e6a0bab89a816b423ecc29f4a9b474054 100644 +index 1a692fe440945200128c90fc968d5682ae62470f..a6e1f8b2f12b08f2ef1c062e4689fcd10870a533 100644 --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn @@ -91,6 +91,7 @@ source_set("channel_info") { @@ -18,7 +18,7 @@ index e6ec5782e66340524576cbb0d09768dc296ce994..003abc6e6a0bab89a816b423ecc29f4a if (enable_extensions_core) { public_deps += [ "//chrome/common/extensions", -@@ -472,6 +474,7 @@ static_library("non_code_constants") { +@@ -470,6 +472,7 @@ static_library("non_code_constants") { if (is_win) { sources += [ "chrome_icon_resources_win.h" ] } @@ -26,7 +26,7 @@ index e6ec5782e66340524576cbb0d09768dc296ce994..003abc6e6a0bab89a816b423ecc29f4a } component("chrome_features") { -@@ -577,6 +580,7 @@ static_library("constants") { +@@ -579,6 +582,7 @@ static_library("constants") { "//third_party/widevine/cdm:buildflags", ] diff --git a/patches/chrome-common-extensions-BUILD.gn.patch b/patches/chrome-common-extensions-BUILD.gn.patch index 579bd1db49b..8fa66795b69 100644 --- a/patches/chrome-common-extensions-BUILD.gn.patch +++ b/patches/chrome-common-extensions-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/common/extensions/BUILD.gn b/chrome/common/extensions/BUILD.gn -index 097d660d1d9ee0c4df2bad419ee0dbb4097c787a..2ee61f0b93a50fa82c4a52f00f67223ef6b3c457 100644 +index f217a2d2d40cf5e4fa970e35bf5214ef1d45e6fa..3656576b1270708b4bc5f067f222e9ce18d7d498 100644 --- a/chrome/common/extensions/BUILD.gn +++ b/chrome/common/extensions/BUILD.gn -@@ -116,6 +116,7 @@ source_set("extensions") { +@@ -118,6 +118,7 @@ source_set("extensions") { sources += [ "api/file_system_provider_capabilities/file_system_provider_capabilities_handler.cc" ] } diff --git a/patches/chrome-common-extensions-api-developer_private.webidl.patch b/patches/chrome-common-extensions-api-developer_private.webidl.patch new file mode 100644 index 00000000000..079aae5757e --- /dev/null +++ b/patches/chrome-common-extensions-api-developer_private.webidl.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/common/extensions/api/developer_private.webidl b/chrome/common/extensions/api/developer_private.webidl +index 8c06cf0457edc8ea89af53174c56db00c1199da7..669527d7677a3a396ca28095d99f669afa4ff580 100644 +--- a/chrome/common/extensions/api/developer_private.webidl ++++ b/chrome/common/extensions/api/developer_private.webidl +@@ -224,6 +224,7 @@ dictionary ExtensionInfo { + required AccessModifier incognitoAccess; + required AccessModifier userScriptsAccess; + required boolean incognitoAccessPendingChange; ++ required boolean isSplitMode; + required sequence installWarnings; + required boolean isCommandRegistrationHandledExternally; + DOMString launchUrl; diff --git a/patches/chrome-common-extensions-chrome_extensions_client.cc.patch b/patches/chrome-common-extensions-chrome_extensions_client.cc.patch index 64bbf5a3de4..cfcc32432c1 100644 --- a/patches/chrome-common-extensions-chrome_extensions_client.cc.patch +++ b/patches/chrome-common-extensions-chrome_extensions_client.cc.patch @@ -1,16 +1,16 @@ diff --git a/chrome/common/extensions/chrome_extensions_client.cc b/chrome/common/extensions/chrome_extensions_client.cc -index d4f5d2c268b420b9229afb07e375e44f042b3261..be4e9fbe3028ddda89f87278ab1b4e143d525958 100644 +index e725bce7908510252958b8eae3c49d9156d3ff3f..c5e159ad861cb96fa049c237513319ff438a888c 100644 --- a/chrome/common/extensions/chrome_extensions_client.cc +++ b/chrome/common/extensions/chrome_extensions_client.cc -@@ -14,6 +14,7 @@ - #include "base/metrics/histogram_macros.h" +@@ -13,6 +13,7 @@ + #include "base/files/file_path.h" #include "base/strings/string_util.h" #include "base/values.h" +#include "brave/common/extensions/brave_extensions_api_provider.h" #include "chrome/common/chrome_resource_request_blocked_reason.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/chrome_extensions_api_provider.h" -@@ -56,6 +57,7 @@ const char kExtensionBlocklistHttpsUrlPrefix[] = +@@ -55,6 +56,7 @@ const char kExtensionBlocklistHttpsUrlPrefix[] = ChromeExtensionsClient::ChromeExtensionsClient() { AddAPIProvider(std::make_unique()); AddAPIProvider(std::make_unique()); diff --git a/patches/chrome-common-importer-BUILD.gn.patch b/patches/chrome-common-importer-BUILD.gn.patch index 7ff29af2355..612b26c1a20 100644 --- a/patches/chrome-common-importer-BUILD.gn.patch +++ b/patches/chrome-common-importer-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/common/importer/BUILD.gn b/chrome/common/importer/BUILD.gn -index 6008173451433e11984bab847ec49d42c34426c4..6d677490912b6249da961509508365c3f0b9cd42 100644 +index c719a21360bfb4a7187bbf2aebf3b273d45ff574..6beb853ad16b441a16a14c58874577e2c40fe011 100644 --- a/chrome/common/importer/BUILD.gn +++ b/chrome/common/importer/BUILD.gn @@ -117,6 +117,7 @@ source_set("importer") { diff --git a/patches/chrome-elevation_service-BUILD.gn.patch b/patches/chrome-elevation_service-BUILD.gn.patch index 53b2d082a8a..13032c80796 100644 --- a/patches/chrome-elevation_service-BUILD.gn.patch +++ b/patches/chrome-elevation_service-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/elevation_service/BUILD.gn b/chrome/elevation_service/BUILD.gn -index 2995e0c3c0b6d25837337532ca33d3f29d9feac4..fcc46393986f948f38f5dc446de742f31f82e1ab 100644 +index 0ce72b243f2460ef0bbf353b20d5cd8010b17972..ba1d12410887cc89ec4cc3aa63baf47995407346 100644 --- a/chrome/elevation_service/BUILD.gn +++ b/chrome/elevation_service/BUILD.gn @@ -11,6 +11,7 @@ import("//testing/test.gni") @@ -10,7 +10,7 @@ index 2995e0c3c0b6d25837337532ca33d3f29d9feac4..fcc46393986f948f38f5dc446de742f3 writes_tlb = true } -@@ -82,6 +83,7 @@ source_set("lib") { +@@ -83,6 +84,7 @@ source_set("lib") { "crypt32.lib", "rpcrt4.lib", ] diff --git a/patches/chrome-installer-linux-BUILD.gn.patch b/patches/chrome-installer-linux-BUILD.gn.patch index 9322038d8d9..7a2f21fb0db 100644 --- a/patches/chrome-installer-linux-BUILD.gn.patch +++ b/patches/chrome-installer-linux-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/installer/linux/BUILD.gn b/chrome/installer/linux/BUILD.gn -index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef197a40c54 100644 +index 737ea7268f244a38a4211d35e99ec2ae1c3de16b..e44c0475517e87e6ecfd2b10c04ee0aad87fcc31 100644 --- a/chrome/installer/linux/BUILD.gn +++ b/chrome/installer/linux/BUILD.gn @@ -18,6 +18,7 @@ import("//third_party/angle/gni/angle.gni") @@ -18,7 +18,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 packaging_files_binaries = packaging_files_executables + packaging_files_shlibs # TODO(mmoss) Any convenient way to get all the relevant build files? -@@ -174,6 +176,7 @@ action("merge_rpm_dependencies") { +@@ -172,6 +174,7 @@ action("merge_rpm_dependencies") { strip_binary("strip_chrome_binary") { binary_input = "$root_out_dir/chrome" deps = [ "//chrome" ] @@ -26,7 +26,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 } strip_binary("strip_chrome_crashpad_handler") { -@@ -189,6 +192,7 @@ strip_binary("strip_chrome_management_service") { +@@ -187,6 +190,7 @@ strip_binary("strip_chrome_management_service") { strip_binary("strip_chrome_sandbox") { binary_input = "$root_out_dir/chrome_sandbox" deps = [ "//sandbox/linux:chrome_sandbox" ] @@ -34,7 +34,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 } strip_binary("strip_libEGL_shlib") { -@@ -323,6 +327,7 @@ copy("common_packaging_files") { +@@ -321,6 +325,7 @@ copy("common_packaging_files") { } outputs = [ "$root_out_dir/installer/common/{{source_file_part}}" ] @@ -42,7 +42,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 } copy("deb_packaging_files") { -@@ -423,6 +428,7 @@ group("installer_deps") { +@@ -421,6 +426,7 @@ group("installer_deps") { "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component", "//sandbox/linux:chrome_sandbox", ] @@ -50,7 +50,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 if (bundle_widevine_cdm) { public_deps += [ "//third_party/widevine/cdm" ] } -@@ -477,11 +483,14 @@ group("installer_deps") { +@@ -475,11 +481,14 @@ group("installer_deps") { template("linux_package") { assert(defined(invoker.channel)) channel = invoker.channel @@ -66,7 +66,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 } deb_target_name = "${target_name}_deb" -@@ -510,7 +519,7 @@ template("linux_package") { +@@ -508,7 +517,7 @@ template("linux_package") { } inputs = packaging_files @@ -75,7 +75,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 args = [ "-a", -@@ -566,7 +575,7 @@ template("linux_package") { +@@ -564,7 +573,7 @@ template("linux_package") { } inputs = packaging_files @@ -84,7 +84,7 @@ index 20ab87def9800142b19818ae4e5d478610fc8ea0..cbcf2fa02b61b268b07b2f2b3e23bef1 args = [ "-a", -@@ -613,3 +622,6 @@ linux_package("unstable") { +@@ -611,3 +620,6 @@ linux_package("unstable") { linux_package("canary") { channel = "canary" } diff --git a/patches/chrome-installer-linux-common-installer.py.patch b/patches/chrome-installer-linux-common-installer.py.patch index 0042e39851a..cf4746bcf2a 100644 --- a/patches/chrome-installer-linux-common-installer.py.patch +++ b/patches/chrome-installer-linux-common-installer.py.patch @@ -1,5 +1,5 @@ diff --git a/chrome/installer/linux/common/installer.py b/chrome/installer/linux/common/installer.py -index cee92db6487c451de062be27b91cd86e3272c343..84a005c3440a3e92eed28e8695e7150f209de562 100644 +index 3c780c375fb9dddc93eeba12734f882abbf1aef0..62924e2c2c9a58ccf1dc35aaa8982f97c96f6313 100644 --- a/chrome/installer/linux/common/installer.py +++ b/chrome/installer/linux/common/installer.py @@ -193,6 +193,8 @@ def gen_changelog(config: "InstallerConfig", @@ -27,7 +27,7 @@ index cee92db6487c451de062be27b91cd86e3272c343..84a005c3440a3e92eed28e8695e7150f icon_sizes = [16, 24, 32, 48, 64, 128, 256] logo_resources_png = [] -@@ -1165,3 +1169,4 @@ class Installer: +@@ -1149,3 +1153,4 @@ class Installer: msg += f", but they were {oct(actual_perms)}" print(msg, file=sys.stderr) sys.exit(1) diff --git a/patches/chrome-installer-linux-common-wrapper.patch b/patches/chrome-installer-linux-common-wrapper.patch index bfc08d2b430..f9399cb9990 100644 --- a/patches/chrome-installer-linux-common-wrapper.patch +++ b/patches/chrome-installer-linux-common-wrapper.patch @@ -1,8 +1,8 @@ diff --git a/chrome/installer/linux/common/wrapper b/chrome/installer/linux/common/wrapper -index 0d79eaba3942f64cd3692b9b434e3dc3ec55004e..43084a84e8b38b58956c1aa4601c67952986df7e 100755 +index eb38e146d5f24e8f9b70457e8d337bfe2a5dbd2c..c6123bf2d09bfe890531e998f6c10a02dc0cedd3 100755 --- a/chrome/installer/linux/common/wrapper +++ b/chrome/installer/linux/common/wrapper -@@ -37,4 +37,4 @@ exec > >(exec cat) +@@ -27,4 +27,4 @@ exec > >(exec cat) exec 2> >(exec cat >&2) # Note: exec -a below is a bashism. diff --git a/patches/chrome-installer-linux-rpm-build.py.patch b/patches/chrome-installer-linux-rpm-build.py.patch index 1bda94eb9b2..ef29078c8bf 100644 --- a/patches/chrome-installer-linux-rpm-build.py.patch +++ b/patches/chrome-installer-linux-rpm-build.py.patch @@ -1,8 +1,8 @@ diff --git a/chrome/installer/linux/rpm/build.py b/chrome/installer/linux/rpm/build.py -index 8c414ab85907239e4b00483b8511a504aed6ea44..ccb1041cddd164452b78e7ee6156476865cd687d 100755 +index 5cced7e815d642472c54f78edcc9a829eaf8503d..26970e02fbe86a167cb6dc3af88d70afb3f0d15e 100755 --- a/chrome/installer/linux/rpm/build.py +++ b/chrome/installer/linux/rpm/build.py -@@ -28,6 +28,7 @@ def gen_spec(config: installer.InstallerConfig, +@@ -29,6 +29,7 @@ def gen_spec(config: installer.InstallerConfig, spec_file.unlink() config.rpm_package_filename = f"{config.package_orig}-{config.channel}" @@ -10,7 +10,7 @@ index 8c414ab85907239e4b00483b8511a504aed6ea44..ccb1041cddd164452b78e7ee61564768 script_dir = pathlib.Path(__file__).parent.absolute() installer.process_template( -@@ -69,6 +70,7 @@ def main() -> None: +@@ -77,6 +78,7 @@ def main() -> None: script_dir = pathlib.Path(__file__).parent.absolute() output_dir = pathlib.Path(args.output_dir).absolute() channel = args.channel @@ -18,7 +18,7 @@ index 8c414ab85907239e4b00483b8511a504aed6ea44..ccb1041cddd164452b78e7ee61564768 staging_dir = output_dir / f"rpm-staging-{channel}" tmp_file_dir = output_dir / f"rpm-tmp-{channel}" -@@ -111,6 +113,8 @@ def main() -> None: +@@ -119,6 +121,8 @@ def main() -> None: with rpm_common_deps_file.open("r") as f: depends = f.read().replace("\n", ",") config.rpm_depends = depends diff --git a/patches/chrome-installer-mac-signing-parts.py.patch b/patches/chrome-installer-mac-signing-parts.py.patch index d671339ed8b..f86b3f84733 100644 --- a/patches/chrome-installer-mac-signing-parts.py.patch +++ b/patches/chrome-installer-mac-signing-parts.py.patch @@ -1,5 +1,5 @@ diff --git a/chrome/installer/mac/signing/parts.py b/chrome/installer/mac/signing/parts.py -index 9553ce902414a5bcfbccb2702f85854f255a68aa..497d5fd86d27fe1a7f3266c019b6a48c69131084 100644 +index 30ec16279cd9d6feebdd1d57c5437909f042594f..08def40d94e90f1b1768a82e547980381dace0df 100644 --- a/chrome/installer/mac/signing/parts.py +++ b/chrome/installer/mac/signing/parts.py @@ -10,6 +10,7 @@ import os.path @@ -10,7 +10,7 @@ index 9553ce902414a5bcfbccb2702f85854f255a68aa..497d5fd86d27fe1a7f3266c019b6a48c _PROVISIONPROFILE_EXT = '.provisionprofile' _PROVISIONPROFILE_DEST = 'embedded.provisionprofile' -@@ -149,6 +150,7 @@ def get_parts(config): +@@ -137,6 +138,7 @@ def get_parts(config): library_basename.replace('.dylib', ''), verify_options=verify_options) @@ -18,7 +18,7 @@ index 9553ce902414a5bcfbccb2702f85854f255a68aa..497d5fd86d27fe1a7f3266c019b6a48c return parts -@@ -212,6 +214,7 @@ async def sign_chrome(paths, config, sign_framework=False): +@@ -200,6 +202,7 @@ async def sign_chrome(paths, config, sign_framework=False): continue signing.sign_part(paths, config, part) diff --git a/patches/chrome-installer-setup-BUILD.gn.patch b/patches/chrome-installer-setup-BUILD.gn.patch index 7094fbb4edb..cba4434bf8a 100644 --- a/patches/chrome-installer-setup-BUILD.gn.patch +++ b/patches/chrome-installer-setup-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/installer/setup/BUILD.gn b/chrome/installer/setup/BUILD.gn -index 438a99474b959cbf2f23abe7a5932af28217217b..b8adbaa30e396baaaf5d8f2883dd5b45f0e2e82d 100644 +index 2b1d7cb7ae257669d56bcfefb2b4a31e4aa035f7..d40f51b6d6e4394b4dfea467dc3970910cbe6e83 100644 --- a/chrome/installer/setup/BUILD.gn +++ b/chrome/installer/setup/BUILD.gn -@@ -135,6 +135,7 @@ if (is_win) { +@@ -136,6 +136,7 @@ if (is_win) { "channel_override_work_item.h", ] } diff --git a/patches/chrome-installer-setup-setup_main.cc.patch b/patches/chrome-installer-setup-setup_main.cc.patch index 78637dc767e..0efc7b8e5ae 100644 --- a/patches/chrome-installer-setup-setup_main.cc.patch +++ b/patches/chrome-installer-setup-setup_main.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc -index 8248498ff67c6c64817a2bf09fd1be7f7b8a0b36..2c7fd7a2f2cd30e52fe7f364f158b69d5e807973 100644 +index accfea57a58b7ade93a5f25ec200cfc5293c76a9..7c2ead1b34e4e77df7603fa431029b8dd70bc214 100644 --- a/chrome/installer/setup/setup_main.cc +++ b/chrome/installer/setup/setup_main.cc @@ -716,6 +716,7 @@ installer::InstallStatus InstallProducts(InstallationState& original_state, diff --git a/patches/chrome-installer-util-BUILD.gn.patch b/patches/chrome-installer-util-BUILD.gn.patch index 99e8fab324a..46974062bbf 100644 --- a/patches/chrome-installer-util-BUILD.gn.patch +++ b/patches/chrome-installer-util-BUILD.gn.patch @@ -1,16 +1,16 @@ diff --git a/chrome/installer/util/BUILD.gn b/chrome/installer/util/BUILD.gn -index b0670229bfb5ee90e4ed1554b1d74be3998428ff..1bb41b1701af2d5c78a55c30aef46f5e089c0678 100644 +index b2e2219cc465bd648a8a3e50e8d92fcf65e201b2..3d8693f67041c409bf9fb4e2671cea60aa79ccbb 100644 --- a/chrome/installer/util/BUILD.gn +++ b/chrome/installer/util/BUILD.gn -@@ -204,6 +204,7 @@ static_library("with_no_strings") { - "initial_preferences.h", - ] +@@ -209,6 +209,7 @@ static_library("with_no_strings") { + + deps += [ "//components/crash/core/app" ] } + import("//brave/chromium_src/chrome/installer/util/sources.gni") deps += brave_chromium_src_chrome_installer_util_deps } # Use this version of installer_util to link to the generated strings in .rc -@@ -236,6 +237,7 @@ generate_embedded_i18n("generate_strings") { +@@ -241,6 +242,7 @@ generate_embedded_i18n("generate_strings") { output_file_name_base = "installer_util_strings" branding = branding_path_product diff --git a/patches/chrome-installer-util-google_update_settings.cc.patch b/patches/chrome-installer-util-google_update_settings_win.cc.patch similarity index 73% rename from patches/chrome-installer-util-google_update_settings.cc.patch rename to patches/chrome-installer-util-google_update_settings_win.cc.patch index e5602a2c13c..240aa5fc4fc 100644 --- a/patches/chrome-installer-util-google_update_settings.cc.patch +++ b/patches/chrome-installer-util-google_update_settings_win.cc.patch @@ -1,7 +1,7 @@ -diff --git a/chrome/installer/util/google_update_settings.cc b/chrome/installer/util/google_update_settings.cc -index 19617a52633d339db4eb174077d3286c0f2ab018..e1cc75e5c0bb31084ade515d9e657c4bf7daee56 100644 ---- a/chrome/installer/util/google_update_settings.cc -+++ b/chrome/installer/util/google_update_settings.cc +diff --git a/chrome/installer/util/google_update_settings_win.cc b/chrome/installer/util/google_update_settings_win.cc +index 02d68c26e9ca9c03158fac9993509e32b8352435..d07a960f290ad2f13688fee83f62cd5bbbe7ba9b 100644 +--- a/chrome/installer/util/google_update_settings_win.cc ++++ b/chrome/installer/util/google_update_settings_win.cc @@ -33,7 +33,11 @@ using base::win::RegKey; using installer::InstallationState; diff --git a/patches/chrome-renderer-BUILD.gn.patch b/patches/chrome-renderer-BUILD.gn.patch index 5dde50824d0..6a502dde826 100644 --- a/patches/chrome-renderer-BUILD.gn.patch +++ b/patches/chrome-renderer-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn -index 70577180b6c1d2a819bab63f8bbd0a09847a4b9e..80af1c68998bafbe0312deaad9519087154b886f 100644 +index 8baae85a346e8d50ffac8e6d3bfd31a5a7ae25e1..046f7852708117eb506a1c2d0458f8ab0226e707 100644 --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn @@ -243,6 +243,7 @@ static_library("renderer") { diff --git a/patches/chrome-renderer-chrome_content_renderer_client.cc.patch b/patches/chrome-renderer-chrome_content_renderer_client.cc.patch index 09c3d676a97..7ed9d9d0460 100644 --- a/patches/chrome-renderer-chrome_content_renderer_client.cc.patch +++ b/patches/chrome-renderer-chrome_content_renderer_client.cc.patch @@ -1,8 +1,8 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc -index dcc6684123c561d06540ffdd4bea285b64f8feea..7faa364eabad1cea06546f60269432c7d020ff8b 100644 +index 347d6c4d50612b0a363426b076ea9f0053175fce..27ae2d5124978234a3a8c257b3410e2ed24484d7 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -610,7 +610,7 @@ void ChromeContentRendererClient::RenderFrameCreated( +@@ -611,7 +611,7 @@ void ChromeContentRendererClient::RenderFrameCreated( extensions::ExtensionsRendererClient::Get()->dispatcher()); #endif content_settings::ContentSettingsAgentImpl* content_settings = diff --git a/patches/chrome-test-BUILD.gn.patch b/patches/chrome-test-BUILD.gn.patch index e0a46aa03d7..4ce193b03f0 100644 --- a/patches/chrome-test-BUILD.gn.patch +++ b/patches/chrome-test-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn -index 4b46e2174d6329e5fb4a1c074217c7c351ec1f5f..3b6925205f129c1b9d04ce1ddc080aa1e52c5b5a 100644 +index cf5a56ee6eeeba1b7060e558874612c44f564560..bcf1ac89f6e1988284287676c745a44e0d3bfaf4 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -722,6 +722,7 @@ static_library("test_support") { +@@ -719,6 +719,7 @@ static_library("test_support") { "//ui/gl", ] diff --git a/patches/chrome-test-base-testing_browser_process.cc.patch b/patches/chrome-test-base-testing_browser_process.cc.patch index af0a758485a..ecfa57511bc 100644 --- a/patches/chrome-test-base-testing_browser_process.cc.patch +++ b/patches/chrome-test-base-testing_browser_process.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/test/base/testing_browser_process.cc b/chrome/test/base/testing_browser_process.cc -index ec5e24c732f6be2378ae4821b476c14a9f121c01..5fa90035afacd90056d93726246ad6234e81da01 100644 +index 43c78124cfd9853997cc59b2875dc7660d7bfece..6ce6727278c526b67d8ef2e916472a108707ac8f 100644 --- a/chrome/test/base/testing_browser_process.cc +++ b/chrome/test/base/testing_browser_process.cc @@ -151,15 +151,18 @@ void TestingBrowserProcess::CreateInstance() { diff --git a/patches/chrome-test-data-webui-settings-BUILD.gn.patch b/patches/chrome-test-data-webui-settings-BUILD.gn.patch index c843cf2b4ab..d0686f5f20f 100644 --- a/patches/chrome-test-data-webui-settings-BUILD.gn.patch +++ b/patches/chrome-test-data-webui-settings-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/test/data/webui/settings/BUILD.gn b/chrome/test/data/webui/settings/BUILD.gn -index 1ed5afcd88ba9cf04d43f6ccc7a1a703f8e462f1..9ea2761c74a4944a48d9926d8736ab91fb82f949 100644 +index 9a6c1060459e007a62f16495c674ebfbb9766249..1fa8dbf5a65b47f8b43a7e7483d46c542ddb7711 100644 --- a/chrome/test/data/webui/settings/BUILD.gn +++ b/chrome/test/data/webui/settings/BUILD.gn -@@ -284,6 +284,7 @@ build_webui_tests("build") { +@@ -300,6 +300,7 @@ build_webui_tests("build") { ts_definitions += [ "//tools/typescript/definitions/quick_unlock_private.d.ts" ] } diff --git a/patches/chrome-utility-BUILD.gn.patch b/patches/chrome-utility-BUILD.gn.patch index 0d586651e07..e23264cb933 100644 --- a/patches/chrome-utility-BUILD.gn.patch +++ b/patches/chrome-utility-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn -index 09a55515091dcf8acdb23023aad8d6eb8d16de3c..1395ad873df1b6af651bed8d4564a8e46f8f975b 100644 +index fd1fac51fe13253f043b3f735c3a675c63617983..b6cd91a3fa4c9e2152dec339aa351d4e18789e9e 100644 --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -254,6 +254,7 @@ static_library("utility") { +@@ -257,6 +257,7 @@ static_library("utility") { if (enable_on_device_translation) { deps += [ "//components/on_device_translation/service:on_device_translation_service" ] } diff --git a/patches/components-content_settings-browser-page_specific_content_settings.cc.patch b/patches/components-content_settings-browser-page_specific_content_settings.cc.patch index 1ff4554dae9..a0ecf4dbe2d 100644 --- a/patches/components-content_settings-browser-page_specific_content_settings.cc.patch +++ b/patches/components-content_settings-browser-page_specific_content_settings.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/content_settings/browser/page_specific_content_settings.cc b/components/content_settings/browser/page_specific_content_settings.cc -index 809479d01386a444502475f2ea6552e0fadf9f81..5f839e689070255f92348cfdf32bbb43b597406e 100644 +index 2e7d663ddba53d414f8b1e3594ad09ef41ffdccc..bac8c7a4d1a89128cabde4cf58f32df372a2467e 100644 --- a/components/content_settings/browser/page_specific_content_settings.cc +++ b/components/content_settings/browser/page_specific_content_settings.cc -@@ -876,6 +876,7 @@ bool PageSpecificContentSettings::IsContentBlocked( +@@ -878,6 +878,7 @@ bool PageSpecificContentSettings::IsContentBlocked( content_type == ContentSettingsType::ADS || content_type == ContentSettingsType::SOUND || content_type == ContentSettingsType::CLIPBOARD_READ_WRITE || @@ -10,7 +10,7 @@ index 809479d01386a444502475f2ea6552e0fadf9f81..5f839e689070255f92348cfdf32bbb43 content_type == ContentSettingsType::SENSORS || content_type == ContentSettingsType::GEOLOCATION || content_type == ContentSettingsType::GEOLOCATION_WITH_OPTIONS || -@@ -906,6 +907,7 @@ bool PageSpecificContentSettings::IsContentAllowed( +@@ -908,6 +909,7 @@ bool PageSpecificContentSettings::IsContentAllowed( content_type != ContentSettingsType::MEDIASTREAM_CAMERA && content_type != ContentSettingsType::MIDI_SYSEX && content_type != ContentSettingsType::CLIPBOARD_READ_WRITE && diff --git a/patches/components-content_settings-core-browser-content_settings_default_provider.cc.patch b/patches/components-content_settings-core-browser-content_settings_default_provider.cc.patch index 9ed5bc2f6cd..3c5d189061c 100644 --- a/patches/components-content_settings-core-browser-content_settings_default_provider.cc.patch +++ b/patches/components-content_settings-core-browser-content_settings_default_provider.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/content_settings/core/browser/content_settings_default_provider.cc b/components/content_settings/core/browser/content_settings_default_provider.cc -index 8a82bc5d452d9b0847369e73f86176d98a63b5e1..5e4088d810ad72e695141213f4b77bf441c358b2 100644 +index 06cb7371d3f0480748fbfcca2859fe5fe841e787..90ed5fd28574b1459177361b8bc641204e705743 100644 --- a/components/content_settings/core/browser/content_settings_default_provider.cc +++ b/components/content_settings/core/browser/content_settings_default_provider.cc -@@ -389,6 +389,7 @@ void DefaultProvider::OnPreferenceChanged(const std::string& name) { +@@ -390,6 +390,7 @@ void DefaultProvider::OnPreferenceChanged(const std::string& name) { base::Value DefaultProvider::ReadFromPref(ContentSettingsType content_type) { const base::Value& value = prefs_->GetValue(GetPrefName(content_type)); @@ -10,7 +10,7 @@ index 8a82bc5d452d9b0847369e73f86176d98a63b5e1..5e4088d810ad72e695141213f4b77bf4 // Validate settings. if (value.is_int()) { return ContentSettingToValue(IntToContentSetting(value.GetInt())); -@@ -432,6 +433,7 @@ void DefaultProvider::DiscardOrMigrateObsoletePreferences() { +@@ -433,6 +434,7 @@ void DefaultProvider::DiscardOrMigrateObsoletePreferences() { // TODO(https://crbug.com/367181093): clean this up. prefs_->ClearPref(kBug364820109AlreadyWorkedAroundPref); #endif // !BUILDFLAG(IS_IOS) diff --git a/patches/components-content_settings-core-browser-content_settings_pref.cc.patch b/patches/components-content_settings-core-browser-content_settings_pref.cc.patch index 4979ffe021b..4a17e4c0f09 100644 --- a/patches/components-content_settings-core-browser-content_settings_pref.cc.patch +++ b/patches/components-content_settings-core-browser-content_settings_pref.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/content_settings/core/browser/content_settings_pref.cc b/components/content_settings/core/browser/content_settings_pref.cc -index 5d4035d703dedd59b6de40a4b6b5c356aae37edb..bd36a2306b6853c71db9ee53d2c8b3abfc555b6d 100644 +index e3aace9b7c369f348bbd7e7352d3cd7572e0db54..83a9651126d70e1e9e6aab378e3784d7543221e3 100644 --- a/components/content_settings/core/browser/content_settings_pref.cc +++ b/components/content_settings/core/browser/content_settings_pref.cc -@@ -194,6 +194,7 @@ void ContentSettingsPref::SetWebsiteSetting( +@@ -200,6 +200,7 @@ void ContentSettingsPref::SetWebsiteSetting( DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(prefs_); DCHECK(primary_pattern != ContentSettingsPattern::Wildcard() || diff --git a/patches/components-content_settings-core-browser-content_settings_pref_provider.h.patch b/patches/components-content_settings-core-browser-content_settings_pref_provider.h.patch index f7eea0b6604..701f0684c1e 100644 --- a/patches/components-content_settings-core-browser-content_settings_pref_provider.h.patch +++ b/patches/components-content_settings-core-browser-content_settings_pref_provider.h.patch @@ -1,8 +1,8 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h -index 0bc442526f44f476852058f161073fe0136c2391..9e1f398e9a0b9aaabaec529d8c21ff6e1991c3d4 100644 +index 5ab869f30b9d865aeba2bc086c67a5a95f0c8626..fa0f73c0dc88e01575aaec310693dbef2ec2e945 100644 --- a/components/content_settings/core/browser/content_settings_pref_provider.h +++ b/components/content_settings/core/browser/content_settings_pref_provider.h -@@ -82,6 +82,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -83,6 +83,7 @@ class PrefProvider : public UserModifiableProvider { ContentSettingsPref* GetPref(ContentSettingsType type) const; private: diff --git a/patches/components-content_settings-core-browser-content_settings_uma_util.cc.patch b/patches/components-content_settings-core-browser-content_settings_uma_util.cc.patch index c4c25e70494..124df826725 100644 --- a/patches/components-content_settings-core-browser-content_settings_uma_util.cc.patch +++ b/patches/components-content_settings-core-browser-content_settings_uma_util.cc.patch @@ -1,5 +1,5 @@ diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc -index 1bd6673a666edf8656f3787b429ba94d4ddd1bfc..429b692cde75bcc3ba8815660f82b5154291728c 100644 +index 0ee32ccebe15e7ad725f086daf4f33fd31c00287..8ca8d5e912fb4398819bdc77b9d91f9cd8271839 100644 --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc @@ -168,6 +168,7 @@ constexpr auto kHistogramValue = base::MakeFixedFlatMap(choice)) { CHECK(is_third_party_request); CHECK(block_third_party_cookies); diff --git a/patches/components-content_settings-core-common-cookie_settings_base.h.patch b/patches/components-content_settings-core-common-cookie_settings_base.h.patch index 2102f4e33bd..77af653ac9d 100644 --- a/patches/components-content_settings-core-common-cookie_settings_base.h.patch +++ b/patches/components-content_settings-core-common-cookie_settings_base.h.patch @@ -1,5 +1,5 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.h b/components/content_settings/core/common/cookie_settings_base.h -index 947cb90f4726ac066da5c234f361bad75ed9d915..cbf06ee81faa04188e3aecf4158c905563a80cff 100644 +index 72072db10c0c366ff3663ac5f5f2310aedfcdfa8..6130d6b5589f50572547860dd358948d75027ff2 100644 --- a/components/content_settings/core/common/cookie_settings_base.h +++ b/components/content_settings/core/common/cookie_settings_base.h @@ -79,7 +79,7 @@ class CookieSettingsBase { diff --git a/patches/components-download-internal-common-download_item_impl.cc.patch b/patches/components-download-internal-common-download_item_impl.cc.patch index cd468998743..2f6eaf79e48 100644 --- a/patches/components-download-internal-common-download_item_impl.cc.patch +++ b/patches/components-download-internal-common-download_item_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc -index 8e2bcaa574ca59a23b7dbb0aa025deb8d959c6e0..9217355ca54fabbd92d7d08b61f7d4990c72faca 100644 +index 2c2d4e8f098ff991cdff1a927a896ed1adf07513..0acfca82c89192edb4536edf91e4f140e70cf584 100644 --- a/components/download/internal/common/download_item_impl.cc +++ b/components/download/internal/common/download_item_impl.cc -@@ -1994,8 +1994,8 @@ void DownloadItemImpl::OnDownloadCompleting() { +@@ -1989,8 +1989,8 @@ void DownloadItemImpl::OnDownloadCompleting() { &DownloadFile::RenameAndAnnotate, base::Unretained(download_file_.get()), GetTargetFilePath(), delegate_->GetApplicationClientIdForFileScanning(), diff --git a/patches/components-feature_engagement-public-feature_list.h.patch b/patches/components-feature_engagement-public-feature_list.h.patch index a1647ee5fdc..bc79aeefde2 100644 --- a/patches/components-feature_engagement-public-feature_list.h.patch +++ b/patches/components-feature_engagement-public-feature_list.h.patch @@ -1,8 +1,8 @@ diff --git a/components/feature_engagement/public/feature_list.h b/components/feature_engagement/public/feature_list.h -index 52849ba8f9a612f1233871b1a3061841bf171e66..c16edf0968d3a29ec2405c7bf15dd4b4b289470b 100644 +index 9226cd25d0b03ffd1b806a14ae6e3568e201aece..0ab999b748dfbc6fabc16a9388b44e2cb41c6a74 100644 --- a/components/feature_engagement/public/feature_list.h +++ b/components/feature_engagement/public/feature_list.h -@@ -573,6 +573,7 @@ DEFINE_VARIATION_PARAM(kIPHiOSTabGroupsDesktopFeature, +@@ -580,6 +580,7 @@ DEFINE_VARIATION_PARAM(kIPHiOSTabGroupsDesktopFeature, DEFINE_VARIATION_PARAM(kIPHiOSPriceTrackingDesktopFeature, "IPH_iOSPriceTrackingDesktop"); #endif // !BUILDFLAG(IS_ANDROID) @@ -10,11 +10,11 @@ index 52849ba8f9a612f1233871b1a3061841bf171e66..c16edf0968d3a29ec2405c7bf15dd4b4 #if !BUILDFLAG(IS_IOS) DEFINE_VARIATION_PARAM(kIPHResumptionRailFeature, "IPH_ResumptionRail"); -@@ -583,6 +584,7 @@ DEFINE_VARIATION_PARAM(kIPHResumptionRailFeature, "IPH_ResumptionRail"); - // are possible to enable on their own in demo mode. +@@ -591,6 +592,7 @@ DEFINE_VARIATION_PARAM(kIPHResumptionRailFeature, "IPH_ResumptionRail"); inline constexpr flags_ui::FeatureEntry::FeatureVariation kIPHDemoModeChoiceVariations[] = { + // clang-format off + BRAVE_FEATURE_ENGAGEMENT_VARIATION_ENTRIES #if BUILDFLAG(IS_ANDROID) - VARIATION_ENTRY(kIPHAccountSettingsHistorySync), - VARIATION_ENTRY( + // keep-sorted start case=no + // VARIATION_ENTRY_ANDROID_START diff --git a/patches/components-javascript_dialogs-tab_modal_dialog_manager.cc.patch b/patches/components-javascript_dialogs-tab_modal_dialog_manager.cc.patch index 9d3b7b7d97b..db0ff1639b9 100644 --- a/patches/components-javascript_dialogs-tab_modal_dialog_manager.cc.patch +++ b/patches/components-javascript_dialogs-tab_modal_dialog_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/javascript_dialogs/tab_modal_dialog_manager.cc b/components/javascript_dialogs/tab_modal_dialog_manager.cc -index 03a1d6e6d2313058596b74be702c794084dbe5f0..bf4732a9e4ca8926138ce567f8b9c8915df2ef6d 100644 +index 7c6cf376decfd31b108d1b93081c9c2b910edcdf..0db7cbf2d223800a7e497f07610d81b907f13712 100644 --- a/components/javascript_dialogs/tab_modal_dialog_manager.cc +++ b/components/javascript_dialogs/tab_modal_dialog_manager.cc -@@ -254,6 +254,7 @@ void TabModalDialogManager::CancelDialogs(content::WebContents* web_contents, +@@ -253,6 +253,7 @@ void TabModalDialogManager::CancelDialogs(content::WebContents* web_contents, void TabModalDialogManager::OnVisibilityChanged( content::Visibility visibility) { diff --git a/patches/components-metrics-BUILD.gn.patch b/patches/components-metrics-BUILD.gn.patch index 8a6f0e31978..8049099349d 100644 --- a/patches/components-metrics-BUILD.gn.patch +++ b/patches/components-metrics-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn -index 90d4450f792ae0f6ce742ad874470b49b4757229..c4e08b81a2011ef8908ec8e0097eb690bc959dab 100644 +index dbd1ce114a06b6d83ba40b520e04afa80dbe3568..a0be0cc2b35038928fb7ef49dd249e33f7aab016 100644 --- a/components/metrics/BUILD.gn +++ b/components/metrics/BUILD.gn -@@ -351,6 +351,7 @@ if (!is_cronet_build || is_ios) { +@@ -357,6 +357,7 @@ if (!is_cronet_build || is_ios) { "motherboard_metrics_provider.h", ] } diff --git a/patches/components-omnibox-browser-BUILD.gn.patch b/patches/components-omnibox-browser-BUILD.gn.patch index bf7cedd67d0..d180382bb9d 100644 --- a/patches/components-omnibox-browser-BUILD.gn.patch +++ b/patches/components-omnibox-browser-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/components/omnibox/browser/BUILD.gn b/components/omnibox/browser/BUILD.gn -index ccddea6c87e6d4ede3b6cbf6a6c14301c69f029c..100094623e5b51d18d03d50efd8245c4f90c4595 100644 +index bccb10824f3479010008913ca3173e6fff8c169c..4dd9aa340b038e6e293ac8adf59dea488c020227 100644 --- a/components/omnibox/browser/BUILD.gn +++ b/components/omnibox/browser/BUILD.gn -@@ -381,6 +381,7 @@ static_library("browser") { +@@ -393,6 +393,7 @@ static_library("browser") { "//ui/base", "//ui/gfx", ] @@ -10,7 +10,7 @@ index ccddea6c87e6d4ede3b6cbf6a6c14301c69f029c..100094623e5b51d18d03d50efd8245c4 configs += [ "//build/config/compiler:wexit_time_destructors" ] -@@ -1010,6 +1011,7 @@ fuzzer_test("search_suggestion_parser_fuzzer") { +@@ -993,6 +994,7 @@ fuzzer_test("search_suggestion_parser_fuzzer") { mojom("mojo_bindings") { sources = [ "omnibox.mojom" ] diff --git a/patches/components-omnibox-browser-autocomplete_controller.cc.patch b/patches/components-omnibox-browser-autocomplete_controller.cc.patch index f425373bdcd..15d45ae0767 100644 --- a/patches/components-omnibox-browser-autocomplete_controller.cc.patch +++ b/patches/components-omnibox-browser-autocomplete_controller.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc -index 9c92155ff969c0af920b8db9e1a0f84186cf9127..2bd3845e294ed6cc276f4df87334ea9227d8e11d 100644 +index bae66fe359a02b9e3a93dafd3481b03f887a3267..95498d841cfa17d47cc1423809cc9eedc073e2b3 100644 --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -1261,6 +1261,7 @@ void AutocompleteController::InitializeAsyncProviders(int provider_types) { +@@ -1291,6 +1291,7 @@ void AutocompleteController::InitializeAsyncProviders(int provider_types) { base::MakeRefCounted(provider_client_.get(), this); search_provider_ = search_provider.get(); providers_.push_back(std::move(search_provider)); @@ -10,7 +10,7 @@ index 9c92155ff969c0af920b8db9e1a0f84186cf9127..2bd3845e294ed6cc276f4df87334ea92 } // Providers run in the order they're added. Add `HistoryURLProvider` after // `SearchProvider` because: -@@ -1533,6 +1534,7 @@ void AutocompleteController::UpdateResult(UpdateType update_type, +@@ -1563,6 +1564,7 @@ void AutocompleteController::UpdateResult(UpdateType update_type, StartStopTimer(); } diff --git a/patches/components-omnibox-browser-autocomplete_match.h.patch b/patches/components-omnibox-browser-autocomplete_match.h.patch index df7755b7649..14c281ac732 100644 --- a/patches/components-omnibox-browser-autocomplete_match.h.patch +++ b/patches/components-omnibox-browser-autocomplete_match.h.patch @@ -1,8 +1,8 @@ diff --git a/components/omnibox/browser/autocomplete_match.h b/components/omnibox/browser/autocomplete_match.h -index 2e3eaab4bf4777dda81a1677a8e41351f2fce3db..df937cf2d8bf82419a18c64c1e6a83dc639ce504 100644 +index be12c46fa1eb387b5a53e1c16dd540360653c839..1401c14a830f0f75367a7fa614fa51e180bf602a 100644 --- a/components/omnibox/browser/autocomplete_match.h +++ b/components/omnibox/browser/autocomplete_match.h -@@ -814,7 +814,7 @@ struct AutocompleteMatch { +@@ -811,7 +811,7 @@ struct AutocompleteMatch { // The provider of this match, used to remember which provider the user had // selected when the input changes. This may be NULL, in which case there is // no provider (or memory of the user's selection). diff --git a/patches/components-omnibox-browser-featured_search_provider.cc.patch b/patches/components-omnibox-browser-featured_search_provider.cc.patch index 40ec48f5f0e..08fa73578d7 100644 --- a/patches/components-omnibox-browser-featured_search_provider.cc.patch +++ b/patches/components-omnibox-browser-featured_search_provider.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/omnibox/browser/featured_search_provider.cc b/components/omnibox/browser/featured_search_provider.cc -index 29b83c6edeee8a467ef5bb7e2773586024b4fb22..66d6b9af9ac3315891810d15355d330f50864c97 100644 +index 766588861b85c3a4ef69ed85522761aaf41cb620..8543840c0640d303ddd2b59934a743551480604c 100644 --- a/components/omnibox/browser/featured_search_provider.cc +++ b/components/omnibox/browser/featured_search_provider.cc -@@ -609,10 +609,10 @@ bool FeaturedSearchProvider::ShouldShowHistoryEmbeddingsDisclaimerIphMatch() +@@ -611,10 +611,10 @@ bool FeaturedSearchProvider::ShouldShowHistoryEmbeddingsDisclaimerIphMatch() void FeaturedSearchProvider::AddHistoryEmbeddingsDisclaimerIphMatch() { std::u16string text = diff --git a/patches/components-omnibox-browser-omnibox_text_util.cc.patch b/patches/components-omnibox-browser-omnibox_text_util.cc.patch index 186696cdd31..75d394d988a 100644 --- a/patches/components-omnibox-browser-omnibox_text_util.cc.patch +++ b/patches/components-omnibox-browser-omnibox_text_util.cc.patch @@ -1,10 +1,10 @@ diff --git a/components/omnibox/browser/omnibox_text_util.cc b/components/omnibox/browser/omnibox_text_util.cc -index 67865669203bb123983d324bfeca40c28f3fecb2..56567f1471984ceab8b9eededa57a29735897bb3 100644 +index 637f51e2efb9273279b9783a5f6ccdb15798f2b1..5108fd57a16ccab8e3c80a61845c08ff68fc853c 100644 --- a/components/omnibox/browser/omnibox_text_util.cc +++ b/components/omnibox/browser/omnibox_text_util.cc -@@ -153,6 +153,7 @@ void AdjustTextForCopy(int sel_min, +@@ -160,6 +160,7 @@ void AdjustTextForCopy( if (!has_user_modified_text) { - *url_from_text = client->GetNavigationEntryURL(); + *url_from_text = navigation_entry_url; *write_url = true; + BRAVE_ADJUST_TEXT_FOR_COPY diff --git a/patches/components-omnibox-composebox-BUILD.gn.patch b/patches/components-omnibox-composebox-BUILD.gn.patch index 7e2f1e25524..874daf0f76d 100644 --- a/patches/components-omnibox-composebox-BUILD.gn.patch +++ b/patches/components-omnibox-composebox-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/components/omnibox/composebox/BUILD.gn b/components/omnibox/composebox/BUILD.gn -index 58767e126c01726eb58ce41a7503b547647db3ca..5f7c506a81fc2d2e1fc16f27a097e186af804383 100644 +index a960b52e36796e6b8e7aeeb08d73cd4ca2dff43d..94a72323f8dd266a8cebfdf8defe871d7b853500 100644 --- a/components/omnibox/composebox/BUILD.gn +++ b/components/omnibox/composebox/BUILD.gn @@ -5,6 +5,7 @@ diff --git a/patches/components-password_manager-core-browser-features-password_features.cc.patch b/patches/components-password_manager-core-browser-features-password_features.cc.patch deleted file mode 100644 index 6a65b0cc598..00000000000 --- a/patches/components-password_manager-core-browser-features-password_features.cc.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc -index 59a5bce11c11a8020c067116dcf4f6131d9c50a0..bcf62b5a28292b8e6f45aa690358008ceba7bddf 100644 ---- a/components/password_manager/core/browser/features/password_features.cc -+++ b/components/password_manager/core/browser/features/password_features.cc -@@ -128,7 +128,8 @@ BASE_FEATURE(kMarkAllCredentialsAsLeaked, base::FEATURE_DISABLED_BY_DEFAULT); - BASE_FEATURE(kOtpPhishGuard, base::FEATURE_ENABLED_BY_DEFAULT); - #endif // BUILDFLAG(IS_ANDROID) - --BASE_FEATURE(kPasswordDateLastFilled, base::FEATURE_ENABLED_BY_DEFAULT); -+// Temporarily disabled as mitigation for crbug.com/485895402. -+BASE_FEATURE(kPasswordDateLastFilled, base::FEATURE_DISABLED_BY_DEFAULT); - - BASE_FEATURE(kPasswordChangeImmediateSubmission, - base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/patches/components-password_manager-core-browser-password_store-BUILD.gn.patch b/patches/components-password_manager-core-browser-password_store-BUILD.gn.patch index 02f5e98965b..fb3298a76a8 100644 --- a/patches/components-password_manager-core-browser-password_store-BUILD.gn.patch +++ b/patches/components-password_manager-core-browser-password_store-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/components/password_manager/core/browser/password_store/BUILD.gn b/components/password_manager/core/browser/password_store/BUILD.gn -index 7b65950bce4330cbab12ce01d4f029ab6d7e1cda..7df7bc7ec704766cb279ff640e181e5cd267d1ae 100644 +index 53f1a288f53939f35f7e5a64f337676051b1cc5e..b7fdf0740c02ae9141a30f14975243891c0d968c 100644 --- a/components/password_manager/core/browser/password_store/BUILD.gn +++ b/components/password_manager/core/browser/password_store/BUILD.gn -@@ -75,6 +75,7 @@ source_set("password_store_impl") { +@@ -76,6 +76,7 @@ source_set("password_store_impl") { "password_data_type_controller_delegate_android.cc", "password_data_type_controller_delegate_android.h", ] diff --git a/patches/components-permissions-BUILD.gn.patch b/patches/components-permissions-BUILD.gn.patch index 4a4ea509607..632553929a4 100644 --- a/patches/components-permissions-BUILD.gn.patch +++ b/patches/components-permissions-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/components/permissions/BUILD.gn b/components/permissions/BUILD.gn -index f54d021cb655501008a07fda27165c7e62ffeea2..2ec800304c284babe6bb9d45e3e9b13fa5c8ca3d 100644 +index f45039f20c2cc88ecfc90e08093c703ad14e6a70..e1ad0e609ff8c071e8a6ef84506f66e6a38327bc 100644 --- a/components/permissions/BUILD.gn +++ b/components/permissions/BUILD.gn @@ -6,7 +6,7 @@ import("//components/guest_view/buildflags/buildflags.gni") diff --git a/patches/components-permissions-android-permission_prompt-permission_dialog_delegate.cc.patch b/patches/components-permissions-android-permission_prompt-permission_dialog_delegate.cc.patch index bf8e2ce1ad8..9951bdcb804 100644 --- a/patches/components-permissions-android-permission_prompt-permission_dialog_delegate.cc.patch +++ b/patches/components-permissions-android-permission_prompt-permission_dialog_delegate.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -index 1a7c14b22a1d93f6733dd235d60a6c810bbea2fe..46ac59b74481ab9e639d35dbcdfd126630dda362 100644 +index 4c671a1c302360d75b01b9f7596c40f473ba1f3d..0925da5b4c334855f3eedf969586a6ceecba9702 100644 --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -60,6 +60,7 @@ void PermissionDialogJavaDelegate::CreateJavaDelegate( +@@ -59,6 +59,7 @@ void PermissionDialogJavaDelegate::CreateJavaDelegate( void PermissionDialogJavaDelegate::CreateDialog( content::WebContents* web_contents) { JNIEnv* env = base::android::AttachCurrentThread(); @@ -10,7 +10,7 @@ index 1a7c14b22a1d93f6733dd235d60a6c810bbea2fe..46ac59b74481ab9e639d35dbcdfd1266 // Send the Java delegate to the Java PermissionDialogController for display. // When the Java delegate is no longer needed it will in turn reset the native // java delegate (PermissionDialogJavaDelegate). -@@ -166,6 +167,7 @@ PermissionDialogDelegate::CreateForTesting( +@@ -164,6 +165,7 @@ PermissionDialogDelegate::CreateForTesting( void PermissionDialogDelegate::Accept(JNIEnv* env) { CHECK(permission_prompt_); @@ -18,7 +18,7 @@ index 1a7c14b22a1d93f6733dd235d60a6c810bbea2fe..46ac59b74481ab9e639d35dbcdfd1266 permission_prompt_->Accept(prompt_options_); } -@@ -181,6 +183,7 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { +@@ -179,6 +181,7 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { void PermissionDialogDelegate::Deny(JNIEnv* env) { CHECK(permission_prompt_); diff --git a/patches/components-permissions-permission_request_manager.cc.patch b/patches/components-permissions-permission_request_manager.cc.patch index 354a2046c0a..b23d1fa77d2 100644 --- a/patches/components-permissions-permission_request_manager.cc.patch +++ b/patches/components-permissions-permission_request_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc -index 5d1114d0714b92aeb2d6cba6c87516e91be74b48..5b2d8d585a4a2f71879afb9692263bf13242e038 100644 +index 8ba2119bba3bd16339ad4a57612582af225a0293..fae5c3044109a5007555837f86bfde7330d09996 100644 --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc -@@ -601,6 +601,7 @@ void PermissionRequestManager::OnVisibilityChanged( +@@ -589,6 +589,7 @@ void PermissionRequestManager::OnVisibilityChanged( } bool prior_tab_is_active_ = tab_is_active_; tab_is_active_ = visibility != content::Visibility::HIDDEN; @@ -10,7 +10,7 @@ index 5d1114d0714b92aeb2d6cba6c87516e91be74b48..5b2d8d585a4a2f71879afb9692263bf1 if (prior_tab_is_active_ != tab_is_active_) { OnTabActiveChanged(); } -@@ -616,6 +617,7 @@ GURL PermissionRequestManager::GetRequestingOrigin() const { +@@ -604,6 +605,7 @@ GURL PermissionRequestManager::GetRequestingOrigin() const { GURL origin = requests_.front()->requesting_origin(); if (DCHECK_IS_ON()) { for (const auto& request : requests_) { @@ -18,7 +18,7 @@ index 5d1114d0714b92aeb2d6cba6c87516e91be74b48..5b2d8d585a4a2f71879afb9692263bf1 DCHECK_EQ(origin, request->requesting_origin()); } } -@@ -984,7 +986,7 @@ void PermissionRequestManager::DequeueRequestIfNeeded() { +@@ -978,7 +980,7 @@ void PermissionRequestManager::DequeueRequestIfNeeded() { // only after the camera request is resolved. This is caused by code in // PermissionBubbleMediaAccessHandler and UserMediaClient. We probably don't // need two permission queues, so resolve the duplication. @@ -27,7 +27,7 @@ index 5d1114d0714b92aeb2d6cba6c87516e91be74b48..5b2d8d585a4a2f71879afb9692263bf1 IsRequestInProgress()) { return; } -@@ -1113,7 +1115,7 @@ void PermissionRequestManager::ShowPrompt() { +@@ -1110,7 +1112,7 @@ void PermissionRequestManager::ShowPrompt() { return; } @@ -36,7 +36,7 @@ index 5d1114d0714b92aeb2d6cba6c87516e91be74b48..5b2d8d585a4a2f71879afb9692263bf1 DCHECK(current_request_ui_to_use_); if (!tab_is_active_) { -@@ -1965,7 +1967,7 @@ void PermissionRequestManager::OnTabActiveChanged() { +@@ -1963,7 +1965,7 @@ void PermissionRequestManager::OnTabActiveChanged() { return; } diff --git a/patches/components-policy-resources-webui-policy_base.ts.patch b/patches/components-policy-resources-webui-policy_base.ts.patch index 4ead3f69d15..3feab3caa45 100644 --- a/patches/components-policy-resources-webui-policy_base.ts.patch +++ b/patches/components-policy-resources-webui-policy_base.ts.patch @@ -1,8 +1,8 @@ diff --git a/components/policy/resources/webui/policy_base.ts b/components/policy/resources/webui/policy_base.ts -index af0b2948172adb75a97b183d7298117149551e93..f87f47d214e95d120b7052af98894f8c5d0393e7 100644 +index 6769c9b0c906a99ed3397b885e24206899facb65..090deaf190167cc2496b14799372a5b59a07fb6d 100644 --- a/components/policy/resources/webui/policy_base.ts +++ b/components/policy/resources/webui/policy_base.ts -@@ -198,7 +198,7 @@ export class Page { +@@ -215,7 +215,7 @@ export class Page { policyNames['precedence']?.policyNames, ].includes(knownPolicyNames) && knownPolicyNamesSet.has(name) ? diff --git a/patches/components-policy-tools-generate_policy_source.py.patch b/patches/components-policy-tools-generate_policy_source.py.patch index d3c9fea1d01..9eed0b7195b 100644 --- a/patches/components-policy-tools-generate_policy_source.py.patch +++ b/patches/components-policy-tools-generate_policy_source.py.patch @@ -1,8 +1,8 @@ diff --git a/components/policy/tools/generate_policy_source.py b/components/policy/tools/generate_policy_source.py -index 81b84086b25c0479d0d68800fa7d115d4d3b0684..eceee58d34bf517ec8ed80118e2b6604ddc7be70 100755 +index 775a99a25a9dcf26171f711bff09b356da5c5c81..3d9ace1df3d9a754113a2711fe8cf7806faf271b 100755 --- a/components/policy/tools/generate_policy_source.py +++ b/components/policy/tools/generate_policy_source.py -@@ -1768,5 +1768,6 @@ def _WriteAppRestrictions(policies, policy_atomic_groups, target_platform, f, +@@ -1778,5 +1778,6 @@ def _WriteAppRestrictions(policies, policy_atomic_groups, target_platform, f, f.write('') diff --git a/patches/components-search_engines-BUILD.gn.patch b/patches/components-search_engines-BUILD.gn.patch index edd6b9a3e34..3f450e41435 100644 --- a/patches/components-search_engines-BUILD.gn.patch +++ b/patches/components-search_engines-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn -index 9f35ad77ccca85a68d60b4d372c5ba846f462776..7a4709d7252420bbd7f220c37baf34a8193b58a7 100644 +index 806f8713c3e9992518c7e8b3ed8c702d63f84b64..f1700d5b59e00ac95b19e7f0d4563679d87cfef7 100644 --- a/components/search_engines/BUILD.gn +++ b/components/search_engines/BUILD.gn @@ -151,6 +151,7 @@ static_library("search_engines") { diff --git a/patches/components-search_engines-default_search_manager.cc.patch b/patches/components-search_engines-default_search_manager.cc.patch index a5bf952b2ab..c567d466b86 100644 --- a/patches/components-search_engines-default_search_manager.cc.patch +++ b/patches/components-search_engines-default_search_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/search_engines/default_search_manager.cc b/components/search_engines/default_search_manager.cc -index 7dec2a6d91faf67fb4c5e95d0f7f0172197d6dbb..4331e6451ffc7d15f6a8c1cb7b76f544478f463b 100644 +index 10ac3b2d1bcc7484a5e6beb64fb4e705e83c5124..c0347a3aac3f8e672841ace3be85a8c2d5124ec1 100644 --- a/components/search_engines/default_search_manager.cc +++ b/components/search_engines/default_search_manager.cc -@@ -352,6 +352,7 @@ void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() { +@@ -360,6 +360,7 @@ void DefaultSearchManager::LoadDefaultSearchEngineFromPrefs() { // Check if default search preference is overridden by extension. if (pref->IsExtensionControlled()) { extension_default_search_ = std::move(turl_data); diff --git a/patches/components-search_engines-template_url_starter_pack_data.h.patch b/patches/components-search_engines-template_url_starter_pack_data.h.patch new file mode 100644 index 00000000000..8c38ecd5417 --- /dev/null +++ b/patches/components-search_engines-template_url_starter_pack_data.h.patch @@ -0,0 +1,12 @@ +diff --git a/components/search_engines/template_url_starter_pack_data.h b/components/search_engines/template_url_starter_pack_data.h +index a2800658774a8057b4d6b125d205826430e9081d..d7e925a06b6550597f2aca3ddec1cc21c7065024 100644 +--- a/components/search_engines/template_url_starter_pack_data.h ++++ b/components/search_engines/template_url_starter_pack_data.h +@@ -34,6 +34,7 @@ enum class StarterPackId { + kPage = 5, + kAiMode = 6, + ++ BRAVE_TEMPLATE_URL_STARTER_PACK_ID_ENUM + kMaxStarterPackId + }; + diff --git a/patches/components-sessions-BUILD.gn.patch b/patches/components-sessions-BUILD.gn.patch index ae825578d8f..b3bf0768b08 100644 --- a/patches/components-sessions-BUILD.gn.patch +++ b/patches/components-sessions-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/components/sessions/BUILD.gn b/components/sessions/BUILD.gn -index dd0e64493e6dd4b973c15b4427afb31b9d5c72fb..a1870fa4d6ec55e587e1cf1c5322e9c983734e9e 100644 +index 004a99346441e6d34166939546262d8f5432fb1c..9d53cf46acafca7701f68b48b48e314803029124 100644 --- a/components/sessions/BUILD.gn +++ b/components/sessions/BUILD.gn @@ -44,6 +44,7 @@ if (!is_ios) { @@ -10,7 +10,7 @@ index dd0e64493e6dd4b973c15b4427afb31b9d5c72fb..a1870fa4d6ec55e587e1cf1c5322e9c9 } } else { source_set("sessions") { -@@ -154,6 +155,7 @@ source_set("shared") { +@@ -156,6 +157,7 @@ source_set("shared") { "//ui/gfx", "//url", ] diff --git a/patches/components-signin-internal-identity_manager-BUILD.gn.patch b/patches/components-signin-internal-identity_manager-BUILD.gn.patch index 21d8e35fe9f..97b0a1b7f35 100644 --- a/patches/components-signin-internal-identity_manager-BUILD.gn.patch +++ b/patches/components-signin-internal-identity_manager-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/components/signin/internal/identity_manager/BUILD.gn b/components/signin/internal/identity_manager/BUILD.gn -index c6627a64e37ce25e938f006d61a012ef27cc4f67..4737160194745f1d9e558c744077b4ec88057584 100644 +index a34c6c2fae0f2c3799e3f7d2f8fde7376fe03037..e439d91a2f47b01cfe41281404620d985f8ec6db 100644 --- a/components/signin/internal/identity_manager/BUILD.gn +++ b/components/signin/internal/identity_manager/BUILD.gn -@@ -143,6 +143,7 @@ source_set("identity_manager") { +@@ -144,6 +144,7 @@ source_set("identity_manager") { "device_accounts_synchronizer_impl.h", ] } diff --git a/patches/components-sync-engine-sync_scheduler_impl.cc.patch b/patches/components-sync-engine-sync_scheduler_impl.cc.patch index c2084fc5713..a9a9972e8e8 100644 --- a/patches/components-sync-engine-sync_scheduler_impl.cc.patch +++ b/patches/components-sync-engine-sync_scheduler_impl.cc.patch @@ -1,5 +1,5 @@ diff --git a/components/sync/engine/sync_scheduler_impl.cc b/components/sync/engine/sync_scheduler_impl.cc -index 7726a0d2c1e0e995ec08d8c03ae147e108663e6d..c9751d81dfee6cc0cd8605527ef5f45b9019455a 100644 +index 42c52b3ff195c67d38cb66ceba5e216d6a88901e..fa18efba1bace73d72cd175c366db51144f09a34 100644 --- a/components/sync/engine/sync_scheduler_impl.cc +++ b/components/sync/engine/sync_scheduler_impl.cc @@ -470,6 +470,7 @@ void SyncSchedulerImpl::HandleFailure( diff --git a/patches/components-sync-engine-syncer_proto_util.cc.patch b/patches/components-sync-engine-syncer_proto_util.cc.patch index b7ae9718506..5337019acde 100644 --- a/patches/components-sync-engine-syncer_proto_util.cc.patch +++ b/patches/components-sync-engine-syncer_proto_util.cc.patch @@ -1,5 +1,5 @@ diff --git a/components/sync/engine/syncer_proto_util.cc b/components/sync/engine/syncer_proto_util.cc -index cb8567533735217cca7bbd2350263a81450cf5a9..57cd3940a65558eff29a8e0bc70c67a595d95709 100644 +index 5442290f53a3cb5b37c172dd9e3590c649f74aa1..81aae81049edbc655fd4d1f71e2eb00a19e4751c 100644 --- a/components/sync/engine/syncer_proto_util.cc +++ b/components/sync/engine/syncer_proto_util.cc @@ -267,6 +267,7 @@ SyncerError SyncerProtoUtil::HandleClientToServerMessageResponse( diff --git a/patches/components-sync-protocol-device_info_specifics.proto.patch b/patches/components-sync-protocol-device_info_specifics.proto.patch index e42d792bea7..f82af7c7934 100644 --- a/patches/components-sync-protocol-device_info_specifics.proto.patch +++ b/patches/components-sync-protocol-device_info_specifics.proto.patch @@ -1,5 +1,5 @@ diff --git a/components/sync/protocol/device_info_specifics.proto b/components/sync/protocol/device_info_specifics.proto -index 35bb386569d2fb13c7f7927d07d5c076ec8a79ef..80cff5bb43ae7a1989600949001b7416259494b0 100644 +index 7f91488cb66c0b59680cca2b5b3e05e69fe7ce3b..6bf2b975825ccfabd6b87a66b28cc5936ddbfb8c 100644 --- a/components/sync/protocol/device_info_specifics.proto +++ b/components/sync/protocol/device_info_specifics.proto @@ -17,6 +17,7 @@ option optimize_for = LITE_RUNTIME; diff --git a/patches/components-sync-protocol-proto_visitors.h.patch b/patches/components-sync-protocol-proto_visitors.h.patch index 9443cca88d1..d47bd2989de 100644 --- a/patches/components-sync-protocol-proto_visitors.h.patch +++ b/patches/components-sync-protocol-proto_visitors.h.patch @@ -1,8 +1,8 @@ diff --git a/components/sync/protocol/proto_visitors.h b/components/sync/protocol/proto_visitors.h -index 92f1e4f81397b33b9b6ef8280c6c6112bd734504..7d81e6313ed30719e3af128ec8cc1cef1ec38083 100644 +index 426c99acffcb0299c39d2c5d7d9508b352da9e90..fee5a723a759604940cd133d4090ddafc6830987 100644 --- a/components/sync/protocol/proto_visitors.h +++ b/components/sync/protocol/proto_visitors.h -@@ -643,6 +643,7 @@ VISIT_PROTO_FIELDS(const sync_pb::DeviceInfoSpecifics& proto) { +@@ -638,6 +638,7 @@ VISIT_PROTO_FIELDS(const sync_pb::DeviceInfoSpecifics& proto) { VISIT(signin_scoped_device_id); VISIT(last_updated_timestamp); VISIT(feature_fields); @@ -10,7 +10,7 @@ index 92f1e4f81397b33b9b6ef8280c6c6112bd734504..7d81e6313ed30719e3af128ec8cc1cef VISIT(sharing_fields); VISIT(model); VISIT(manufacturer); -@@ -675,6 +676,7 @@ VISIT_PROTO_FIELDS(const sync_pb::FeatureSpecificFields& proto) { +@@ -670,6 +671,7 @@ VISIT_PROTO_FIELDS(const sync_pb::FeatureSpecificFields& proto) { VISIT_REP(desktop_to_ios_promo_receiving_types); } diff --git a/patches/components-sync-protocol-protocol_sources.gni.patch b/patches/components-sync-protocol-protocol_sources.gni.patch index 96021fe9b18..cb79828f834 100644 --- a/patches/components-sync-protocol-protocol_sources.gni.patch +++ b/patches/components-sync-protocol-protocol_sources.gni.patch @@ -1,8 +1,8 @@ diff --git a/components/sync/protocol/protocol_sources.gni b/components/sync/protocol/protocol_sources.gni -index 02757d3bd49547969ff52ad958e8ecd41e14f22e..5d5f08e9c6a4f6faeb4a4c7581075fbe2120f496 100644 +index 3cbb0b3434291816f38fbc7fb0e4fed9ac205d05..e2cf9aff0adc3371df5ad02645b754ac3ff6991d 100644 --- a/components/sync/protocol/protocol_sources.gni +++ b/components/sync/protocol/protocol_sources.gni -@@ -93,3 +93,4 @@ sync_protocol_sources = [ +@@ -95,3 +95,4 @@ sync_protocol_sources = [ "wifi_configuration_specifics.proto", "workspace_desk_specifics.proto", ] diff --git a/patches/components-sync-service-sync_service_impl.h.patch b/patches/components-sync-service-sync_service_impl.h.patch index 836ca90cddb..ad54eb108db 100644 --- a/patches/components-sync-service-sync_service_impl.h.patch +++ b/patches/components-sync-service-sync_service_impl.h.patch @@ -1,5 +1,5 @@ diff --git a/components/sync/service/sync_service_impl.h b/components/sync/service/sync_service_impl.h -index fedf92fda19f62b4ea3db7033d593aef1073bba5..8a0cba364a3e92ff13039db700f76835314c2b79 100644 +index d65c6634db1ddb4ce0a042dd70cd556b29219ba9..bb15589d25e23beba3d5f6d54fb4052e817f033f 100644 --- a/components/sync/service/sync_service_impl.h +++ b/components/sync/service/sync_service_impl.h @@ -298,6 +298,7 @@ class SyncServiceImpl : public SyncService, diff --git a/patches/components-sync-service-sync_user_settings_impl.cc.patch b/patches/components-sync-service-sync_user_settings_impl.cc.patch new file mode 100644 index 00000000000..b5c0b39b65b --- /dev/null +++ b/patches/components-sync-service-sync_user_settings_impl.cc.patch @@ -0,0 +1,12 @@ +diff --git a/components/sync/service/sync_user_settings_impl.cc b/components/sync/service/sync_user_settings_impl.cc +index 90d0c045cef1ed7645314da0bd8d103e5ee75b4f..9631b1a9e4d8f76a42726ecae4ef6a6b07ad39da 100644 +--- a/components/sync/service/sync_user_settings_impl.cc ++++ b/components/sync/service/sync_user_settings_impl.cc +@@ -400,6 +400,7 @@ DataTypeSet SyncUserSettingsImpl::GetPreferredDataTypes() const { + types.Remove(THEMES_IOS); + types.Remove(ACCESSIBILITY_ANNOTATION); + } ++ BraveAdjustPreferredDataTypes(&types); + return types; + } + diff --git a/patches/components-sync_device_info-device_info.h.patch b/patches/components-sync_device_info-device_info.h.patch index 78679ee525a..0952248c07d 100644 --- a/patches/components-sync_device_info-device_info.h.patch +++ b/patches/components-sync_device_info-device_info.h.patch @@ -1,8 +1,8 @@ diff --git a/components/sync_device_info/device_info.h b/components/sync_device_info/device_info.h -index e40c9a5e346dfab5d410719cfac5674b45de0587..79a6383023e08b980796a84b19679e4f6ccfab0a 100644 +index 0de973ef3cfb970cfdbc773cc8be98ae6d384750..23f5d53a8e07152299850f6998abd9c08d164792 100644 --- a/components/sync_device_info/device_info.h +++ b/components/sync_device_info/device_info.h -@@ -160,6 +160,7 @@ class DeviceInfo { +@@ -197,6 +197,7 @@ class DeviceInfo { DeviceInfo(const DeviceInfo&) = delete; DeviceInfo& operator=(const DeviceInfo&) = delete; diff --git a/patches/components-sync_device_info-device_info_sync_bridge.cc.patch b/patches/components-sync_device_info-device_info_sync_bridge.cc.patch index 4cca777d478..564193e8a29 100644 --- a/patches/components-sync_device_info-device_info_sync_bridge.cc.patch +++ b/patches/components-sync_device_info-device_info_sync_bridge.cc.patch @@ -1,8 +1,8 @@ diff --git a/components/sync_device_info/device_info_sync_bridge.cc b/components/sync_device_info/device_info_sync_bridge.cc -index 1552600853586bcb2388ad46a94219dc1f7e0204..dfa3f3dc1451569083a7011af16bcf7931c71e8d 100644 +index bf89ec1fbe695877ceb4832ab43daeafd4494d85..f46aab6d07a030e3e39ec8f8beeb9d6e56be7667 100644 --- a/components/sync_device_info/device_info_sync_bridge.cc +++ b/components/sync_device_info/device_info_sync_bridge.cc -@@ -320,6 +320,7 @@ std::unique_ptr MakeLocalDeviceSpecifics( +@@ -322,6 +322,7 @@ std::unique_ptr MakeLocalDeviceSpecifics( GetSpecificsFieldNumberFromDataType(data_type)); } @@ -10,7 +10,7 @@ index 1552600853586bcb2388ad46a94219dc1f7e0204..dfa3f3dc1451569083a7011af16bcf79 return specifics; } -@@ -513,6 +514,7 @@ std::optional DeviceInfoSyncBridge::ApplyIncrementalSyncChanges( +@@ -516,6 +517,7 @@ std::optional DeviceInfoSyncBridge::ApplyIncrementalSyncChanges( for (const std::unique_ptr& change : entity_changes) { const std::string guid = change->storage_key(); @@ -18,7 +18,7 @@ index 1552600853586bcb2388ad46a94219dc1f7e0204..dfa3f3dc1451569083a7011af16bcf79 // Reupload local device if it was deleted from the server. if (local_cache_guid_ == guid && change->type() == EntityChange::ACTION_DELETE) { -@@ -523,7 +525,7 @@ std::optional DeviceInfoSyncBridge::ApplyIncrementalSyncChanges( +@@ -526,7 +528,7 @@ std::optional DeviceInfoSyncBridge::ApplyIncrementalSyncChanges( // Ignore any remote changes that have a cache guid that is or was this // local device. if (device_info_prefs_->IsRecentLocalCacheGuid(guid)) { @@ -27,7 +27,7 @@ index 1552600853586bcb2388ad46a94219dc1f7e0204..dfa3f3dc1451569083a7011af16bcf79 } if (change->type() == EntityChange::ACTION_DELETE) { -@@ -867,6 +869,7 @@ void DeviceInfoSyncBridge::OnReadAllMetadata( +@@ -877,6 +879,7 @@ void DeviceInfoSyncBridge::OnReadAllMetadata( return; } @@ -35,7 +35,7 @@ index 1552600853586bcb2388ad46a94219dc1f7e0204..dfa3f3dc1451569083a7011af16bcf79 // In the regular case for sync being disabled, wait for MergeFullSyncData() // before initializing the LocalDeviceInfoProvider. if (!syncer::IsInitialSyncDone( -@@ -1111,6 +1114,7 @@ void DeviceInfoSyncBridge::ExpireOldEntries() { +@@ -1121,6 +1124,7 @@ void DeviceInfoSyncBridge::ExpireOldEntries() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); CHECK(store_); TRACE_EVENT0("sync", "DeviceInfoSyncBridge::ExpireOldEntries"); diff --git a/patches/components-sync_preferences-BUILD.gn.patch b/patches/components-sync_preferences-BUILD.gn.patch index 0353824510c..f12cf89f8d0 100644 --- a/patches/components-sync_preferences-BUILD.gn.patch +++ b/patches/components-sync_preferences-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/components/sync_preferences/BUILD.gn b/components/sync_preferences/BUILD.gn -index 78a68a137b42a0862505c9a9f58901f36b3269bb..5ed9628d796b57bb88554f914e3afb443ec195f1 100644 +index 31e2d14b1d3b979121951e843099bc7b528e5960..4b6ff666c62b8f598b4df99a949c2c10ba636bd3 100644 --- a/components/sync_preferences/BUILD.gn +++ b/components/sync_preferences/BUILD.gn -@@ -76,6 +76,7 @@ source_set("common_syncable_prefs_database") { +@@ -78,6 +78,7 @@ source_set("common_syncable_prefs_database") { "//components/translate/core/browser", "//components/variations/service", ] diff --git a/patches/components-sync_sessions-synced_session.cc.patch b/patches/components-sync_sessions-synced_session.cc.patch index 754b462aa15..656a1361063 100644 --- a/patches/components-sync_sessions-synced_session.cc.patch +++ b/patches/components-sync_sessions-synced_session.cc.patch @@ -1,5 +1,5 @@ diff --git a/components/sync_sessions/synced_session.cc b/components/sync_sessions/synced_session.cc -index b4601c19bb8af018fb9e2bb990e485237a6c0d1c..99228bcde98fa106113eb463e7b8ae77aed8ef2b 100644 +index 9426a50483c72e4cb1339a6a290ba12e900917e3..9724d7b1f207fe411be6891984bf1a3a0d6fe916 100644 --- a/components/sync_sessions/synced_session.cc +++ b/components/sync_sessions/synced_session.cc @@ -103,7 +103,7 @@ sync_pb::TabNavigation SessionNavigationToSyncData( diff --git a/patches/components-translate-content-renderer-translate_agent.cc.patch b/patches/components-translate-content-renderer-translate_agent.cc.patch index c8d6bb1038b..7139fc6398f 100644 --- a/patches/components-translate-content-renderer-translate_agent.cc.patch +++ b/patches/components-translate-content-renderer-translate_agent.cc.patch @@ -1,5 +1,5 @@ diff --git a/components/translate/content/renderer/translate_agent.cc b/components/translate/content/renderer/translate_agent.cc -index 115f9e342beb56ec8127248283c50aa879486e16..6b510d48de7c9dc6834e205d86ed5f0781ac524a 100644 +index dd3bedbf7ec724723347c6108788dbc72d0bcd21..0a62b966ed23111c02e360341819460c7615f0f6 100644 --- a/components/translate/content/renderer/translate_agent.cc +++ b/components/translate/content/renderer/translate_agent.cc @@ -61,7 +61,7 @@ const int kTranslateInitCheckDelayMs = 150; diff --git a/patches/components-unexportable_keys-mojom-unexportable_keys_mojom_traits.cc.patch b/patches/components-unexportable_keys-mojom-unexportable_keys_mojom_traits.cc.patch index d3ae68ff74e..468c7b39bde 100644 --- a/patches/components-unexportable_keys-mojom-unexportable_keys_mojom_traits.cc.patch +++ b/patches/components-unexportable_keys-mojom-unexportable_keys_mojom_traits.cc.patch @@ -1,5 +1,5 @@ diff --git a/components/unexportable_keys/mojom/unexportable_keys_mojom_traits.cc b/components/unexportable_keys/mojom/unexportable_keys_mojom_traits.cc -index 157ec02a5182431ee55e01fe833ad59bb61076c9..adce9d11945c4c2fb9630b0a3bb19acb25653268 100644 +index 22910665d452c40e631b5b24fb6861f7ed8c88c2..0a8bcf8bd65eff64178332a1c509690c58280731 100644 --- a/components/unexportable_keys/mojom/unexportable_keys_mojom_traits.cc +++ b/components/unexportable_keys/mojom/unexportable_keys_mojom_traits.cc @@ -29,6 +29,7 @@ EnumTraitsurl = redirect_info.new_url; common_params_->method = redirect_info.new_method; common_params_->referrer->url = GURL(redirect_info.new_referrer); @@ -10,7 +10,7 @@ index c1050002a5ce766c04e2274b1dd61db258cea8a6..2486b01a081ad65195ae0dc562ecd73b common_params_->referrer = Referrer::SanitizeForRequest( common_params_->url, *common_params_->referrer); -@@ -5656,6 +5657,7 @@ void NavigationRequest::OnStartChecksComplete( +@@ -5743,6 +5744,7 @@ void NavigationRequest::OnStartChecksComplete( headers.MergeFrom(TakeModifiedRequestHeaders()); begin_params_->headers = headers.ToString(); diff --git a/patches/content-browser-renderer_host-render_frame_host_impl.cc.patch b/patches/content-browser-renderer_host-render_frame_host_impl.cc.patch index 805ab472fa6..69667ed6bc6 100644 --- a/patches/content-browser-renderer_host-render_frame_host_impl.cc.patch +++ b/patches/content-browser-renderer_host-render_frame_host_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc -index a7baf0c88fbfc4c4448966e4938e92d62fa2ff19..39f7d4607297b158ccc894295c13d64cc709f8c8 100644 +index 2bacb736c7a3e1fb70ec590883c87ce667e461e1..c2e839ec2c6b92b97f513daed965aac41e2f387d 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -5485,6 +5485,7 @@ net::IsolationInfo RenderFrameHostImpl::ComputeIsolationInfoInternal( +@@ -5532,6 +5532,7 @@ net::IsolationInfo RenderFrameHostImpl::ComputeIsolationInfoInternal( candidate_site_for_cookies = net::SiteForCookies(top_frame_site); } @@ -10,7 +10,7 @@ index a7baf0c88fbfc4c4448966e4938e92d62fa2ff19..39f7d4607297b158ccc894295c13d64c std::optional nonce = ComputeNonce(is_credentialless, fenced_frame_nonce_for_navigation); return net::IsolationInfo::Create( -@@ -5496,6 +5497,7 @@ net::IsolationInfo RenderFrameHostImpl::ComputeIsolationInfoInternal( +@@ -5543,6 +5544,7 @@ net::IsolationInfo RenderFrameHostImpl::ComputeIsolationInfoInternal( std::optional RenderFrameHostImpl::ComputeNonce( bool is_credentialless, std::optional fenced_frame_nonce_for_navigation) { @@ -18,7 +18,7 @@ index a7baf0c88fbfc4c4448966e4938e92d62fa2ff19..39f7d4607297b158ccc894295c13d64c // If it's a credentialless frame tree, use its nonce even if it's within a // fenced frame tree to maintain the guarantee that a credentialless frame // tree has a unique nonce. -@@ -10185,6 +10187,7 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -10293,6 +10295,7 @@ void RenderFrameHostImpl::CreateNewWindow( dom_storage_context, params->session_storage_namespace_id); } diff --git a/patches/content-browser-resources-gpu-browser_bridge.ts.patch b/patches/content-browser-resources-gpu-browser_bridge.ts.patch index 93df034e3a9..3aea137b51d 100644 --- a/patches/content-browser-resources-gpu-browser_bridge.ts.patch +++ b/patches/content-browser-resources-gpu-browser_bridge.ts.patch @@ -1,5 +1,5 @@ diff --git a/content/browser/resources/gpu/browser_bridge.ts b/content/browser/resources/gpu/browser_bridge.ts -index b9aab5ff2d70b0e2d936de5ca4d903424a8849a8..2d8e3d585c8b0f94adacb6883a8b6c7a48d27d16 100644 +index a7208a35fdec3eaa5ee3de582e358535809cb8f3..7eba359b5e57610dfee18ac8ced46a8b62884418 100644 --- a/content/browser/resources/gpu/browser_bridge.ts +++ b/content/browser/resources/gpu/browser_bridge.ts @@ -12,6 +12,7 @@ export interface ClientInfo { diff --git a/patches/content-browser-resources-gpu-info_view.ts.patch b/patches/content-browser-resources-gpu-info_view.ts.patch index fdb4d3e61aa..7e8f7382ac2 100644 --- a/patches/content-browser-resources-gpu-info_view.ts.patch +++ b/patches/content-browser-resources-gpu-info_view.ts.patch @@ -1,5 +1,5 @@ diff --git a/content/browser/resources/gpu/info_view.ts b/content/browser/resources/gpu/info_view.ts -index 3129874f01ae854a0d0f6b39c4f60612304e5ecb..44312f97f823f681a20b63469644632962458abb 100644 +index f0b1969fce598e77dd64c4a6f500e65b16e0916b..d86d6b908c26d920cd4f6fe7a2bc11e7c3a13b11 100644 --- a/content/browser/resources/gpu/info_view.ts +++ b/content/browser/resources/gpu/info_view.ts @@ -529,6 +529,7 @@ export class InfoViewElement extends CustomElement { diff --git a/patches/content-browser-web_contents-web_contents_impl.cc.patch b/patches/content-browser-web_contents-web_contents_impl.cc.patch index 747bacaadb1..992482f14ea 100644 --- a/patches/content-browser-web_contents-web_contents_impl.cc.patch +++ b/patches/content-browser-web_contents-web_contents_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index a2574a46ca0ebaed911afc1b51e38339404898df..5978e36ae3b2dec02ad2a85ab173292949ea4778 100644 +index a65a4f8daebf8376973daacdc105dc5eca22af4b..60d1b661036afdecf63da5f690a68805f1d60e17 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -5347,6 +5347,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -5469,6 +5469,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( // SiteInstance is created in a new BrowsingInstance. scoped_refptr site_instance; if (params.opener_suppressed) { @@ -10,7 +10,7 @@ index a2574a46ca0ebaed911afc1b51e38339404898df..5978e36ae3b2dec02ad2a85ab1732929 if (is_guest) { // For guests, noopener windows can be created in a new BrowsingInstance // as long as they preserve the guest's StoragePartition. -@@ -5444,7 +5445,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -5566,7 +5567,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( // Save the window for later if we're not suppressing the opener (since it // will be shown immediately). diff --git a/patches/content-common-BUILD.gn.patch b/patches/content-common-BUILD.gn.patch index 3aa08abd72e..033cdb14f01 100644 --- a/patches/content-common-BUILD.gn.patch +++ b/patches/content-common-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn -index 5487c3756c60389a3442c2e59a08c91890fb6f87..ea56692d02ac934885ab03a29bd624daa5328c80 100644 +index 6294792999d1653b73c695ebfddda0f8a45d82c9..2c426b09bc17ee8e4a6aedc252b58cd3906d3060 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn @@ -64,6 +64,7 @@ source_set("common") { diff --git a/patches/content-common-frame.mojom.patch b/patches/content-common-frame.mojom.patch index 6ad97676253..4c08ab5e734 100644 --- a/patches/content-common-frame.mojom.patch +++ b/patches/content-common-frame.mojom.patch @@ -1,8 +1,8 @@ diff --git a/content/common/frame.mojom b/content/common/frame.mojom -index 19dbb921c9644522588ff74d0a1925f826736957..fabb2c006d9f8c42868ce81cbd4ccbf2a191d8d8 100644 +index 444fa7009d0db33470cac9ab9cfdc23ceacec942..23231c9e313050ada7f83f07fc8759edf1e4c1ce 100644 --- a/content/common/frame.mojom +++ b/content/common/frame.mojom -@@ -593,6 +593,7 @@ struct CreateNewWindowParams { +@@ -552,6 +552,7 @@ struct CreateNewWindowParams { // Whether the opener will be suppressed in the new window, in which case // scripting the new window is not allowed. bool opener_suppressed; diff --git a/patches/content-public-browser-BUILD.gn.patch b/patches/content-public-browser-BUILD.gn.patch index 849e1a2f989..9e0fc5ff270 100644 --- a/patches/content-public-browser-BUILD.gn.patch +++ b/patches/content-public-browser-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/content/public/browser/BUILD.gn b/content/public/browser/BUILD.gn -index 30870710ca42d8f709510ddea300536a9261fb49..0f71a2203d813e28775ebe7c7434e2e291330e47 100644 +index 8e3c31602522b40bc643546b22fa0e5c116157c7..22d91f5c20c70b71b7cdfa65df66e83833c0a267 100644 --- a/content/public/browser/BUILD.gn +++ b/content/public/browser/BUILD.gn -@@ -758,6 +758,7 @@ source_set("browser_sources") { +@@ -766,6 +766,7 @@ source_set("browser_sources") { if (use_clang_profiling_inside_sandbox) { sources += [ "profiling_utils.h" ] } diff --git a/patches/content-renderer-render_frame_impl.cc.patch b/patches/content-renderer-render_frame_impl.cc.patch index b61896a47f6..caad6e2ceb4 100644 --- a/patches/content-renderer-render_frame_impl.cc.patch +++ b/patches/content-renderer-render_frame_impl.cc.patch @@ -1,8 +1,8 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index 6ee766c52202804adc532b1585224b4e35239f9a..074f5bdead480c392b53761867b0209fadea8b10 100644 +index 5936c5eaa081abde7f7c26cc990a122622e46908..742234c927abae0a8bbf477e448a4fc6e3d6f2a6 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -4820,6 +4820,7 @@ bool RenderFrameImpl::ShouldUseUserAgentOverride() const { +@@ -4784,6 +4784,7 @@ bool RenderFrameImpl::ShouldUseUserAgentOverride() const { // Temporarily return early and fix properly as part of // https://crbug.com/426555. if (web_view->MainFrame()->IsWebRemoteFrame()) diff --git a/patches/extensions-browser-api-web_request-extension_web_request_event_router.cc.patch b/patches/extensions-browser-api-web_request-extension_web_request_event_router.cc.patch index 36d9994775b..9bf77c6c298 100644 --- a/patches/extensions-browser-api-web_request-extension_web_request_event_router.cc.patch +++ b/patches/extensions-browser-api-web_request-extension_web_request_event_router.cc.patch @@ -1,5 +1,5 @@ diff --git a/extensions/browser/api/web_request/extension_web_request_event_router.cc b/extensions/browser/api/web_request/extension_web_request_event_router.cc -index e0298d214ea21bab003b74c857f3354c268ca465..7cb97a9a057f9ad70296e4cd6de90e0b7e90283e 100644 +index b11485abe1c1ee0b35ee67345f5e30cd13a49764..1b00c578cbac105149ba13b857265b699e87198c 100644 --- a/extensions/browser/api/web_request/extension_web_request_event_router.cc +++ b/extensions/browser/api/web_request/extension_web_request_event_router.cc @@ -1468,6 +1468,7 @@ WebRequestEventRouter::OnAuthRequired(content::BrowserContext* browser_context, diff --git a/patches/ios-build-bots-scripts-iossim_util.py.patch b/patches/ios-build-bots-scripts-iossim_util.py.patch deleted file mode 100644 index 2a35a26a927..00000000000 --- a/patches/ios-build-bots-scripts-iossim_util.py.patch +++ /dev/null @@ -1,69 +0,0 @@ -diff --git a/ios/build/bots/scripts/iossim_util.py b/ios/build/bots/scripts/iossim_util.py -index d1253bb5e285087154f6586074eba069a2ebe8c3..e2d064221e1b7171c8cf7fea9b752aab8b9c46a1 100644 ---- a/ios/build/bots/scripts/iossim_util.py -+++ b/ios/build/bots/scripts/iossim_util.py -@@ -333,7 +333,10 @@ def boot_simulator_if_not_booted(sim_udid, path=SIMULATOR_DEFAULT_PATH): - (sim_udid, simulator_list['devices'])) - - --def ensure_simulator_fully_booted(sim_udid: str, path=SIMULATOR_DEFAULT_PATH): -+def ensure_simulator_fully_booted(sim_udid: str, -+ path=SIMULATOR_DEFAULT_PATH, -+ num_attempts=1): -+ return False - """Ensures simulator of given udid is fully booted. - - `xcrun simctl boot` launches only background processes and does not ensure the -@@ -351,29 +354,36 @@ def ensure_simulator_fully_booted(sim_udid: str, path=SIMULATOR_DEFAULT_PATH): - Returns: - True if the simulator was successfully booted, false otherwise. - """ -- if is_device_with_udid_simulator(sim_udid): -+ if not is_device_with_udid_simulator(sim_udid): -+ raise test_runner.SimulatorNotFoundError( -+ f"Not found simulator with UDID: {sim_udid}") - -- # Ensure data migrations are run -- cmd = [ -- 'xcrun', -- 'simctl', -- '--set', -- path, -- 'bootstatus', -- sim_udid, -- '-bd', -- ] -+ # Ensure data migrations are run -+ cmd = [ -+ 'xcrun', -+ 'simctl', -+ '--set', -+ path, -+ 'bootstatus', -+ sim_udid, -+ '-bd', -+ ] -+ -+ for boot_attempt in range(num_attempts): - try: - subprocess.check_call(cmd, timeout=120) -+ return True - except subprocess.TimeoutExpired as e: - msg = f"Manually booting simulator timed out after 120 seconds." - LOGGER.info(msg) -- return False -- return True -+ msg_again = " again" if boot_attempt > 0 else "" -+ msg_action = "continuing" if boot_attempt == num_attempts - 1 else "retrying" -+ LOGGER.info(f"Failed to manually boot simulator{msg_again}. " -+ f"Wiping simulator and {msg_action}.") -+ wipe_simulator_by_udid(sim_udid) -+ test_runner.SimulatorTestRunner.kill_simulators() - -- else: -- raise test_runner.SimulatorNotFoundError( -- f"Not found simulator with UDID: {sim_udid}") -+ return False - - - diff --git a/patches/ios-build-bots-scripts-test_runner.py.patch b/patches/ios-build-bots-scripts-test_runner.py.patch index 73e726ebf26..76e2191b1ec 100644 --- a/patches/ios-build-bots-scripts-test_runner.py.patch +++ b/patches/ios-build-bots-scripts-test_runner.py.patch @@ -1,5 +1,5 @@ diff --git a/ios/build/bots/scripts/test_runner.py b/ios/build/bots/scripts/test_runner.py -index ce272919c24e5603347929097efbdf15c24f140d..eff230cf2155d6e97527cd53f6cf981555431ae8 100644 +index f66023dbc07d2bc867f89b8769d5bc0f091fc628..2309fa4a28a3f054c07adc64897df054eaa3a276 100644 --- a/ios/build/bots/scripts/test_runner.py +++ b/ios/build/bots/scripts/test_runner.py @@ -404,6 +404,7 @@ class TestRunner(object): @@ -10,27 +10,3 @@ index ce272919c24e5603347929097efbdf15c24f140d..eff230cf2155d6e97527cd53f6cf9815 LOGGER.info('Removing any proxy settings.') network_services = subprocess.check_output( ['networksetup', -@@ -636,10 +637,7 @@ class TestRunner(object): - if iossim_util.is_device_with_udid_simulator(self.udid): - with measures.time_consumption('Simulator full boot', 'TestRunner', - 'Pre launch for testing'): -- if not iossim_util.ensure_simulator_fully_booted(self.udid): -- LOGGER.info("Failed to manually boot simulator. " -- "Wiping simulator and continuing.") -- iossim_util.wipe_simulator_by_udid(self.udid) -+ iossim_util.ensure_simulator_fully_booted(self.udid) - - try: - result = self._run(cmd=cmd, clones=self.clones or 1) -@@ -830,10 +828,10 @@ class SimulatorTestRunner(TestRunner): - def set_up(self): - """Performs setup actions which must occur prior to every test launch.""" - self.remove_proxy_settings() -- self.kill_simulators() - self.wipe_simulator() - self.wipe_derived_data() - self.disable_hw_keyboard() -+ self.kill_simulators() - self.homedir = self.get_home_directory() - # Crash reports have a timestamp in their file name, formatted as - # YYYY-MM-DD-HHMMSS. Save the current time in the same format so diff --git a/patches/ios-build-bots-scripts-xcodebuild_runner.py.patch b/patches/ios-build-bots-scripts-xcodebuild_runner.py.patch deleted file mode 100644 index 8754fe5e868..00000000000 --- a/patches/ios-build-bots-scripts-xcodebuild_runner.py.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/ios/build/bots/scripts/xcodebuild_runner.py b/ios/build/bots/scripts/xcodebuild_runner.py -index e114ee2fd9e394332b80ce159ace3b25a3b6151a..6f3a9c66595913b347de7175f7ed5e41c4c02842 100644 ---- a/ios/build/bots/scripts/xcodebuild_runner.py -+++ b/ios/build/bots/scripts/xcodebuild_runner.py -@@ -201,12 +201,12 @@ class LaunchCommand(object): - # Erase all simulators per each attempt - if iossim_util.is_device_with_udid_simulator(self.udid): - if self.erase_simulators: -- # kill all running simulators to prevent possible memory leaks -- test_runner.SimulatorTestRunner.kill_simulators() - shutdown_all_simulators() - shutdown_all_simulators(XTDEVICE_FOLDER) - erase_all_simulators() - erase_all_simulators(XTDEVICE_FOLDER) -+ # kill all running simulators to prevent possible memory leaks -+ test_runner.SimulatorTestRunner.kill_simulators() - if self.cert_path: - iossim_util.copy_trusted_certificate(self.cert_path, self.udid) - -@@ -214,10 +214,7 @@ class LaunchCommand(object): - 'XcodeBuildRunner', - 'Pre launch For testing', - f'Test attempt {attempt}'): -- if not iossim_util.ensure_simulator_fully_booted(self.udid): -- LOGGER.info("Failed to manually boot simulator. " -- "Wiping simulator and continuing.") -- iossim_util.wipe_simulator_by_udid(self.udid) -+ iossim_util.ensure_simulator_fully_booted(self.udid, num_attempts=2) - - - # ideally this should be the last step before running tests, because -@@ -384,10 +381,7 @@ class SimulatorParallelTestRunner(test_runner.SimulatorTestRunner): - if iossim_util.is_device_with_udid_simulator(self.udid): - with measures.time_consumption('Simulator full boot', 'XcodeBuildRunner', - 'Pre launch for enumerate test cases'): -- if not iossim_util.ensure_simulator_fully_booted(self.udid): -- LOGGER.info("Failed to manually boot simulator. " -- "Wiping simulator and continuing.") -- iossim_util.wipe_simulator_by_udid(self.udid) -+ iossim_util.ensure_simulator_fully_booted(self.udid, num_attempts=2) - - for attempt in range(num_attempts): - # reset error_message with each attempt diff --git a/patches/ios-chrome-app-BUILD.gn.patch b/patches/ios-chrome-app-BUILD.gn.patch index d909716ad54..cf4bdfcfd4e 100644 --- a/patches/ios-chrome-app-BUILD.gn.patch +++ b/patches/ios-chrome-app-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn -index 9b6febe5678c88d1d896189fb12220cea63e4d96..3f2ab3abaa6586769f29cfc8c94b4189fbbd6cf4 100644 +index b491fc2cb18c575e4c99df2e7c54b1944aa73fe4..630148c793edbb9e4a0245bde14068bf2052767c 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn -@@ -917,8 +917,7 @@ chrome_app("chrome") { +@@ -916,8 +916,7 @@ chrome_app("chrome") { # (see https://crbug.com/1394553 for details of the build failure). This # is a stop-gap solution. if (target_environment == "catalyst" || diff --git a/patches/ios-chrome-browser-flags-BUILD.gn.patch b/patches/ios-chrome-browser-flags-BUILD.gn.patch index 4e0a5ec1a04..8986d985618 100644 --- a/patches/ios-chrome-browser-flags-BUILD.gn.patch +++ b/patches/ios-chrome-browser-flags-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/ios/chrome/browser/flags/BUILD.gn b/ios/chrome/browser/flags/BUILD.gn -index b3d457e5427ac30d96c1e9fbd7dd6007a0e5528f..f16b2f1c21754cdd0828fc5f82210c5891e5c7a6 100644 +index 8ab553e75ddd65d23633e3105dfe9e6e4b05f088..eee98e5c78ca8c0b2ba721bb3a2b002964a53cfc 100644 --- a/ios/chrome/browser/flags/BUILD.gn +++ b/ios/chrome/browser/flags/BUILD.gn -@@ -117,6 +117,7 @@ source_set("flags") { +@@ -119,6 +119,7 @@ source_set("flags") { "//ios/web/common:web_view_creation_util", "//ios/web/public", ] diff --git a/patches/ios-chrome-browser-flags-about_flags.mm.patch b/patches/ios-chrome-browser-flags-about_flags.mm.patch index 9ac282b28e2..21e32992548 100644 --- a/patches/ios-chrome-browser-flags-about_flags.mm.patch +++ b/patches/ios-chrome-browser-flags-about_flags.mm.patch @@ -1,8 +1,8 @@ diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm -index 47212199508803526cc6210c4ef3ae43f6fe3218..3e2f923b42e0d862bbf0bba731b2375e0d302bd4 100644 +index 224bd6d9239c92a7dd3aa0d182c7bc3ce9ad78fe..4723a94aa5e3db34de56fe9ed25ea493d2853c71 100644 --- a/ios/chrome/browser/flags/about_flags.mm +++ b/ios/chrome/browser/flags/about_flags.mm -@@ -1406,6 +1406,7 @@ const FeatureEntry::FeatureVariation kAssistantContainerVariations[] = { +@@ -1354,6 +1354,7 @@ const FeatureEntry::FeatureVariation kAssistantContainerVariations[] = { // // When adding a new choice, add it to the end of the list. constexpr auto kFeatureEntries = std::to_array({ diff --git a/patches/ios-chrome-browser-shared-model-prefs-browser_prefs.mm.patch b/patches/ios-chrome-browser-shared-model-prefs-browser_prefs.mm.patch index c4655cec60f..8ed03d696e5 100644 --- a/patches/ios-chrome-browser-shared-model-prefs-browser_prefs.mm.patch +++ b/patches/ios-chrome-browser-shared-model-prefs-browser_prefs.mm.patch @@ -1,8 +1,8 @@ diff --git a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm -index 104ef507fa9a4ad0b92e3486cdb260295b276f3f..a311739b0e25a4a1c5a8625d29730589dba6d230 100644 +index a991e45660ba7718f4e67cfa13ee783c3acc1283..ad57013c5ffc63d367b76cd84e8a0b704ae34d67 100644 --- a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm +++ b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm -@@ -578,6 +578,7 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { +@@ -576,6 +576,7 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { // Deprecated 01/2026. registry->RegisterListPref(kMagicStackSafetyCheckNotificationsShown); registry->RegisterListPref(kBottomOmniboxByDefault); @@ -10,7 +10,7 @@ index 104ef507fa9a4ad0b92e3486cdb260295b276f3f..a311739b0e25a4a1c5a8625d29730589 } void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { -@@ -1041,6 +1042,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -1034,6 +1035,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { // Deprecated 12/2025. registry->RegisterStringPref(kAutofillStatesDataDir, std::string()); registry->RegisterBooleanPref(prefs::kIosMiniMapShowNativeMap, true); diff --git a/patches/ios-chrome-browser-sync-model-sync_service_factory.mm.patch b/patches/ios-chrome-browser-sync-model-sync_service_factory.mm.patch index 5b20930c0e2..b872dee2521 100644 --- a/patches/ios-chrome-browser-sync-model-sync_service_factory.mm.patch +++ b/patches/ios-chrome-browser-sync-model-sync_service_factory.mm.patch @@ -1,8 +1,8 @@ diff --git a/ios/chrome/browser/sync/model/sync_service_factory.mm b/ios/chrome/browser/sync/model/sync_service_factory.mm -index 160f73946232a63f67ea9ace4cd939ec9ddb80aa..1d075f6e4fe308176d39caa3ac8068a1448a4fda 100644 +index 904aaf1326e54e44ffc3c4d13a05972dfa4312dd..e442249b6259dc9be221c2d522ac3c4d4fa6d50f 100644 --- a/ios/chrome/browser/sync/model/sync_service_factory.mm +++ b/ios/chrome/browser/sync/model/sync_service_factory.mm -@@ -218,7 +218,7 @@ std::unique_ptr BuildSyncService(ProfileIOS* profile) { +@@ -223,7 +223,7 @@ std::unique_ptr BuildSyncService(ProfileIOS* profile) { init_params.debug_identifier = profile->GetProfileName(); init_params.os_crypt_async = GetApplicationContext()->GetOSCryptAsync(); auto sync_service = diff --git a/patches/mojo-public-tools-bindings-checks-mojom_attributes_check.py.patch b/patches/mojo-public-tools-bindings-checks-mojom_attributes_check.py.patch index 086a3866790..96aaf2f397c 100644 --- a/patches/mojo-public-tools-bindings-checks-mojom_attributes_check.py.patch +++ b/patches/mojo-public-tools-bindings-checks-mojom_attributes_check.py.patch @@ -1,5 +1,5 @@ diff --git a/mojo/public/tools/bindings/checks/mojom_attributes_check.py b/mojo/public/tools/bindings/checks/mojom_attributes_check.py -index 9b3618b9f8f2d296733658828598d9341a4db1b9..1451c399ef51af9b349efc3b004722480bc7feac 100644 +index 56892eaa0ba2b2a2f44d2f04c10f0c76b7e99da4..7ac86dd20c818df47f34c337148d991d20669bc5 100644 --- a/mojo/public/tools/bindings/checks/mojom_attributes_check.py +++ b/mojo/public/tools/bindings/checks/mojom_attributes_check.py @@ -7,6 +7,7 @@ import mojom.generate.check as check @@ -10,7 +10,7 @@ index 9b3618b9f8f2d296733658828598d9341a4db1b9..1451c399ef51af9b349efc3b00472248 'EnableIf', 'EnableIfNot', 'VendorSpecified', -@@ -177,6 +178,7 @@ _NATIVE_ALLOWLIST = { +@@ -184,6 +185,7 @@ _NATIVE_ALLOWLIST = { 'search.mojom.OmniboxFocusState', 'ui.mojom.EventPointerType', 'ui.mojom.ScrollGranularity', diff --git a/patches/net-BUILD.gn.patch b/patches/net-BUILD.gn.patch index 7afb28c76d5..8b22b29c4c9 100644 --- a/patches/net-BUILD.gn.patch +++ b/patches/net-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn -index 3b79182266f22c783b69b7dcfd9ffbb1c8a539cf..742d7fd3dfe7b9a4766045db2e4b124bf9a31e93 100644 +index 19c01e132bf046dda4ae75f99d1a71bd410155c8..59744b02e962874bce7d1840464cf08e6f9e76e8 100644 --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1284,6 +1284,7 @@ component("net") { +@@ -1288,6 +1288,7 @@ component("net") { "reporting/reporting_uploader.h", ] } diff --git a/patches/net-cookies-canonical_cookie.cc.patch b/patches/net-cookies-canonical_cookie.cc.patch index 46bad733ea6..e8240a78b6a 100644 --- a/patches/net-cookies-canonical_cookie.cc.patch +++ b/patches/net-cookies-canonical_cookie.cc.patch @@ -1,8 +1,8 @@ diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc -index acd8a08369d4213a61929963379f53aa43779b97..ce4293bbf7d76dc82759f38a74a1866d37bec638 100644 +index 1e790bd53eaa685d979f3b09b70c1283f5f004bf..ad14568a851e6886353a6868cfeefc7178f87e96 100644 --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc -@@ -324,6 +324,7 @@ base::Time CanonicalCookie::ValidateAndAdjustExpiryDate( +@@ -280,6 +280,7 @@ base::Time CanonicalCookie::ValidateAndAdjustExpiryDate( // * network_handler.cc::MakeCookieFromProtocolValues fixed_creation_date = base::Time::Now(); } diff --git a/patches/net-dns-BUILD.gn.patch b/patches/net-dns-BUILD.gn.patch index 67ccae10b49..10f5d65c620 100644 --- a/patches/net-dns-BUILD.gn.patch +++ b/patches/net-dns-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/net/dns/BUILD.gn b/net/dns/BUILD.gn -index d8509119f1c9e527d2a89faad239e13dead54257..a20a3272b439e040919cb35896f88fe369bc4e52 100644 +index fe250ad7f81a503f2db084e6b55dafc06e35e2fb..b7c9857ec4085cbc90d114ca2605da4486467f10 100644 --- a/net/dns/BUILD.gn +++ b/net/dns/BUILD.gn -@@ -122,6 +122,7 @@ source_set("dns") { +@@ -123,6 +123,7 @@ source_set("dns") { "test_dns_config_service.cc", "test_dns_config_service.h", ] diff --git a/patches/net-dns-host_cache.cc.patch b/patches/net-dns-host_cache.cc.patch index 0e7f164d106..71f9651cc88 100644 --- a/patches/net-dns-host_cache.cc.patch +++ b/patches/net-dns-host_cache.cc.patch @@ -1,5 +1,5 @@ diff --git a/net/dns/host_cache.cc b/net/dns/host_cache.cc -index db5a8351aa1a814978965d154d01e06cfdf18820..24c70f4df59a4d1cc4ca66c66097afa6ad4bc443 100644 +index 2d42255a1db98628a741030da1a88d9730baad34..ad09bcb74948662fe978b7481bf6385ed60d8658 100644 --- a/net/dns/host_cache.cc +++ b/net/dns/host_cache.cc @@ -502,6 +502,7 @@ HostCache::Entry HostCache::Entry::CopyWithDefaultPort(uint16_t port) const { diff --git a/patches/net-dns-host_resolver_manager_job.cc.patch b/patches/net-dns-host_resolver_manager_job.cc.patch index aca9065e282..f0f6c1a9e70 100644 --- a/patches/net-dns-host_resolver_manager_job.cc.patch +++ b/patches/net-dns-host_resolver_manager_job.cc.patch @@ -1,8 +1,8 @@ diff --git a/net/dns/host_resolver_manager_job.cc b/net/dns/host_resolver_manager_job.cc -index 7f41594d1856b17d4e07a73fd0736935f310ecde..245d82bae6bfd94bba9712747e3f9621d4d5b85a 100644 +index bf13934233d56940820659ac6f2f5d958298e956..1b662979e7fc58ef80ef1c40d5015f0fe4083a64 100644 --- a/net/dns/host_resolver_manager_job.cc +++ b/net/dns/host_resolver_manager_job.cc -@@ -1097,6 +1097,7 @@ void HostResolverManager::Job::CompleteRequests( +@@ -1186,6 +1186,7 @@ void HostResolverManager::Job::CompleteRequests( } RecordJobHistograms(results, task_type); diff --git a/patches/net-http-transport_security_state.cc.patch b/patches/net-http-transport_security_state.cc.patch index 88e45563ded..605a3d86c7e 100644 --- a/patches/net-http-transport_security_state.cc.patch +++ b/patches/net-http-transport_security_state.cc.patch @@ -1,8 +1,8 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc -index 6366d90fc4748c72d15b4273c16f39c1f518915f..f8c5b1abe8a680db8b68810945965a211f302d4c 100644 +index 629e295d45f81267284b1f8332babdcbcc2466bd..900872b166b61a1499b6c78ffcc09a02ec107868 100644 --- a/net/http/transport_security_state.cc +++ b/net/http/transport_security_state.cc -@@ -237,6 +237,7 @@ TransportSecurityState::TransportSecurityState( +@@ -224,6 +224,7 @@ TransportSecurityState::TransportSecurityState( // others don't end up with pins that cannot be easily updated. #if !BUILDFLAG(GOOGLE_CHROME_BRANDING) || BUILDFLAG(IS_IOS) enable_static_pins_ = false; diff --git a/patches/net-proxy_resolution-configured_proxy_resolution_service.cc.patch b/patches/net-proxy_resolution-configured_proxy_resolution_service.cc.patch index 40df1164990..282c2278cb9 100644 --- a/patches/net-proxy_resolution-configured_proxy_resolution_service.cc.patch +++ b/patches/net-proxy_resolution-configured_proxy_resolution_service.cc.patch @@ -1,8 +1,8 @@ diff --git a/net/proxy_resolution/configured_proxy_resolution_service.cc b/net/proxy_resolution/configured_proxy_resolution_service.cc -index d79c6b342d6badf36fc820bd66b6c2d54e906b14..20ee310689c876cf6907d6c6c3f523e4ebbd5dbe 100644 +index d26744b0678afd797417e5550a004370f41d05ba..de7d8a8883fd44f12d35f76bc1678993625c7a36 100644 --- a/net/proxy_resolution/configured_proxy_resolution_service.cc +++ b/net/proxy_resolution/configured_proxy_resolution_service.cc -@@ -1004,6 +1004,7 @@ int ConfiguredProxyResolutionService::ResolveProxy( +@@ -1003,6 +1003,7 @@ int ConfiguredProxyResolutionService::ResolveProxy( // using a direct connection for example). int rv = TryToCompleteSynchronously(url, /*bypass_override_rules=*/false, net_log, result); diff --git a/patches/remoting-host-installer-linux-installer.include.patch b/patches/remoting-host-installer-linux-installer.include.patch index 1616965dffd..03c6dad2cd7 100644 --- a/patches/remoting-host-installer-linux-installer.include.patch +++ b/patches/remoting-host-installer-linux-installer.include.patch @@ -1,5 +1,5 @@ diff --git a/remoting/host/installer/linux/installer.include b/remoting/host/installer/linux/installer.include -index 6c74d865ee58d6eba547874cdebea5145c080418..2072e258efa6aa3f6ce96af4de18a91b4ec0b6e6 100644 +index 0f7b1654eee1e2eaa3bb37551b1809c7eae26a65..84c0782c8f462d4f2dd88b616ae12d0874f87254 100644 --- a/remoting/host/installer/linux/installer.include +++ b/remoting/host/installer/linux/installer.include @@ -147,6 +147,8 @@ stage_install_common() { diff --git a/patches/sandbox-win-BUILD.gn.patch b/patches/sandbox-win-BUILD.gn.patch index e0d182bea1a..e6358e2099b 100644 --- a/patches/sandbox-win-BUILD.gn.patch +++ b/patches/sandbox-win-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/sandbox/win/BUILD.gn b/sandbox/win/BUILD.gn -index 8a919533d307a92c4719e6b2a0cd2a5cb14e07f5..7ac999b533cbb8742239b9d493626ce06791391a 100644 +index 38f7ebea5a3352b7ae65cd4b9ccc1d4349b730b7..fef18a08a07b38313e1da79eaca0dc47f74b86ab 100644 --- a/sandbox/win/BUILD.gn +++ b/sandbox/win/BUILD.gn @@ -179,6 +179,7 @@ static_library("sandbox") { diff --git a/patches/services-network-cookie_manager.cc.patch b/patches/services-network-cookie_manager.cc.patch index f664f465d51..d62d32aeff3 100644 --- a/patches/services-network-cookie_manager.cc.patch +++ b/patches/services-network-cookie_manager.cc.patch @@ -1,8 +1,8 @@ diff --git a/services/network/cookie_manager.cc b/services/network/cookie_manager.cc -index 3ecc53285b872e1eab24e6ef8ab522063d2c4ed1..7e1590b890ff9570d5d45bb7969b74e4df899ffc 100644 +index bda68e8fb5eb322decef71a674cd486390b5c972..bfc12f9cf5299afa6c7591d0a583faba15439a25 100644 --- a/services/network/cookie_manager.cc +++ b/services/network/cookie_manager.cc -@@ -420,6 +420,7 @@ CookieDeletionInfo DeletionFilterToInfo(mojom::CookieDeletionFilterPtr filter) { +@@ -413,6 +413,7 @@ CookieDeletionInfo DeletionFilterToInfo(mojom::CookieDeletionFilterPtr filter) { delete_info.name = std::move(filter->cookie_name); delete_info.url = std::move(filter->url); delete_info.host = std::move(filter->host_name); diff --git a/patches/services-network-cors-cors_url_loader.cc.patch b/patches/services-network-cors-cors_url_loader.cc.patch index c6f4ba75d7d..946c2202ab7 100644 --- a/patches/services-network-cors-cors_url_loader.cc.patch +++ b/patches/services-network-cors-cors_url_loader.cc.patch @@ -1,8 +1,8 @@ diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc -index bad4f4062340b8db3e75ee50fe9702fda0d189ee..d79e40d0f02185c9b5c8f468b8d559299a9e39f0 100644 +index 9f332f1e731c92a55b27476eb3d67a6fedbbdf8d..aac4a9e9f252c3ae61dda4e318f7896dd9713bc0 100644 --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc -@@ -917,6 +917,7 @@ void CorsURLLoader::StartRequest() { +@@ -952,6 +952,7 @@ void CorsURLLoader::StartRequest() { cors::ShouldAllowUnsafeHeaders( *origin_access_list_, request_.request_initiator, request_.url); diff --git a/patches/services-network-public-cpp-BUILD.gn.patch b/patches/services-network-public-cpp-BUILD.gn.patch index e3af1fba05c..ffd9011f1f4 100644 --- a/patches/services-network-public-cpp-BUILD.gn.patch +++ b/patches/services-network-public-cpp-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/services/network/public/cpp/BUILD.gn b/services/network/public/cpp/BUILD.gn -index 1ae92a6ddf9e7344da548ba39f8bebcdb3890683..1b0164b4e987c6355e645b199127129614efad14 100644 +index 4daee688801c1d819859a6b66aa8493db80a10f1..b886e5873884189d74cf7c6d73c02aaaf3787a34 100644 --- a/services/network/public/cpp/BUILD.gn +++ b/services/network/public/cpp/BUILD.gn -@@ -204,6 +204,7 @@ component("cpp") { +@@ -205,6 +205,7 @@ component("cpp") { "//services/proxy_resolver/public/mojom", ] diff --git a/patches/services-network-public-cpp-network_param_mojom_traits.cc.patch b/patches/services-network-public-cpp-network_param_mojom_traits.cc.patch index dcaaf0711a3..1c6c2302e7a 100644 --- a/patches/services-network-public-cpp-network_param_mojom_traits.cc.patch +++ b/patches/services-network-public-cpp-network_param_mojom_traits.cc.patch @@ -1,8 +1,8 @@ diff --git a/services/network/public/cpp/network_param_mojom_traits.cc b/services/network/public/cpp/network_param_mojom_traits.cc -index 39280a9f7cba956ec878d9a07bf0da6fa33ac702..c7dd7a6ab8b6bebcc9a182aa3c172d789af3053e 100644 +index a8271eea9b55385b16773f9faa3f4623daaf1634..3c00a917836241ffc23092f0066b917ce8448b9a 100644 --- a/services/network/public/cpp/network_param_mojom_traits.cc +++ b/services/network/public/cpp/network_param_mojom_traits.cc -@@ -56,6 +56,7 @@ bool StructTraits:: +@@ -57,6 +57,7 @@ bool StructTraits:: return false; } *out = net::HostPortPair(std::move(host), data.port()); diff --git a/patches/services-network-public-cpp-network_param_mojom_traits.h.patch b/patches/services-network-public-cpp-network_param_mojom_traits.h.patch index e85605f1174..202b6c58dd4 100644 --- a/patches/services-network-public-cpp-network_param_mojom_traits.h.patch +++ b/patches/services-network-public-cpp-network_param_mojom_traits.h.patch @@ -1,5 +1,5 @@ diff --git a/services/network/public/cpp/network_param_mojom_traits.h b/services/network/public/cpp/network_param_mojom_traits.h -index 5f2c42fee1ec3906f40710158b1f6e1f8e55971a..19b6207397258ce6a94dab78b7d7d80c556e27fc 100644 +index b2570d6f1d045e690295f14818404599353301e9..9a300205842075e6b1a9ac762c0ff1136c67396b 100644 --- a/services/network/public/cpp/network_param_mojom_traits.h +++ b/services/network/public/cpp/network_param_mojom_traits.h @@ -99,6 +99,7 @@ class COMPONENT_EXPORT(NETWORK_CPP_NETWORK_PARAM) diff --git a/patches/services-network-public-cpp-permissions_policy-permissions_policy_features.json5.patch b/patches/services-network-public-cpp-permissions_policy-permissions_policy_features.json5.patch index c237795da28..16da624c8a8 100644 --- a/patches/services-network-public-cpp-permissions_policy-permissions_policy_features.json5.patch +++ b/patches/services-network-public-cpp-permissions_policy-permissions_policy_features.json5.patch @@ -1,8 +1,8 @@ diff --git a/services/network/public/cpp/permissions_policy/permissions_policy_features.json5 b/services/network/public/cpp/permissions_policy/permissions_policy_features.json5 -index b1b3552cc3eb516709e59c14ce8eb11ffd84d9d1..2b385d054943853333da8e8dfd6286ae789bb2b8 100644 +index 6a8116efe724966698dcffd1b9698d19434fb47e..d2cde248ce316afdc501997e91826276bd470a23 100644 --- a/services/network/public/cpp/permissions_policy/permissions_policy_features.json5 +++ b/services/network/public/cpp/permissions_policy/permissions_policy_features.json5 -@@ -669,6 +669,18 @@ +@@ -659,6 +659,18 @@ permissions_policy_name: "writer", depends_on: ["AIWriterAPI"], }, diff --git a/patches/third_party-android_deps-autorolled-BUILD.gn.patch b/patches/third_party-android_deps-autorolled-BUILD.gn.patch index 02e4611eb58..43ebb644373 100644 --- a/patches/third_party-android_deps-autorolled-BUILD.gn.patch +++ b/patches/third_party-android_deps-autorolled-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_deps/autorolled/BUILD.gn -index bc92a8075afd8005280bb8a10239ec9124d5deb2..4e281b46294b7631a45ee207cac8173f35b5462d 100644 +index 2e86bb85584bdac0820b6ad29a392f62c8ad6373..44e0fc35c730d772d3dbb2327ec71995d9a979a9 100644 --- a/third_party/android_deps/autorolled/BUILD.gn +++ b/third_party/android_deps/autorolled/BUILD.gn -@@ -1082,6 +1082,7 @@ template("define_autorolled_targets") { +@@ -1095,6 +1095,7 @@ template("define_autorolled_targets") { "$google_play_services_package:google_firebase_firebase_encoders_json_java", "//third_party/androidx:androidx_annotation_annotation_java", ] @@ -10,7 +10,7 @@ index bc92a8075afd8005280bb8a10239ec9124d5deb2..4e281b46294b7631a45ee207cac8173f } } -@@ -1106,6 +1107,7 @@ template("define_autorolled_targets") { +@@ -1119,6 +1120,7 @@ template("define_autorolled_targets") { "//third_party/android_deps:javax_inject_javax_inject_java", "//third_party/androidx:androidx_annotation_annotation_java", ] diff --git a/patches/third_party-blink-common-BUILD.gn.patch b/patches/third_party-blink-common-BUILD.gn.patch index 0c676832158..444676ac2f3 100644 --- a/patches/third_party-blink-common-BUILD.gn.patch +++ b/patches/third_party-blink-common-BUILD.gn.patch @@ -1,11 +1,11 @@ diff --git a/third_party/blink/common/BUILD.gn b/third_party/blink/common/BUILD.gn -index 487451217eff58fcb354aa9c94360abc769ddb42..e02cd81fd85ff6494ff0f057f4ebf956d696aef0 100644 +index 490137f7fbc6aa160779fd6956a9ff92ff7b9e31..5d7e3f47fbcef489da3615d7b5b23832aafa1ac0 100644 --- a/third_party/blink/common/BUILD.gn +++ b/third_party/blink/common/BUILD.gn -@@ -354,6 +354,7 @@ source_set("common") { - # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and - # enable the diagnostic by removing this line. - configs += [ "//build/config/compiler:no_exit_time_destructors" ] +@@ -353,6 +353,7 @@ source_set("common") { + if (is_chromeos || is_android || is_win || is_castos || is_fuchsia) { + defines = [ "ENABLE_PROTECTED_MEDIA_IDENTIFIER_PERMISSION" ] + } + import("//brave/components/brave_wallet/sources.gni") deps += brave_blink_common_deps } diff --git a/patches/third_party-blink-public-common-BUILD.gn.patch b/patches/third_party-blink-public-common-BUILD.gn.patch index b217b96d2aa..aed1037b589 100644 --- a/patches/third_party-blink-public-common-BUILD.gn.patch +++ b/patches/third_party-blink-public-common-BUILD.gn.patch @@ -1,11 +1,11 @@ diff --git a/third_party/blink/public/common/BUILD.gn b/third_party/blink/public/common/BUILD.gn -index 6c8ba7eac1b6478cab2e76f7581c9fe8856b8add..deb045d4ea2a638136213ced5b1e427da6df9f33 100644 +index 980cc5fb5ffcfb82ddabdd60d6e68cb82d5c1559..08dc1412c48da276aec780d362df57c6cef9e706 100644 --- a/third_party/blink/public/common/BUILD.gn +++ b/third_party/blink/public/common/BUILD.gn -@@ -391,6 +391,7 @@ source_set("headers") { - # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and - # enable the diagnostic by removing this line. - configs += [ "//build/config/compiler:no_exit_time_destructors" ] +@@ -388,6 +388,7 @@ source_set("headers") { + if (is_mac) { + sources += [ "sandbox_support/sandbox_support_mac.h" ] + } + import("//brave/components/brave_wallet/sources.gni") deps += brave_blink_public_common_deps } diff --git a/patches/third_party-blink-public-mojom-BUILD.gn.patch b/patches/third_party-blink-public-mojom-BUILD.gn.patch index 8851c627a5a..f220429339e 100644 --- a/patches/third_party-blink-public-mojom-BUILD.gn.patch +++ b/patches/third_party-blink-public-mojom-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn -index e386899595f12c27c6b6da39a36aadb61e9c74ac..140f039248ded4149285ad3335eabac8a68b9d6e 100644 +index 09bfe8c9373231a348132fcbf7ef08fa3a6377cb..27abb3e664c495a4051ef7960b64cd6ead99f5ff 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn -@@ -1134,6 +1134,7 @@ mojom("mojom_platform") { +@@ -1158,6 +1158,7 @@ mojom("mojom_platform") { ] cpp_typemaps += shared_cpp_typemaps blink_cpp_typemaps += shared_cpp_typemaps diff --git a/patches/third_party-blink-renderer-bindings-core-v8-to_v8_traits.h.patch b/patches/third_party-blink-renderer-bindings-core-v8-to_v8_traits.h.patch index 94161a1a2d1..d70207e19ad 100644 --- a/patches/third_party-blink-renderer-bindings-core-v8-to_v8_traits.h.patch +++ b/patches/third_party-blink-renderer-bindings-core-v8-to_v8_traits.h.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h b/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h -index 1bf0d9d5debf62bb1e3b6447c5a2e436a5572ab5..3182c2943da0b2f9e16fcf6ab1c047260b0be856 100644 +index 174981a570d00bcb5d56e4261d9160e24fb660d0..2afd2e01999e67d9389d75dc684050c976d44ee6 100644 --- a/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h +++ b/third_party/blink/renderer/bindings/core/v8/to_v8_traits.h -@@ -749,6 +749,7 @@ struct ToV8Traits>> { +@@ -750,6 +750,7 @@ struct ToV8Traits>> { return v8::Null(script_state->GetIsolate()); return ToV8Traits>::ToV8(script_state, *value); } diff --git a/patches/third_party-blink-renderer-bindings-core-v8-v8_script_runner.cc.patch b/patches/third_party-blink-renderer-bindings-core-v8-v8_script_runner.cc.patch index f367bfcae49..db2966cc087 100644 --- a/patches/third_party-blink-renderer-bindings-core-v8-v8_script_runner.cc.patch +++ b/patches/third_party-blink-renderer-bindings-core-v8-v8_script_runner.cc.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc b/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc -index 03992b0de9a494d29c88a7bf26e5d09cb83ed61a..a0759a197450ccaca343c323c091b1d3a07e7554 100644 +index 76fe047cefa6b207e06bdcfdddc6c75c99f6046b..09fc8b2a428c44d955ec9a63c4d64248c7030c64 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc +++ b/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc @@ -310,7 +310,7 @@ int GetMicrotasksScopeDepth(v8::Isolate* isolate, diff --git a/patches/third_party-blink-renderer-bindings-generated_in_modules.gni.patch b/patches/third_party-blink-renderer-bindings-generated_in_modules.gni.patch index 33d8aee5fb1..edce65a64d8 100644 --- a/patches/third_party-blink-renderer-bindings-generated_in_modules.gni.patch +++ b/patches/third_party-blink-renderer-bindings-generated_in_modules.gni.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni -index 07b1d2f33ae1a787b1993f103b57ece2b1bc22cd..d306fc57fe51273a287d529fa445bcd171ed5cef 100644 +index d289c4da70e66215e4af29eb7aba49da76155528..5f0cf1a12259125b4454069251aa42f1ee59313b 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni -@@ -3245,6 +3245,7 @@ generated_interface_sources_in_modules = [ +@@ -3263,6 +3263,7 @@ generated_interface_sources_in_modules = [ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_webgl_sub_image.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_xr_webgl_sub_image.h", ] diff --git a/patches/third_party-blink-renderer-bindings-idl_in_modules.gni.patch b/patches/third_party-blink-renderer-bindings-idl_in_modules.gni.patch index d31b61a1c77..3072a0f897c 100644 --- a/patches/third_party-blink-renderer-bindings-idl_in_modules.gni.patch +++ b/patches/third_party-blink-renderer-bindings-idl_in_modules.gni.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni -index 18135a6a24f2da42e524e9a314a668611a21014c..5c6e7b085f246d4b21372bdb8442a64bd93a7c79 100644 +index f4ba97c2c56a178b620732ef92819f69d68c3746..b9aeb9827743389c244966b91efdd650c22769d8 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni -@@ -1277,6 +1277,7 @@ static_idl_files_in_modules = [ +@@ -1287,6 +1287,7 @@ static_idl_files_in_modules = [ "//third_party/blink/renderer/modules/xr/xr_webgl_layer_init.idl", "//third_party/blink/renderer/modules/xr/xr_webgl_sub_image.idl", ] diff --git a/patches/third_party-blink-renderer-bindings-scripts-bind_gen-interface.py.patch b/patches/third_party-blink-renderer-bindings-scripts-bind_gen-interface.py.patch index 9607fc035bc..d12cf4f25b6 100644 --- a/patches/third_party-blink-renderer-bindings-scripts-bind_gen-interface.py.patch +++ b/patches/third_party-blink-renderer-bindings-scripts-bind_gen-interface.py.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py -index 57e541795681bb8af270ad1a8df0f134d8b43492..b4bed3f86f7be2957b1a5cacb7bffa26035c35cd 100644 +index 992938c76144be96dc1ca9c7d2123a2613d52af5..f3a0189bc25346c9ee5735782be5edb94ff73f4c 100644 --- a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py +++ b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py @@ -7605,3 +7605,4 @@ def generate_interfaces(task_queue): diff --git a/patches/third_party-blink-renderer-core-BUILD.gn.patch b/patches/third_party-blink-renderer-core-BUILD.gn.patch index 6c8be9c4283..ba477672195 100644 --- a/patches/third_party-blink-renderer-core-BUILD.gn.patch +++ b/patches/third_party-blink-renderer-core-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn -index 66ed65def5c45d87f2e6357228cfcafdd784ed9a..aaec3ba5b299370307031411f0cd4c78e0276abf 100644 +index e90757c2962fccbdfeff5842b0805e51ed8eb152..3b4374b2e0a88f52c8d8769e09a1cfc1063fcf53 100644 --- a/third_party/blink/renderer/core/BUILD.gn +++ b/third_party/blink/renderer/core/BUILD.gn -@@ -471,6 +471,7 @@ component("core") { +@@ -476,6 +476,7 @@ component("core") { "Carbon.framework", ] } diff --git a/patches/third_party-blink-renderer-core-dom-document.cc.patch b/patches/third_party-blink-renderer-core-dom-document.cc.patch index cf9d6060819..47d8dc42ae7 100644 --- a/patches/third_party-blink-renderer-core-dom-document.cc.patch +++ b/patches/third_party-blink-renderer-core-dom-document.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc -index 18df9cce23d777e890a81e76c9866974c2fa6985..8f165d6377a4136fbaa584a76409770e6299f096 100644 +index 9fea619a16f26e1b89fe711e6e3a422ea021701d..d03169e587d7f6df49f87d2aa8e450e7eaaa9393 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -7578,6 +7578,7 @@ KURL Document::CompleteURLWithOverride( +@@ -7590,6 +7590,7 @@ KURL Document::CompleteURLWithOverride( if (result.IsEmpty()) { result = Encoding().IsValid() ? KURL(base_url_override, url, Encoding()) : KURL(base_url_override, url); diff --git a/patches/third_party-blink-renderer-core-dom-events-event_dispatcher.cc.patch b/patches/third_party-blink-renderer-core-dom-events-event_dispatcher.cc.patch index f62696ed146..a1fd01ca409 100644 --- a/patches/third_party-blink-renderer-core-dom-events-event_dispatcher.cc.patch +++ b/patches/third_party-blink-renderer-core-dom-events-event_dispatcher.cc.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/core/dom/events/event_dispatcher.cc b/third_party/blink/renderer/core/dom/events/event_dispatcher.cc -index 3527373538828145fe3692902ff1bde4c28f4640..a4b73a962f1054695af6925cb9750cc7be88d738 100644 +index d22ef41c172d6d0415d3f814f0d138832c9f9589..f63e698ecda90224689df78b631bab5e68d95e8d 100644 --- a/third_party/blink/renderer/core/dom/events/event_dispatcher.cc +++ b/third_party/blink/renderer/core/dom/events/event_dispatcher.cc @@ -437,7 +437,7 @@ inline void EventDispatcher::DispatchEventPostProcess( diff --git a/patches/third_party-blink-renderer-core-dom-events-event_target.cc.patch b/patches/third_party-blink-renderer-core-dom-events-event_target.cc.patch index aa5ffe48f3e..6db947c2152 100644 --- a/patches/third_party-blink-renderer-core-dom-events-event_target.cc.patch +++ b/patches/third_party-blink-renderer-core-dom-events-event_target.cc.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/core/dom/events/event_target.cc b/third_party/blink/renderer/core/dom/events/event_target.cc -index e45e9b59c41e43e11194478c1b50e10d4d6affeb..9f7b1215ad4f8ea84b9d36f08bfa1d8929184656 100644 +index b49cb9359d573ec84d370de1f860b6ed1ab8a5de..4c11e5f5a2474d08db12d9e5180c33513a13373b 100644 --- a/third_party/blink/renderer/core/dom/events/event_target.cc +++ b/third_party/blink/renderer/core/dom/events/event_target.cc @@ -650,6 +650,7 @@ bool EventTarget::AddEventListenerInternal( diff --git a/patches/third_party-blink-renderer-core-frame-cached_permission_status.cc.patch b/patches/third_party-blink-renderer-core-frame-cached_permission_status.cc.patch index 3d4b931ec95..c4537cb2803 100644 --- a/patches/third_party-blink-renderer-core-frame-cached_permission_status.cc.patch +++ b/patches/third_party-blink-renderer-core-frame-cached_permission_status.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/core/frame/cached_permission_status.cc b/third_party/blink/renderer/core/frame/cached_permission_status.cc -index 1b294378ed1ea76ffce78586cdbf5cfcee667bbb..6c476eee29a17ef318e2acf3cfa6da93d921a00d 100644 +index 2da5ef102e6c124b4cb76bf4ff5d383e6539bf57..2e17cf2829fa77e34d5d4b5c53e093aa2edfd5ce 100644 --- a/third_party/blink/renderer/core/frame/cached_permission_status.cc +++ b/third_party/blink/renderer/core/frame/cached_permission_status.cc -@@ -15,7 +15,6 @@ using mojom::blink::PermissionDescriptorPtr; +@@ -16,7 +16,6 @@ using mojom::blink::PermissionDescriptorPtr; using mojom::blink::PermissionName; using mojom::blink::PermissionObserver; using mojom::blink::PermissionService; @@ -10,7 +10,7 @@ index 1b294378ed1ea76ffce78586cdbf5cfcee667bbb..6c476eee29a17ef318e2acf3cfa6da93 // static const char CachedPermissionStatus::kSupplementName[] = "CachedPermissionStatus"; -@@ -52,7 +51,7 @@ void CachedPermissionStatus::Trace(Visitor* visitor) const { +@@ -53,7 +52,7 @@ void CachedPermissionStatus::Trace(Visitor* visitor) const { void CachedPermissionStatus::RegisterClient( Client* client, const Vector& permissions) { diff --git a/patches/third_party-blink-renderer-core-frame-local_dom_window.cc.patch b/patches/third_party-blink-renderer-core-frame-local_dom_window.cc.patch index eafd045ef86..aaa98c016ff 100644 --- a/patches/third_party-blink-renderer-core-frame-local_dom_window.cc.patch +++ b/patches/third_party-blink-renderer-core-frame-local_dom_window.cc.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc -index 06efc300ee7a014759de6d0d61d0ced6c8bb965f..6f753f2bcc636c0b49dcb1d41dbc1e5fda15bc4e 100644 +index 51f03729c2d40a225dbcfc42091d44f78f77d971..52073bd2621ac9931ae7c88df3682398bca4eb6f 100644 --- a/third_party/blink/renderer/core/frame/local_dom_window.cc +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc @@ -488,6 +488,7 @@ bool LocalDOMWindow::CanExecuteScripts( diff --git a/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.cc.patch b/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.cc.patch index aeb5c572823..f860ad7a4c2 100644 --- a/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.cc.patch +++ b/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc -index 34e8e709326f520d341a2404eeae0f516287806e..746c81ee4421d2b14f60b2c97091a07d519f653a 100644 +index 6a7419e4a1f1acdd9b1b7561d3fbf62de1853b36..8c7ecd4498e002324477a0fcb2c3bd2e793d5614 100644 --- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc +++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc -@@ -1319,6 +1319,7 @@ String HTMLCanvasElement::ToDataURLInternal( +@@ -1313,6 +1313,7 @@ String HTMLCanvasElement::ToDataURLInternal( if (!data_buffer) return String("data:,"); diff --git a/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.h.patch b/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.h.patch index 9fe85f66e45..437096670a2 100644 --- a/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.h.patch +++ b/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.h.patch @@ -1,10 +1,10 @@ diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h -index 32ac79cb86b04b2ea4a9a50ef1b4c4cd1d47fe07..0125900995bf48fdde022ef2173414384ee3bcf6 100644 +index 0fade3f45655352c8df21f9a3de43d9874ea2d4d..a1880754fe60b1f029f71ce84204c050d74acd07 100644 --- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h +++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h -@@ -350,6 +350,7 @@ class CORE_EXPORT HTMLCanvasElement final - DOMMatrix* draw_transform, - ExceptionState&); +@@ -359,6 +359,7 @@ class CORE_EXPORT HTMLCanvasElement final + + ElementImage* captureElementImage(Element* element, ExceptionState&); + BRAVE_HTML_CANVAS_ELEMENT_H_ protected: diff --git a/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.idl.patch b/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.idl.patch index af05a636ed8..b501865527f 100644 --- a/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.idl.patch +++ b/patches/third_party-blink-renderer-core-html-canvas-html_canvas_element.idl.patch @@ -1,10 +1,10 @@ diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl b/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl -index 33612db4a5f92e45034386e0f28ed72562194bc0..286b42c4cb2d0153e3aee3581e7f780cb9896bcb 100644 +index 5b999adf465730b52db0a5a22814fe6af21046ca..0f349f20a613ccb37397c8db5bb1f3d25f67acbb 100644 --- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl +++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl -@@ -41,7 +41,7 @@ - [RuntimeEnabled=CanvasDrawElement] void requestPaint(); - [RuntimeEnabled=CanvasDrawElement, RaisesException] DOMMatrix getElementTransform(Element element, DOMMatrix draw_transform); +@@ -42,7 +42,7 @@ + [RuntimeEnabled=CanvasDrawElement, RaisesException] DOMMatrix getElementTransform((Element or ElementImage) element, DOMMatrix draw_transform); + [RuntimeEnabled=CanvasDrawElement, RaisesException] ElementImage captureElementImage(Element element); - [MeasureAs=CanvasToDataURL, RaisesException] DOMString toDataURL(optional DOMString type = "image/png", optional any quality); + [CallWith=ScriptState, MeasureAs=CanvasToDataURL, RaisesException] DOMString toDataURL(optional DOMString type = "image/png", optional any quality); diff --git a/patches/third_party-blink-renderer-core-loader-frame_fetch_context.cc.patch b/patches/third_party-blink-renderer-core-loader-frame_fetch_context.cc.patch index c183a1b51ff..ddbdbe0bae1 100644 --- a/patches/third_party-blink-renderer-core-loader-frame_fetch_context.cc.patch +++ b/patches/third_party-blink-renderer-core-loader-frame_fetch_context.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -index aa899b08d2f64116f010768e0d4aa1bdf30efad3..7cf0baac1df73b7b5ed19752dbd35e04c1357b7c 100644 +index 687d531f60b093821541e959991ad11719480326..320c213426ffcecef06be3fe6e136cb84f0426a9 100644 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -@@ -641,6 +641,7 @@ void FrameFetchContext::AddClientHintsIfNecessary( +@@ -635,6 +635,7 @@ void FrameFetchContext::AddClientHintsIfNecessary( // Check if |url| is allowed to run JavaScript. If not, client hints are not // attached to the requests that initiate on the render side. diff --git a/patches/third_party-blink-renderer-core-loader-mixed_content_checker.cc.patch b/patches/third_party-blink-renderer-core-loader-mixed_content_checker.cc.patch index 23f28acffb0..ae7e448cd5c 100644 --- a/patches/third_party-blink-renderer-core-loader-mixed_content_checker.cc.patch +++ b/patches/third_party-blink-renderer-core-loader-mixed_content_checker.cc.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/core/loader/mixed_content_checker.cc b/third_party/blink/renderer/core/loader/mixed_content_checker.cc -index 64e9f74ee12df6b39143e0ad66e9fc9108691d0a..4aeadf70722f61bb96ec6d87f8258e2645a278b6 100644 +index 90b04bebaf4455e8080fca30988e4a6e1edf46f6..e09b69f097523f668a8238fe5b5224aa0697b0ca 100644 --- a/third_party/blink/renderer/core/loader/mixed_content_checker.cc +++ b/third_party/blink/renderer/core/loader/mixed_content_checker.cc @@ -299,6 +299,7 @@ bool RequestIsSubframeSubresource(Frame* frame) { diff --git a/patches/third_party-blink-renderer-core-script-dynamic_module_resolver.cc.patch b/patches/third_party-blink-renderer-core-script-dynamic_module_resolver.cc.patch index 0097a32bc7d..edcb7e17bb8 100644 --- a/patches/third_party-blink-renderer-core-script-dynamic_module_resolver.cc.patch +++ b/patches/third_party-blink-renderer-core-script-dynamic_module_resolver.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/core/script/dynamic_module_resolver.cc b/third_party/blink/renderer/core/script/dynamic_module_resolver.cc -index 4b0f53f9bb6eeff7831c88303ab91353b231d47c..e4baf8833ad587a9d9b1697e7d923652612ef16a 100644 +index c1791697650fc027bb56ed6df12310cf76c9476b..0d7b221d57a741e63743f3e25341f491dec21109 100644 --- a/third_party/blink/renderer/core/script/dynamic_module_resolver.cc +++ b/third_party/blink/renderer/core/script/dynamic_module_resolver.cc -@@ -315,6 +315,7 @@ void DynamicModuleResolver::ResolveDynamically( +@@ -318,6 +318,7 @@ void DynamicModuleResolver::ResolveDynamically( referrer_info.CredentialsMode(), referrer_info.GetReferrerPolicy(), mojom::blink::FetchPriorityHint::kAuto, RenderBlockingBehavior::kNonBlocking); diff --git a/patches/third_party-blink-renderer-modules-BUILD.gn.patch b/patches/third_party-blink-renderer-modules-BUILD.gn.patch index 310dd28205c..75641f41ac2 100644 --- a/patches/third_party-blink-renderer-modules-BUILD.gn.patch +++ b/patches/third_party-blink-renderer-modules-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn -index 22cb6c9703837b8d5ebf040dd457177bc7d3cc6a..24f8cd7685d0f7351505477735050abf2044df59 100644 +index dadcaa5d8261022e00c291c4c337758d7f01d25d..54e400530ab050840146e9f1f5aa56a2dcbc5e0b 100644 --- a/third_party/blink/renderer/modules/BUILD.gn +++ b/third_party/blink/renderer/modules/BUILD.gn @@ -20,6 +20,7 @@ if (is_ios) { @@ -10,7 +10,7 @@ index 22cb6c9703837b8d5ebf040dd457177bc7d3cc6a..24f8cd7685d0f7351505477735050abf config("modules_implementation") { defines = [ "BLINK_MODULES_IMPLEMENTATION=1" ] -@@ -171,6 +172,7 @@ component("modules") { +@@ -172,6 +173,7 @@ component("modules") { # generating the snapshot for android, blink is compiled with # current_os="linux" and target_os="android". Using target_os is necessary as # we need to compile in the same way as would happen when current_os="android". diff --git a/patches/third_party-blink-renderer-modules-canvas-canvas2d-base_rendering_context_2d.cc.patch b/patches/third_party-blink-renderer-modules-canvas-canvas2d-base_rendering_context_2d.cc.patch index ba32359a4e6..ad4046535bd 100644 --- a/patches/third_party-blink-renderer-modules-canvas-canvas2d-base_rendering_context_2d.cc.patch +++ b/patches/third_party-blink-renderer-modules-canvas-canvas2d-base_rendering_context_2d.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc -index 3006cad0fbf9b8c171d585a3c46492783c26878c..df05c1dfb2a6c70065957a9ca2ba9011d07150ba 100644 +index edbc2f2e780972af553200972c4b2ad0d6da87be..c3ad79a6b9a6093ebdd4198de102bd38ea8e8abe 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc -@@ -363,6 +363,7 @@ ImageData* BaseRenderingContext2D::getImageData( +@@ -369,6 +369,7 @@ ImageData* BaseRenderingContext2D::getImageData( perfetto::EventContext GetEventContext(); ImageData* BaseRenderingContext2D::getImageDataInternal( @@ -10,7 +10,7 @@ index 3006cad0fbf9b8c171d585a3c46492783c26878c..df05c1dfb2a6c70065957a9ca2ba9011 int sx, int sy, int sw, -@@ -524,6 +525,7 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -530,6 +531,7 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh))); } } @@ -18,7 +18,7 @@ index 3006cad0fbf9b8c171d585a3c46492783c26878c..df05c1dfb2a6c70065957a9ca2ba9011 return image_data; } -@@ -1152,6 +1154,7 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { +@@ -1158,6 +1160,7 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { return MakeGarbageCollected(); } diff --git a/patches/third_party-blink-renderer-modules-mediastream-media_devices.cc.patch b/patches/third_party-blink-renderer-modules-mediastream-media_devices.cc.patch index 8125cd4d44e..411b3265b9f 100644 --- a/patches/third_party-blink-renderer-modules-mediastream-media_devices.cc.patch +++ b/patches/third_party-blink-renderer-modules-mediastream-media_devices.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/modules/mediastream/media_devices.cc b/third_party/blink/renderer/modules/mediastream/media_devices.cc -index ccaa1ac8193cb6372ca572e4f9f680caaa0e94d7..8d2bba90000ddb8a0d1904a25c7cf799834f3287 100644 +index 18855d9d71185a7ef45b5b437d20da34df4ca7d8..a18679bb313b4fa6b2825ee61f9a1d16da0f7c32 100644 --- a/third_party/blink/renderer/modules/mediastream/media_devices.cc +++ b/third_party/blink/renderer/modules/mediastream/media_devices.cc -@@ -1466,6 +1466,7 @@ void MediaDevices::DevicesEnumerated( +@@ -1477,6 +1477,7 @@ void MediaDevices::DevicesEnumerated( } } diff --git a/patches/third_party-blink-renderer-modules-webgl-webgl_rendering_context_base.cc.patch b/patches/third_party-blink-renderer-modules-webgl-webgl_rendering_context_base.cc.patch index ae305d0d50b..7180bad937e 100644 --- a/patches/third_party-blink-renderer-modules-webgl-webgl_rendering_context_base.cc.patch +++ b/patches/third_party-blink-renderer-modules-webgl-webgl_rendering_context_base.cc.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3bb9721d48 100644 +index e3f40494b329dd99664439f3134d80b29e4688d7..571355aae425b1eee6c7f4c15ff3d06b9ca34c81 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -@@ -3425,6 +3425,7 @@ WebGLActiveInfo* WebGLRenderingContextBase::getActiveAttrib( +@@ -3445,6 +3445,7 @@ WebGLActiveInfo* WebGLRenderingContextBase::getActiveAttrib( GLuint index) { if (!ValidateWebGLProgramOrShader("getActiveAttrib", program)) return nullptr; @@ -10,7 +10,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b GLuint program_id = ObjectNonZero(program); GLint max_name_length = -1; ContextGL()->GetProgramiv(program_id, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, -@@ -3456,6 +3457,7 @@ WebGLActiveInfo* WebGLRenderingContextBase::getActiveUniform( +@@ -3476,6 +3477,7 @@ WebGLActiveInfo* WebGLRenderingContextBase::getActiveUniform( GLuint index) { if (!ValidateWebGLProgramOrShader("getActiveUniform", program)) return nullptr; @@ -18,7 +18,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b GLuint program_id = ObjectNonZero(program); GLint max_name_length = -1; ContextGL()->GetProgramiv(program_id, GL_ACTIVE_UNIFORM_MAX_LENGTH, -@@ -3486,6 +3488,7 @@ std::optional>> +@@ -3506,6 +3508,7 @@ std::optional>> WebGLRenderingContextBase::getAttachedShaders(WebGLProgram* program) { if (!ValidateWebGLProgramOrShader("getAttachedShaders", program)) return std::nullopt; @@ -26,7 +26,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b HeapVector> shader_objects; for (GLenum shaderType : {GL_VERTEX_SHADER, GL_FRAGMENT_SHADER}) { -@@ -3500,6 +3503,7 @@ GLint WebGLRenderingContextBase::getAttribLocation(WebGLProgram* program, +@@ -3520,6 +3523,7 @@ GLint WebGLRenderingContextBase::getAttribLocation(WebGLProgram* program, const String& name) { if (!ValidateWebGLProgramOrShader("getAttribLocation", program)) return -1; @@ -34,7 +34,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (!ValidateLocationLength("getAttribLocation", name)) return -1; if (!ValidateString("getAttribLocation", name)) -@@ -3535,6 +3539,7 @@ ScriptValue WebGLRenderingContextBase::getBufferParameter( +@@ -3555,6 +3559,7 @@ ScriptValue WebGLRenderingContextBase::getBufferParameter( GLenum pname) { if (isContextLost() || !ValidateBufferTarget("getBufferParameter", target)) return ScriptValue::CreateNull(script_state->GetIsolate()); @@ -42,7 +42,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b switch (pname) { case GL_BUFFER_USAGE: { -@@ -3674,6 +3679,7 @@ ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter( +@@ -3694,6 +3699,7 @@ ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter( return ScriptValue::CreateNull(script_state->GetIsolate()); } @@ -50,7 +50,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (!framebuffer_binding_ || !framebuffer_binding_->Object()) { SynthesizeGLError(GL_INVALID_OPERATION, kFunctionName, "no framebuffer bound"); -@@ -3976,6 +3982,7 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* script_state, +@@ -3996,6 +4002,7 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* script_state, "invalid parameter name, OES_standard_derivatives not enabled"); return ScriptValue::CreateNull(script_state->GetIsolate()); case WebGLDebugRendererInfo::kUnmaskedRendererWebgl: @@ -58,7 +58,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (ExtensionEnabled(kWebGLDebugRendererInfoName)) { return WebGLAny(script_state, String(ContextGL()->GetString(GL_RENDERER))); -@@ -3985,6 +3992,7 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* script_state, +@@ -4005,6 +4012,7 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* script_state, "invalid parameter name, WEBGL_debug_renderer_info not enabled"); return ScriptValue::CreateNull(script_state->GetIsolate()); case WebGLDebugRendererInfo::kUnmaskedVendorWebgl: @@ -66,7 +66,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (ExtensionEnabled(kWebGLDebugRendererInfoName)) { return WebGLAny(script_state, String(ContextGL()->GetString(GL_VENDOR))); -@@ -4114,6 +4122,7 @@ ScriptValue WebGLRenderingContextBase::getProgramParameter( +@@ -4134,6 +4142,7 @@ ScriptValue WebGLRenderingContextBase::getProgramParameter( // intended to prevent applications from entering an infinite polling loop. if (isContextLost() && pname == GL_COMPLETION_STATUS_KHR) return WebGLAny(script_state, true); @@ -74,7 +74,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (!ValidateWebGLProgramOrShader("getProgramParamter", program)) { return ScriptValue::CreateNull(script_state->GetIsolate()); } -@@ -4169,6 +4178,7 @@ ScriptValue WebGLRenderingContextBase::getProgramParameter( +@@ -4189,6 +4198,7 @@ ScriptValue WebGLRenderingContextBase::getProgramParameter( String WebGLRenderingContextBase::getProgramInfoLog(WebGLProgram* program) { if (!ValidateWebGLProgramOrShader("getProgramInfoLog", program)) return String(); @@ -82,7 +82,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b GLStringQuery query(ContextGL()); return query.Run(ObjectNonZero(program)); } -@@ -4179,6 +4189,7 @@ ScriptValue WebGLRenderingContextBase::getRenderbufferParameter( +@@ -4199,6 +4209,7 @@ ScriptValue WebGLRenderingContextBase::getRenderbufferParameter( GLenum pname) { if (isContextLost()) return ScriptValue::CreateNull(script_state->GetIsolate()); @@ -90,7 +90,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (target != GL_RENDERBUFFER) { SynthesizeGLError(GL_INVALID_ENUM, "getRenderbufferParameter", "invalid target"); -@@ -4226,6 +4237,7 @@ ScriptValue WebGLRenderingContextBase::getShaderParameter( +@@ -4246,6 +4257,7 @@ ScriptValue WebGLRenderingContextBase::getShaderParameter( // intended to prevent applications from entering an infinite polling loop. if (isContextLost() && pname == GL_COMPLETION_STATUS_KHR) return WebGLAny(script_state, true); @@ -98,7 +98,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (!ValidateWebGLProgramOrShader("getShaderParameter", shader)) { return ScriptValue::CreateNull(script_state->GetIsolate()); } -@@ -4257,6 +4269,7 @@ ScriptValue WebGLRenderingContextBase::getShaderParameter( +@@ -4277,6 +4289,7 @@ ScriptValue WebGLRenderingContextBase::getShaderParameter( String WebGLRenderingContextBase::getShaderInfoLog(WebGLShader* shader) { if (!ValidateWebGLProgramOrShader("getShaderInfoLog", shader)) return String(); @@ -106,7 +106,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b GLStringQuery query(ContextGL()); return query.Run(ObjectNonZero(shader)); } -@@ -4287,6 +4300,7 @@ WebGLShaderPrecisionFormat* WebGLRenderingContextBase::getShaderPrecisionFormat( +@@ -4307,6 +4320,7 @@ WebGLShaderPrecisionFormat* WebGLRenderingContextBase::getShaderPrecisionFormat( GLint precision = 0; ContextGL()->GetShaderPrecisionFormat(shader_type, precision_type, range, &precision); @@ -114,7 +114,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b return MakeGarbageCollected(range[0], range[1], precision); } -@@ -4294,6 +4308,7 @@ WebGLShaderPrecisionFormat* WebGLRenderingContextBase::getShaderPrecisionFormat( +@@ -4314,6 +4328,7 @@ WebGLShaderPrecisionFormat* WebGLRenderingContextBase::getShaderPrecisionFormat( String WebGLRenderingContextBase::getShaderSource(WebGLShader* shader) { if (!ValidateWebGLProgramOrShader("getShaderSource", shader)) return String(); @@ -122,7 +122,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b return EnsureNotNull(shader->Source()); } -@@ -4319,6 +4334,7 @@ ScriptValue WebGLRenderingContextBase::getTexParameter( +@@ -4339,6 +4354,7 @@ ScriptValue WebGLRenderingContextBase::getTexParameter( GLenum pname) { if (isContextLost()) return ScriptValue::CreateNull(script_state->GetIsolate()); @@ -130,7 +130,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (!ValidateTextureBinding("getTexParameter", target)) return ScriptValue::CreateNull(script_state->GetIsolate()); switch (pname) { -@@ -4353,6 +4369,7 @@ ScriptValue WebGLRenderingContextBase::getUniform( +@@ -4373,6 +4389,7 @@ ScriptValue WebGLRenderingContextBase::getUniform( const WebGLUniformLocation* uniform_location) { if (!ValidateWebGLProgramOrShader("getUniform", program)) return ScriptValue::CreateNull(script_state->GetIsolate()); @@ -138,7 +138,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b DCHECK(uniform_location); if (!ValidateUniformLocation("getUniform", uniform_location, program)) { return ScriptValue::CreateNull(script_state->GetIsolate()); -@@ -4606,6 +4623,7 @@ WebGLUniformLocation* WebGLRenderingContextBase::getUniformLocation( +@@ -4626,6 +4643,7 @@ WebGLUniformLocation* WebGLRenderingContextBase::getUniformLocation( const String& name) { if (!ValidateWebGLProgramOrShader("getUniformLocation", program)) return nullptr; @@ -146,7 +146,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (!ValidateLocationLength("getUniformLocation", name)) return nullptr; if (!ValidateString("getUniformLocation", name)) -@@ -4632,6 +4650,7 @@ ScriptValue WebGLRenderingContextBase::getVertexAttrib( +@@ -4652,6 +4670,7 @@ ScriptValue WebGLRenderingContextBase::getVertexAttrib( GLenum pname) { if (isContextLost()) return ScriptValue::CreateNull(script_state->GetIsolate()); @@ -154,7 +154,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b if (index >= max_vertex_attribs_) { SynthesizeGLError(GL_INVALID_VALUE, "getVertexAttrib", "index out of range"); -@@ -4706,6 +4725,7 @@ int64_t WebGLRenderingContextBase::getVertexAttribOffset(GLuint index, +@@ -4726,6 +4745,7 @@ int64_t WebGLRenderingContextBase::getVertexAttribOffset(GLuint index, GLenum pname) { if (isContextLost()) return 0; @@ -162,7 +162,7 @@ index e6f8fef21367b8ed924a23d67c3b9752e7105cbc..d2240a29988f40f2dbc037c230fe7a3b GLvoid* result = nullptr; // NOTE: If pname is ever a value that returns more than 1 element // this will corrupt memory. -@@ -5068,6 +5088,7 @@ void WebGLRenderingContextBase::ReadPixelsHelper(GLint x, +@@ -5088,6 +5108,7 @@ void WebGLRenderingContextBase::ReadPixelsHelper(GLint x, int64_t offset) { if (isContextLost()) return; diff --git a/patches/third_party-blink-renderer-modules-websockets-websocket_channel_impl.h.patch b/patches/third_party-blink-renderer-modules-websockets-websocket_channel_impl.h.patch index 4f595e9864c..c9105fbf90f 100644 --- a/patches/third_party-blink-renderer-modules-websockets-websocket_channel_impl.h.patch +++ b/patches/third_party-blink-renderer-modules-websockets-websocket_channel_impl.h.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h -index 0a2000f292a71c250a194d7812abb40b1ed1bf0c..319e44c89aeaf4932c49578b2edd5e56bcf1721e 100644 +index 3886a8337be2bd21df18680fa344185d0fc1df43..14d612fd9b53937a5b7f1d3be7090c8d679d3a50 100644 --- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h +++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.h -@@ -81,7 +81,7 @@ class WebSocketHandshakeThrottle; +@@ -82,7 +82,7 @@ class WebSocketHandshakeThrottle; // This is an implementation of WebSocketChannel. This is created on the main // thread for Document, or on the worker thread for WorkerGlobalScope. All // functions must be called on the execution context's thread. @@ -11,7 +11,7 @@ index 0a2000f292a71c250a194d7812abb40b1ed1bf0c..319e44c89aeaf4932c49578b2edd5e56 : public WebSocketChannel, public network::mojom::blink::WebSocketHandshakeClient, public network::mojom::blink::WebSocketClient { -@@ -374,6 +374,7 @@ class MODULES_EXPORT WebSocketChannelImpl final +@@ -379,6 +379,7 @@ class MODULES_EXPORT WebSocketChannelImpl final void OnConnectionError(const base::Location& set_from, uint32_t custom_reason, const std::string& description); diff --git a/patches/third_party-blink-renderer-platform-BUILD.gn.patch b/patches/third_party-blink-renderer-platform-BUILD.gn.patch index 81a5f9287c4..035e17c708b 100644 --- a/patches/third_party-blink-renderer-platform-BUILD.gn.patch +++ b/patches/third_party-blink-renderer-platform-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn -index eb2472737bd6e20a6bf9fdb311a412036d7dbff7..c428c6fd5c2f755805bdaed1919bb2d9edd2086c 100644 +index 87f64f5c2cfd4bdc8aca697f6115effed091b86e..97b4c1de1328934965649ab92bbf7ac42f1ad103 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -1984,6 +1984,7 @@ component("platform") { +@@ -1988,6 +1988,7 @@ component("platform") { configs -= [ "//build/config/compiler:default_symbols" ] configs += blink_symbols_config diff --git a/patches/third_party-blink-renderer-platform-fonts-font_fallback_list.cc.patch b/patches/third_party-blink-renderer-platform-fonts-font_fallback_list.cc.patch index 4716cc811f6..6111e001c81 100644 --- a/patches/third_party-blink-renderer-platform-fonts-font_fallback_list.cc.patch +++ b/patches/third_party-blink-renderer-platform-fonts-font_fallback_list.cc.patch @@ -1,5 +1,5 @@ diff --git a/third_party/blink/renderer/platform/fonts/font_fallback_list.cc b/third_party/blink/renderer/platform/fonts/font_fallback_list.cc -index 4faf55f945125f7df795ae3d71428349b8cb7b7c..ca065af1968811522b007d3b13654b96e0f21f45 100644 +index c38cf414f9e0996c1fe1b784ee76cb72884abdcb..9420b7b3c9afce93709c36f48db8d73211bb2e42 100644 --- a/third_party/blink/renderer/platform/fonts/font_fallback_list.cc +++ b/third_party/blink/renderer/platform/fonts/font_fallback_list.cc @@ -171,6 +171,7 @@ const FontData* FontFallbackList::GetFontData( diff --git a/patches/third_party-blink-renderer-platform-runtime_enabled_features.json5.patch b/patches/third_party-blink-renderer-platform-runtime_enabled_features.json5.patch index 5cbebf31997..4de2e1b0d7d 100644 --- a/patches/third_party-blink-renderer-platform-runtime_enabled_features.json5.patch +++ b/patches/third_party-blink-renderer-platform-runtime_enabled_features.json5.patch @@ -1,8 +1,8 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -index 986b174d396a8921c9460d7fc9e1cad63d66cb91..a7a8dfe690973427a0731d44e11714e799d5eaae 100644 +index e35efdeaa064e185dcd31822be2d077bd4add7db..1f6a417fccc751f84741cf32700e0028d9830d73 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -867,6 +867,11 @@ +@@ -904,6 +904,11 @@ public: true, status: "stable", }, @@ -14,7 +14,7 @@ index 986b174d396a8921c9460d7fc9e1cad63d66cb91..a7a8dfe690973427a0731d44e11714e7 { name: "BrowserInitiatedAutomaticPictureInPicture", public: true, -@@ -2606,6 +2611,7 @@ +@@ -2687,6 +2692,7 @@ // In-development features for the File System Access API. name: "FileSystemAccessAPIExperimental", status: "experimental", @@ -22,7 +22,7 @@ index 986b174d396a8921c9460d7fc9e1cad63d66cb91..a7a8dfe690973427a0731d44e11714e7 }, { // The FileSystemHandle.getCloudIdentifiers() method (see -@@ -2620,6 +2626,7 @@ +@@ -2701,6 +2707,7 @@ // Non-OPFS File System Access API. name: "FileSystemAccessLocal", status: {"default": "stable"}, @@ -30,7 +30,7 @@ index 986b174d396a8921c9460d7fc9e1cad63d66cb91..a7a8dfe690973427a0731d44e11714e7 }, { name: "FileSystemAccessLockingScheme", -@@ -3706,6 +3713,7 @@ +@@ -3823,6 +3830,7 @@ { name: "MiddleClickAutoscroll", status: "test", diff --git a/patches/third_party-lit-v3_0-BUILD.gn.patch b/patches/third_party-lit-v3_0-BUILD.gn.patch index 0e0a54490a4..8838c2bdbbe 100644 --- a/patches/third_party-lit-v3_0-BUILD.gn.patch +++ b/patches/third_party-lit-v3_0-BUILD.gn.patch @@ -1,8 +1,8 @@ diff --git a/third_party/lit/v3_0/BUILD.gn b/third_party/lit/v3_0/BUILD.gn -index 9a1c53ea74b37e14d9df354f9797ca41c1797209..69aecce56bb6ac7b87ca389fa6fb7d92df252545 100644 +index 1440270470c997187a72121bb3cc2f692fa0b675..37b9016623cc451232d1ea084e2c5cdc00c43681 100644 --- a/third_party/lit/v3_0/BUILD.gn +++ b/third_party/lit/v3_0/BUILD.gn -@@ -147,6 +147,7 @@ ts_library("build_ts") { +@@ -154,6 +154,7 @@ ts_library("build_ts") { "//ui/webui/resources/cr_components/searchbox:build_ts", "//ui/webui/resources/cr_components/theme_color_picker:build_ts", "//ui/webui/resources/cr_elements:build_ts", @@ -10,7 +10,7 @@ index 9a1c53ea74b37e14d9df354f9797ca41c1797209..69aecce56bb6ac7b87ca389fa6fb7d92 ] tsconfig_base = "tsconfig_base.json" composite = true -@@ -231,6 +232,7 @@ ts_library("build_ts") { +@@ -238,6 +239,7 @@ ts_library("build_ts") { "${node_modules}/@lit/reactive-element/reactive-element.d.ts", target_gen_dir), ] diff --git a/patches/third_party-polymer-v3_0-BUILD.gn.patch b/patches/third_party-polymer-v3_0-BUILD.gn.patch index 9d6a815bd8b..0f5d645093e 100644 --- a/patches/third_party-polymer-v3_0-BUILD.gn.patch +++ b/patches/third_party-polymer-v3_0-BUILD.gn.patch @@ -1,5 +1,5 @@ diff --git a/third_party/polymer/v3_0/BUILD.gn b/third_party/polymer/v3_0/BUILD.gn -index 9a309d64f66a1f873971c23b52ede8ed1f0aba4f..ff5580c127f819533b6524b470de04cfc27c8b46 100644 +index c7737c8f16b1fed4ec3395cbccd19310f8bcbb7e..b2bcab966b3caa2a9990c1dbd035bceb14f669b3 100644 --- a/third_party/polymer/v3_0/BUILD.gn +++ b/third_party/polymer/v3_0/BUILD.gn @@ -19,6 +19,7 @@ js_files = [ @@ -10,7 +10,7 @@ index 9a309d64f66a1f873971c23b52ede8ed1f0aba4f..ff5580c127f819533b6524b470de04cf js_files += [ "iron-a11y-announcer/iron-a11y-announcer.js", "iron-a11y-keys/iron-a11y-keys.js", -@@ -220,11 +221,13 @@ ts_library("library") { +@@ -215,11 +216,13 @@ ts_library("library") { # Also needed on LaCros for Print Preview. Remove once CrOS Print Preview # launches. if (is_chromeos) { @@ -24,7 +24,7 @@ index 9a309d64f66a1f873971c23b52ede8ed1f0aba4f..ff5580c127f819533b6524b470de04cf definitions += [ "components-chromium/iron-a11y-announcer/iron-a11y-announcer.d.ts", "components-chromium/iron-a11y-keys/iron-a11y-keys.d.ts", -@@ -267,4 +270,5 @@ ts_library("library") { +@@ -262,4 +265,5 @@ ts_library("library") { "components-chromium/paper-tooltip/paper-tooltip.d.ts", ] } diff --git a/patches/third_party/devtools-frontend/src/config-gni-devtools_grd_files.gni.patch b/patches/third_party/devtools-frontend/src/config-gni-devtools_grd_files.gni.patch index f8804615e68..81b1b52c617 100644 --- a/patches/third_party/devtools-frontend/src/config-gni-devtools_grd_files.gni.patch +++ b/patches/third_party/devtools-frontend/src/config-gni-devtools_grd_files.gni.patch @@ -1,8 +1,8 @@ diff --git a/config/gni/devtools_grd_files.gni b/config/gni/devtools_grd_files.gni -index 4c8f9a15c4ce99ad91fd070bd8000b4ae92b1251..bc08ab662e58e4f9a88f4278eab40b07c94fbf3d 100644 +index 6b0513c1418eb4e1110a1b998f63882e2ae88863..c9886535c84c01b3ab530a0d9e673172247f9773 100644 --- a/config/gni/devtools_grd_files.gni +++ b/config/gni/devtools_grd_files.gni -@@ -2748,6 +2748,7 @@ grd_files_unbundled_sources = [ +@@ -2782,6 +2782,7 @@ grd_files_unbundled_sources = [ "front_end/ui/visual_logging/LoggingState.js", "front_end/ui/visual_logging/NonDomState.js", ] diff --git a/patches/third_party/devtools-frontend/src/front_end-core-protocol_client-InspectorBackend.ts.patch b/patches/third_party/devtools-frontend/src/front_end-core-protocol_client-InspectorBackend.ts.patch index 496372ad053..5a71129e45f 100644 --- a/patches/third_party/devtools-frontend/src/front_end-core-protocol_client-InspectorBackend.ts.patch +++ b/patches/third_party/devtools-frontend/src/front_end-core-protocol_client-InspectorBackend.ts.patch @@ -1,5 +1,5 @@ diff --git a/front_end/core/protocol_client/InspectorBackend.ts b/front_end/core/protocol_client/InspectorBackend.ts -index b200b10d8d8c73112c03961f0e5c429077a3c26c..8dfd268abbd662cb9dd39e1c89a32f6075ab29da 100644 +index 8c7691a6e471579ea1b112cf99689707056bbd6d..471a784d279afa290a5049d3efce152cb6e73fea 100644 --- a/front_end/core/protocol_client/InspectorBackend.ts +++ b/front_end/core/protocol_client/InspectorBackend.ts @@ -77,6 +77,7 @@ export class InspectorBackend implements InspectorBackendCommands.InspectorBacke diff --git a/patches/third_party/devtools-frontend/src/front_end-core-sdk-NetworkManager.ts.patch b/patches/third_party/devtools-frontend/src/front_end-core-sdk-NetworkManager.ts.patch index 4deaf4b0d13..0bc2907ffc2 100644 --- a/patches/third_party/devtools-frontend/src/front_end-core-sdk-NetworkManager.ts.patch +++ b/patches/third_party/devtools-frontend/src/front_end-core-sdk-NetworkManager.ts.patch @@ -1,8 +1,8 @@ diff --git a/front_end/core/sdk/NetworkManager.ts b/front_end/core/sdk/NetworkManager.ts -index dd185c45adcf06742ecef1fa9ea991552a3cc4a9..800bad912e5f07c819b153cf9969de2c2e5bd46e 100644 +index 8877fddb60adbc9c564548549f2d4ddcf99a3914..125002646d5dbe8ad07f22709d29939bfb59d041 100644 --- a/front_end/core/sdk/NetworkManager.ts +++ b/front_end/core/sdk/NetworkManager.ts -@@ -1608,6 +1608,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher { +@@ -1610,6 +1610,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher { return `${host}:${port}`; } } diff --git a/patches/third_party/devtools-frontend/src/front_end-panels-application-ApplicationPanelSidebar.ts.patch b/patches/third_party/devtools-frontend/src/front_end-panels-application-ApplicationPanelSidebar.ts.patch index 294761320b0..912be82dfff 100644 --- a/patches/third_party/devtools-frontend/src/front_end-panels-application-ApplicationPanelSidebar.ts.patch +++ b/patches/third_party/devtools-frontend/src/front_end-panels-application-ApplicationPanelSidebar.ts.patch @@ -1,8 +1,8 @@ diff --git a/front_end/panels/application/ApplicationPanelSidebar.ts b/front_end/panels/application/ApplicationPanelSidebar.ts -index 14e31f3fd636ca2ece1df980eeb785fdb2f117a6..9f371e0a61a8b67c0c6d4248a077bb0563b4e99f 100644 +index 898effa6f1fcccacc10d9b50d284b6ac1b05330f..5f34c44f54c58d32eae2fa57487c1c3d08932bd5 100644 --- a/front_end/panels/application/ApplicationPanelSidebar.ts +++ b/front_end/panels/application/ApplicationPanelSidebar.ts -@@ -562,6 +562,7 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe +@@ -568,6 +568,7 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe new Common.ObjectWrapper.ObjectWrapper(); this.contentElement.style.contain = 'layout style'; diff --git a/patches/third_party/devtools-frontend/src/front_end-panels-network-NetworkDataGridNode.ts.patch b/patches/third_party/devtools-frontend/src/front_end-panels-network-NetworkDataGridNode.ts.patch index d9cb1f27fea..bda32b8960a 100644 --- a/patches/third_party/devtools-frontend/src/front_end-panels-network-NetworkDataGridNode.ts.patch +++ b/patches/third_party/devtools-frontend/src/front_end-panels-network-NetworkDataGridNode.ts.patch @@ -1,8 +1,8 @@ diff --git a/front_end/panels/network/NetworkDataGridNode.ts b/front_end/panels/network/NetworkDataGridNode.ts -index 0a97de431b1f93f2722dbf56c0884820c15ee4a9..b957489b137d1cbcf02811545b5a1ddcece1c781 100644 +index 00bf740ea10dc646554ddc15abb38d224c157d72..5abbb5d31fd1593337647c8fb023a4001f8aa51c 100644 --- a/front_end/panels/network/NetworkDataGridNode.ts +++ b/front_end/panels/network/NetworkDataGridNode.ts -@@ -1634,6 +1634,7 @@ export class NetworkRequestNode extends NetworkNode { +@@ -1668,6 +1668,7 @@ export class NetworkRequestNode extends NetworkNode { } } diff --git a/patches/third_party/devtools-frontend/src/front_end-panels-timeline-components-LiveMetricsView.ts.patch b/patches/third_party/devtools-frontend/src/front_end-panels-timeline-components-LiveMetricsView.ts.patch index 16488ebdff6..e06505dd8ca 100644 --- a/patches/third_party/devtools-frontend/src/front_end-panels-timeline-components-LiveMetricsView.ts.patch +++ b/patches/third_party/devtools-frontend/src/front_end-panels-timeline-components-LiveMetricsView.ts.patch @@ -1,13 +1,13 @@ diff --git a/front_end/panels/timeline/components/LiveMetricsView.ts b/front_end/panels/timeline/components/LiveMetricsView.ts -index 35ef2855567e6d62a6d1704b3f6950674ce7f7ae..8b66f983019c5437e3d05dfd2d9f4d250d0c348e 100644 +index 6cbfb73a05af83d325a064244c812efbb6dd6f40..3dde9f07e00ccc3535465eb8f6365c3e4575a17a 100644 --- a/front_end/panels/timeline/components/LiveMetricsView.ts +++ b/front_end/panels/timeline/components/LiveMetricsView.ts -@@ -1187,7 +1187,7 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon - -