diff --git a/android/brave_java_resources.gni b/android/brave_java_resources.gni
index 8bafb2dd0143..1714bbc23d59 100644
--- a/android/brave_java_resources.gni
+++ b/android/brave_java_resources.gni
@@ -972,8 +972,8 @@ brave_java_resources = [
"java/res/values/brave_ids.xml",
"java/res/values/brave_styles.xml",
"java/res/values/shimmer_attrs.xml",
- "java/res/xml/appearance_preferences.xml",
"java/res/xml/background_images_preferences.xml",
+ "java/res/xml/brave_appearance_preferences.xml",
"java/res/xml/brave_download_preferences.xml",
"java/res/xml/brave_ethereum_preferences.xml",
"java/res/xml/brave_leo_default_model_preferences.xml",
diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni
index d421e353ee1c..81e15ac02ed0 100644
--- a/android/brave_java_sources.gni
+++ b/android/brave_java_sources.gni
@@ -8,6 +8,7 @@ import("//brave/android/feed/brave_feed_java_sources.gni")
import("//brave/android/java/org/chromium/chrome/browser/billing/sources.gni")
import("//brave/android/java/org/chromium/chrome/browser/playlist/sources.gni")
import("//brave/base/brave_base_shared_preferences_java.gni")
+import("//brave/browser/bookmarks/android/sources.gni")
import("//brave/browser/brave_ads/android/java_sources.gni")
import("//brave/browser/hub/internal/android/java/java_sources.gni")
import("//brave/browser/incognito/android/java_sources.gni")
@@ -65,15 +66,12 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/autofill/BraveAutofillBackgroundServiceImpl.java",
"../../brave/android/java/org/chromium/chrome/browser/autofill/BraveAutofillService.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkBridge.java",
- "../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkDelegate.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkImportExportDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerMediator.java",
- "../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkModel.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkPage.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbar.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbarCoordinator.java",
- "../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUiPrefs.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/brave_leo/BraveLeoMojomHelper.java",
"../../brave/android/java/org/chromium/chrome/browser/brave_leo/BraveLeoPlansActivity.java",
diff --git a/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd b/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
index 87fc614f2283..76dca75e49ae 100644
--- a/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
+++ b/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
@@ -335,7 +335,7 @@
-
+
Remove from group
@@ -351,7 +351,7 @@
Close group
- Manage sharing
+ Manage access
Recent activity
@@ -726,6 +726,45 @@
other {Created %d2 years ago}
}
+
+ Updated just now
+
+
+ {NUM_MINS, plural,
+ =1 {Updated %d1 minute ago}
+ other {Updated %d2 minutes ago}
+ }
+
+
+ {NUM_HOURS, plural,
+ =1 {Updated %d1 hour ago}
+ other {Updated %d2 hours ago}
+ }
+
+
+ {NUM_DAYS, plural,
+ =1 {Updated %d1 day ago}
+ other {Updated %d2 days ago}
+ }
+
+
+ {NUM_WEEKS, plural,
+ =1 {Updated %d1 week ago}
+ other {Updated %d2 weeks ago}
+ }
+
+
+ {NUM_MONTHS, plural,
+ =1 {Updated %d1 month ago}
+ other {Updated %d2 months ago}
+ }
+
+
+ {NUM_MONTHS, plural,
+ =1 {Updated %d1 year ago}
+ other {Updated %d2 years ago}
+ }
+
+%1$s3
@@ -989,12 +1028,46 @@ If you delete it, everyone will immediately lose access to the "
- %1$sVacation tab group no longer available
-
+
+ "%1$sVacation" tab group no longer available
+
+
+ "%1$sTravel" and "%2$sVacation" tab groups no longer available
+
+
+ {TAB_GROUPS_COUNT, plural,
+ =1 {%1$d1 tab group no longer available}
+ other {%1$d5 tab groups no longer available}
+ }
+
Dismiss the card.
+
+
+
+ Add to group
+
+
+
+
+ Add to
+
+
+ New tab group
+
+
+ Select tab group
+
+
+ Tab group list, opened at half height
+
+
+ Tab group list, opened at full height
+
+
+ Tab group list closed
+
diff --git a/android/java/apk_for_test.flags b/android/java/apk_for_test.flags
index a13d0578b614..14ff931fd629 100644
--- a/android/java/apk_for_test.flags
+++ b/android/java/apk_for_test.flags
@@ -29,9 +29,6 @@
-keep class org.chromium.chrome.browser.bookmarks.BookmarkBridge {
*** mNativeBookmarkBridge;
- *** extensiveBookmarkChangesBeginning(...);
- *** extensiveBookmarkChangesEnded(...);
- *** createBookmarkItem(...);
(...);
}
@@ -202,7 +199,6 @@
-keep class org.chromium.chrome.browser.bookmarks.BookmarkUtils {
*** addOrEditBookmark(...);
- *** showBookmarkManagerOnPhone(...);
*** isSpecialFolder(...);
}
@@ -893,10 +889,6 @@
public (...);
}
--keep class org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController {
- *** showUndoBar(...);
-}
-
-keep class org.chromium.chrome.browser.tabbed_mode.TabbedNavigationBarColorController {
*** mContext;
*** mTabModelSelector;
diff --git a/android/java/org/chromium/chrome/browser/BraveAppHooks.java b/android/java/org/chromium/chrome/browser/BraveAppHooks.java
index 4d651837de33..af68487c9577 100644
--- a/android/java/org/chromium/chrome/browser/BraveAppHooks.java
+++ b/android/java/org/chromium/chrome/browser/BraveAppHooks.java
@@ -5,11 +5,14 @@
package org.chromium.chrome.browser;
+import org.chromium.base.Callback;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmark;
public class BraveAppHooks extends AppHooks {
+ /** Async fetch the iterator of partner bookmarks (or null if not available). */
@Override
- public PartnerBookmark.BookmarkIterator getPartnerBookmarkIterator() {
- return null;
+ public void requestPartnerBookmarkIterator(
+ Callback callback) {
+ callback.onResult(null);
}
}
diff --git a/android/java/org/chromium/chrome/browser/BraveSwipeRefreshHandler.java b/android/java/org/chromium/chrome/browser/BraveSwipeRefreshHandler.java
index abc74f470725..26568a2d42b2 100644
--- a/android/java/org/chromium/chrome/browser/BraveSwipeRefreshHandler.java
+++ b/android/java/org/chromium/chrome/browser/BraveSwipeRefreshHandler.java
@@ -5,6 +5,8 @@
package org.chromium.chrome.browser;
+import androidx.annotation.NonNull;
+
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.TabUtils;
import org.chromium.ui.OverscrollAction;
@@ -18,8 +20,10 @@ public class BraveSwipeRefreshHandler extends SwipeRefreshHandler {
public Tab mTab;
// There is a direct patch for SwipeRefreshHandler to make it's ctor public
- public BraveSwipeRefreshHandler(Tab tab) {
- super(tab);
+ public BraveSwipeRefreshHandler(
+ Tab tab,
+ @NonNull SwipeRefreshHandler.SwipeRefreshLayoutCreator swipeRefreshLayoutCreator) {
+ super(tab, swipeRefreshLayoutCreator);
}
@Override
diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java
index e98a5f108975..ea4d0192f854 100644
--- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java
+++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java
@@ -2450,6 +2450,12 @@ public void addOrEditBookmark(final Tab tabToBookmark) {
((TabBookmarker) mTabBookmarkerSupplier.get()).addOrEditBookmark(tabToBookmark);
}
+ public void showBookmarkManager(Profile profile) {
+ if (mBookmarkManagerOpenerSupplier.get() != null) {
+ mBookmarkManagerOpenerSupplier.get().showBookmarkManager(this, profile);
+ }
+ }
+
// We call that method with an interval
// BraveSafeBrowsingApiHandler.SAFE_BROWSING_INIT_INTERVAL_MS,
// as upstream does, to keep the GmsCore process alive.
diff --git a/android/java/org/chromium/chrome/browser/app/bookmarks/BraveBookmarkActivity.java b/android/java/org/chromium/chrome/browser/app/bookmarks/BraveBookmarkActivity.java
index 62f747864439..eb1de4404fd6 100644
--- a/android/java/org/chromium/chrome/browser/app/bookmarks/BraveBookmarkActivity.java
+++ b/android/java/org/chromium/chrome/browser/app/bookmarks/BraveBookmarkActivity.java
@@ -10,6 +10,7 @@
import org.chromium.chrome.browser.bookmarks.BookmarkManagerCoordinator;
import org.chromium.chrome.browser.bookmarks.BraveBookmarkManagerCoordinator;
+import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.ui.base.ActivityWindowAndroid;
import org.chromium.ui.base.IntentRequestTracker;
@@ -19,14 +20,14 @@ public class BraveBookmarkActivity extends BookmarkActivity {
private ActivityWindowAndroid mWindowAndroid;
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ protected void onProfileAvailable(Profile profile) {
+ super.onProfileAvailable(profile);
IntentRequestTracker intentRequestTracker = IntentRequestTracker.createFromActivity(this);
mWindowAndroid =
new ActivityWindowAndroid(
this, true, intentRequestTracker, null, /* trackOcclusion= */ false);
- mWindowAndroid.getIntentRequestTracker().restoreInstanceState(savedInstanceState);
+
if (mBookmarkManagerCoordinator instanceof BraveBookmarkManagerCoordinator) {
((BraveBookmarkManagerCoordinator) mBookmarkManagerCoordinator)
.setWindow(mWindowAndroid);
diff --git a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator.java b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator.java
index 05c2de8fff57..d0924a9b65c6 100644
--- a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator.java
+++ b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator.java
@@ -8,6 +8,7 @@
import android.content.ComponentName;
import android.content.Context;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.chromium.chrome.browser.profiles.Profile;
@@ -19,21 +20,21 @@ public class BraveBookmarkManagerCoordinator extends BookmarkManagerCoordinator
private BookmarkManagerMediator mMediator;
public BraveBookmarkManagerCoordinator(
- Context context,
- ComponentName openBookmarkComponentName,
+ @NonNull Context context,
boolean isDialogUi,
- SnackbarManager snackbarManager,
- Profile profile,
- BookmarkUiPrefs bookmarkUiPrefs,
- @Nullable Runnable bookmarkOpenedCallback) {
+ @NonNull SnackbarManager snackbarManager,
+ @NonNull Profile profile,
+ @NonNull BookmarkUiPrefs bookmarkUiPrefs,
+ @NonNull BookmarkOpener bookmarkOpener,
+ @Nullable ComponentName openBookmarkComponentName) {
super(
context,
- openBookmarkComponentName,
isDialogUi,
snackbarManager,
profile,
bookmarkUiPrefs,
- bookmarkOpenedCallback);
+ bookmarkOpener,
+ openBookmarkComponentName);
}
public void setWindow(ActivityWindowAndroid window) {
diff --git a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkPage.java b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkPage.java
index 78676dd1c12b..7101bb09daea 100644
--- a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkPage.java
+++ b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkPage.java
@@ -7,6 +7,9 @@
import android.content.ComponentName;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -17,11 +20,12 @@ public class BraveBookmarkPage extends BookmarkPage {
private BookmarkManagerCoordinator mBookmarkManagerCoordinator;
public BraveBookmarkPage(
- ComponentName componentName,
- SnackbarManager snackbarManager,
- Profile profile,
- NativePageHost host) {
- super(componentName, snackbarManager, profile, host);
+ @NonNull SnackbarManager snackbarManager,
+ @NonNull Profile profile,
+ @NonNull NativePageHost host,
+ @Nullable ComponentName componentName) {
+ super(snackbarManager, profile, host, componentName);
+
if (mBookmarkManagerCoordinator instanceof BraveBookmarkManagerCoordinator
&& BraveActivity.getChromeTabbedActivity() != null) {
((BraveBookmarkManagerCoordinator) mBookmarkManagerCoordinator)
diff --git a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbarCoordinator.java b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbarCoordinator.java
index 666cd12e3718..977a8fb86c1c 100644
--- a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbarCoordinator.java
+++ b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbarCoordinator.java
@@ -8,6 +8,7 @@
import android.content.Context;
import org.chromium.base.supplier.OneshotSupplier;
+import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.browser_ui.widget.dragreorder.DragReorderableRecyclerViewAdapter;
import org.chromium.components.browser_ui.widget.selectable_list.SelectableListLayout;
@@ -23,6 +24,7 @@ class BraveBookmarkToolbarCoordinator extends BookmarkToolbarCoordinator {
BraveBookmarkToolbarCoordinator(
Context context,
+ Profile profile,
SelectableListLayout selectableListLayout,
SelectionDelegate selectionDelegate,
SearchDelegate searchDelegate,
@@ -38,6 +40,7 @@ class BraveBookmarkToolbarCoordinator extends BookmarkToolbarCoordinator {
BooleanSupplier incognitoEnabledSupplier) {
super(
context,
+ profile,
selectableListLayout,
selectionDelegate,
searchDelegate,
diff --git a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUtils.java b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUtils.java
index 83ce4257c542..b96c653c9bf6 100644
--- a/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUtils.java
+++ b/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUtils.java
@@ -6,17 +6,12 @@
package org.chromium.chrome.browser.bookmarks;
import android.app.Activity;
-import android.content.Intent;
-import android.net.Uri;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import org.chromium.base.Callback;
-import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
-import org.chromium.chrome.browser.IntentHandler;
-import org.chromium.chrome.browser.app.bookmarks.BraveBookmarkActivity;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkItem;
@@ -56,26 +51,11 @@ public static void addOrEditBookmark(
fromExplicitTrackUi);
}
- public static void showBookmarkManagerOnPhone(
- Activity activity, String url, boolean isIncognito) {
- Intent intent =
- new Intent(activity == null ? ContextUtils.getApplicationContext() : activity,
- BraveBookmarkActivity.class);
- intent.putExtra(IntentHandler.EXTRA_INCOGNITO_MODE, isIncognito);
- intent.setData(Uri.parse(url));
- if (activity != null) {
- // Start from an existing activity.
- intent.putExtra(IntentHandler.EXTRA_PARENT_COMPONENT, activity.getComponentName());
- activity.startActivity(intent);
- } else {
- // Start a new task.
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- IntentHandler.startActivityForTrustedIntent(intent);
- }
- }
-
- public static void showBookmarkImportExportDialog(AppCompatActivity appCompatActivity,
- boolean isImport, boolean isSuccess, String exportFilePath) {
+ public static void showBookmarkImportExportDialog(
+ AppCompatActivity appCompatActivity,
+ boolean isImport,
+ boolean isSuccess,
+ String exportFilePath) {
try {
BraveBookmarkImportExportDialogFragment dialogFragment =
BraveBookmarkImportExportDialogFragment.newInstance(
diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java
index feb346a336a6..4c632e56e805 100644
--- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java
+++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java
@@ -21,6 +21,7 @@
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.privacy.settings.PrivacyPreferencesManagerImpl;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
@@ -74,7 +75,8 @@ public BraveNewTabPage(
ObservableSupplier tabContentManagerSupplier,
ObservableSupplier tabStripHeightSupplier,
OneshotSupplier moduleRegistrySupplier,
- ObservableSupplier edgeToEdgeControllerSupplier) {
+ ObservableSupplier edgeToEdgeControllerSupplier,
+ StartupMetricsTracker startupMetricsTracker) {
super(
activity,
browserControlsStateProvider,
@@ -97,7 +99,8 @@ public BraveNewTabPage(
tabContentManagerSupplier,
tabStripHeightSupplier,
moduleRegistrySupplier,
- edgeToEdgeControllerSupplier);
+ edgeToEdgeControllerSupplier,
+ startupMetricsTracker);
mJankTracker = jankTracker;
@@ -134,7 +137,8 @@ protected void initializeMainView(
boolean isInNightMode,
Supplier shareDelegateSupplier,
String url,
- ObservableSupplier edgeToEdgeControllerSupplier) {
+ ObservableSupplier edgeToEdgeControllerSupplier,
+ StartupMetricsTracker startupMetricsTracker) {
// Override surface provider
Profile profile = Profile.fromWebContents(mTab.getWebContents());
diff --git a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java
index 6415e03056d4..7f41370bc410 100644
--- a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java
+++ b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java
@@ -60,7 +60,7 @@ public class AppearancePreferences extends BravePreferenceFragment
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPageTitle.set(getString(R.string.prefs_appearance));
- SettingsUtils.addPreferencesFromResource(this, R.xml.appearance_preferences);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.brave_appearance_preferences);
boolean isTablet =
DeviceFormFactor.isNonMultiDisplayContextOnTablet(
ContextUtils.getApplicationContext());
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 36afd835b4fd..0f19412a14fa 100644
--- a/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedRootUiCoordinator.java
+++ b/android/java/org/chromium/chrome/browser/tabbed_mode/BraveTabbedRootUiCoordinator.java
@@ -21,6 +21,7 @@
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.back_press.BackPressManager;
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.bookmarks.TabBookmarker;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
@@ -108,7 +109,8 @@ public BraveTabbedRootUiCoordinator(
@Nullable MultiInstanceManager multiInstanceManager,
@NonNull ObservableSupplier overviewColorSupplier,
@NonNull ManualFillingComponentSupplier manualFillingComponentSupplier,
- @NonNull EdgeToEdgeManager edgeToEdgeManager) {
+ @NonNull EdgeToEdgeManager edgeToEdgeManager,
+ @NonNull ObservableSupplier bookmarkManagerOpenerSupplier) {
super(
activity,
onOmniboxFocusChangedListener,
@@ -155,7 +157,8 @@ public BraveTabbedRootUiCoordinator(
multiInstanceManager,
overviewColorSupplier,
manualFillingComponentSupplier,
- edgeToEdgeManager);
+ edgeToEdgeManager,
+ bookmarkManagerOpenerSupplier);
mActivity = activity;
mHubManagerSupplier = hubManagerSupplier;
diff --git a/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java b/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java
index bc8237202d95..d610dc3aa0b7 100644
--- a/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java
+++ b/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java
@@ -12,11 +12,13 @@
import androidx.annotation.ColorInt;
import org.chromium.base.supplier.ObservableSupplier;
+import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.layouts.LayoutManager;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.theme.TopUiThemeColorProvider;
import org.chromium.chrome.browser.ui.system.StatusBarColorController.StatusBarColorProvider;
+import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeSystemBarColorHelper;
import org.chromium.ui.util.ColorUtils;
@@ -33,7 +35,8 @@ public BraveStatusBarColorController(
ActivityLifecycleDispatcher activityLifecycleDispatcher,
ActivityTabProvider tabProvider,
TopUiThemeColorProvider topUiThemeColorProvider,
- EdgeToEdgeSystemBarColorHelper edgeToEdgeSystemBarColorHelper) {
+ EdgeToEdgeSystemBarColorHelper edgeToEdgeSystemBarColorHelper,
+ OneshotSupplier desktopWindowStateManagerSupplier) {
super(
window,
isTablet,
@@ -43,7 +46,8 @@ public BraveStatusBarColorController(
activityLifecycleDispatcher,
tabProvider,
topUiThemeColorProvider,
- edgeToEdgeSystemBarColorHelper);
+ edgeToEdgeSystemBarColorHelper,
+ desktopWindowStateManagerSupplier);
// Dark theme doesn't have the regression, apply adjustment to light one only
if (!ColorUtils.inNightMode(context)) {
diff --git a/android/java/org/chromium/chrome/browser/util/TabUtils.java b/android/java/org/chromium/chrome/browser/util/TabUtils.java
index 2d5ebea6cf18..ce71a564ab44 100644
--- a/android/java/org/chromium/chrome/browser/util/TabUtils.java
+++ b/android/java/org/chromium/chrome/browser/util/TabUtils.java
@@ -115,36 +115,38 @@ public static void showBookmarkTabPopupMenu(Context context, View view,
deleteMenuItem.setVisible(false);
}
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- int id = item.getItemId();
- BraveActivity activity = null;
- try {
- activity = BraveActivity.getBraveActivity();
- } catch (BraveActivity.BraveActivityNotFoundException e) {
- Log.e(TAG, "showBookmarkTabPopupMenu popup click " + e);
- }
- if (currentTab == null || activity == null) {
- return false;
- }
-
- if (id == R.id.add_bookmark || id == R.id.delete_bookmark) {
- activity.addOrEditBookmark(currentTab);
- return true;
- } else if (id == R.id.edit_bookmark && bridge != null) {
- BookmarkId bookmarkId = bridge.getUserBookmarkIdForTab(currentTab);
- if (bookmarkId != null) {
- BookmarkUtils.startEditActivity(activity, bookmarkId);
- return true;
+ popup.setOnMenuItemClickListener(
+ new PopupMenu.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ int id = item.getItemId();
+ BraveActivity activity = null;
+ try {
+ activity = BraveActivity.getBraveActivity();
+ } catch (BraveActivity.BraveActivityNotFoundException e) {
+ Log.e(TAG, "showBookmarkTabPopupMenu popup click " + e);
+ }
+ if (currentTab == null || activity == null) {
+ return false;
+ }
+
+ if (id == R.id.add_bookmark || id == R.id.delete_bookmark) {
+ activity.addOrEditBookmark(currentTab);
+ return true;
+ } else if (id == R.id.edit_bookmark && bridge != null) {
+ BookmarkId bookmarkId = bridge.getUserBookmarkIdForTab(currentTab);
+ if (bookmarkId != null) {
+ BookmarkUtils.startEditActivity(
+ activity, currentTab.getProfile(), bookmarkId);
+ return true;
+ }
+ } else if (id == R.id.view_bookmarks) {
+ activity.showBookmarkManager(currentTab.getProfile());
+ return true;
+ }
+ return false;
}
- } else if (id == R.id.view_bookmarks) {
- BookmarkUtils.showBookmarkManager(activity, currentTab.isIncognito());
- return true;
- }
- return false;
- }
- });
+ });
popup.show();
}
diff --git a/android/java/res/xml/appearance_preferences.xml b/android/java/res/xml/brave_appearance_preferences.xml
similarity index 100%
rename from android/java/res/xml/appearance_preferences.xml
rename to android/java/res/xml/brave_appearance_preferences.xml
diff --git a/android/javatests/org/chromium/chrome/browser/BraveSwipeRefreshHandlerTest.java b/android/javatests/org/chromium/chrome/browser/BraveSwipeRefreshHandlerTest.java
index 4488574d5318..8c5aba97ca7c 100644
--- a/android/javatests/org/chromium/chrome/browser/BraveSwipeRefreshHandlerTest.java
+++ b/android/javatests/org/chromium/chrome/browser/BraveSwipeRefreshHandlerTest.java
@@ -81,7 +81,8 @@ private TabbedModeTabDelegateFactory createTabDelegateFactory() {
null,
rootUiCoordinator.getToolbarManager().getTabStripHeightSupplier(),
new OneshotSupplierImpl(),
- new ObservableSupplierImpl());
+ new ObservableSupplierImpl(),
+ cta.getStartupMetricsTracker());
}
@Test
diff --git a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java
index 5bc3bf969fbc..fddc1dceeea0 100644
--- a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java
+++ b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java
@@ -83,6 +83,7 @@
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.logo.CachedTintedBitmap;
import org.chromium.chrome.browser.logo.LogoCoordinator;
+import org.chromium.chrome.browser.metrics.StartupMetricsTracker;
import org.chromium.chrome.browser.multiwindow.MultiInstanceManager;
import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
import org.chromium.chrome.browser.new_tab_url.DseNewTabUrlManager;
@@ -385,38 +386,6 @@ public void testClassesExist() throws Exception {
@Test
@SmallTest
public void testMethodsExist() throws Exception {
- Assert.assertTrue(
- methodExists(
- "org/chromium/chrome/browser/bookmarks/BookmarkBridge",
- "extensiveBookmarkChangesBeginning",
- MethodModifier.REGULAR,
- void.class));
- Assert.assertTrue(
- methodExists(
- "org/chromium/chrome/browser/bookmarks/BookmarkBridge",
- "extensiveBookmarkChangesEnded",
- MethodModifier.REGULAR,
- void.class));
- Assert.assertTrue(
- methodExists(
- "org/chromium/chrome/browser/bookmarks/BookmarkBridge",
- "createBookmarkItem",
- MethodModifier.STATIC,
- BookmarkItem.class,
- long.class,
- int.class,
- String.class,
- GURL.class,
- boolean.class,
- long.class,
- int.class,
- boolean.class,
- boolean.class,
- long.class,
- boolean.class,
- long.class,
- boolean.class));
-
Assert.assertTrue(
methodExists(
"org/chromium/chrome/browser/LaunchIntentDispatcher",
@@ -554,15 +523,6 @@ public void testMethodsExist() throws Exception {
int.class,
Callback.class,
boolean.class));
- Assert.assertTrue(
- methodExists(
- "org/chromium/chrome/browser/bookmarks/BookmarkUtils",
- "showBookmarkManagerOnPhone",
- MethodModifier.STATIC,
- void.class,
- Activity.class,
- String.class,
- boolean.class));
Assert.assertTrue(
methodExists(
"org/chromium/components/permissions/PermissionDialogModelFactory",
@@ -1256,7 +1216,8 @@ public void testConstructorsExistAndMatch() throws Exception {
ObservableSupplier.class,
ObservableSupplier.class,
OneshotSupplier.class,
- ObservableSupplier.class));
+ ObservableSupplier.class,
+ StartupMetricsTracker.class));
Assert.assertTrue(
constructorsMatch(
"org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator",
@@ -1491,7 +1452,8 @@ public void testConstructorsExistAndMatch() throws Exception {
constructorsMatch(
"org/chromium/chrome/browser/SwipeRefreshHandler",
"org/chromium/chrome/browser/BraveSwipeRefreshHandler",
- Tab.class));
+ Tab.class,
+ SwipeRefreshHandler.SwipeRefreshLayoutCreator.class));
Assert.assertTrue(
constructorsMatch(
@@ -1563,7 +1525,8 @@ public void testConstructorsExistAndMatch() throws Exception {
MultiInstanceManager.class,
ObservableSupplier.class,
ManualFillingComponentSupplier.class,
- EdgeToEdgeManager.class));
+ EdgeToEdgeManager.class,
+ ObservableSupplier.class));
Assert.assertTrue(
constructorsMatch(
"org/chromium/chrome/browser/bookmarks/BookmarkToolbar",
@@ -1575,6 +1538,7 @@ public void testConstructorsExistAndMatch() throws Exception {
"org/chromium/chrome/browser/bookmarks/BookmarkToolbarCoordinator",
"org/chromium/chrome/browser/bookmarks/BraveBookmarkToolbarCoordinator",
Context.class,
+ Profile.class,
SelectableListLayout.class,
SelectionDelegate.class,
SearchDelegate.class,
@@ -1593,12 +1557,12 @@ public void testConstructorsExistAndMatch() throws Exception {
"org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator",
"org/chromium/chrome/browser/bookmarks/BraveBookmarkManagerCoordinator",
Context.class,
- ComponentName.class,
boolean.class,
SnackbarManager.class,
Profile.class,
BookmarkUiPrefs.class,
- Runnable.class));
+ BookmarkOpener.class,
+ ComponentName.class));
Assert.assertTrue(
constructorsMatch(
"org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator",
@@ -1641,10 +1605,10 @@ public void testConstructorsExistAndMatch() throws Exception {
constructorsMatch(
"org/chromium/chrome/browser/bookmarks/BookmarkPage",
"org/chromium/chrome/browser/bookmarks/BraveBookmarkPage",
- ComponentName.class,
SnackbarManager.class,
Profile.class,
- NativePageHost.class));
+ NativePageHost.class,
+ ComponentName.class));
Assert.assertTrue(
constructorsMatch(
"org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl",
@@ -1756,7 +1720,8 @@ public void testConstructorsExistAndMatch() throws Exception {
ActivityLifecycleDispatcher.class,
ActivityTabProvider.class,
TopUiThemeColorProvider.class,
- EdgeToEdgeSystemBarColorHelper.class));
+ EdgeToEdgeSystemBarColorHelper.class,
+ OneshotSupplier.class));
Assert.assertTrue(
constructorsMatch(
"org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment", // presubmit: ignore-long-line
diff --git a/app/BUILD.gn b/app/BUILD.gn
index dba7f19546e5..72a567b75d2c 100644
--- a/app/BUILD.gn
+++ b/app/BUILD.gn
@@ -175,7 +175,6 @@ source_set("unit_tests") {
":command_ids",
"//brave/components/commands/common",
"//chrome/app:command_ids",
- "//chrome/browser/apps/link_capturing:features",
"//chrome/common:chrome_features",
"//components/translate/core/common",
"//extensions/common",
diff --git a/app/app_management_strings.grdp b/app/app_management_strings.grdp
index 34877d3d95c6..ba7181b57902 100644
--- a/app/app_management_strings.grdp
+++ b/app/app_management_strings.grdp
@@ -201,6 +201,15 @@
Allowed – $1While in use. Turn on microphone using physical switch.
+
+ Version
+
+
+ Size
+
+
+ Data stored in app
+
diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd
index 1409a536baa1..db424229affd 100644
--- a/app/brave_generated_resources.grd
+++ b/app/brave_generated_resources.grd
@@ -1,6 +1,6 @@
+ source_lang_id="en" enc_check="möl">
+
+
+ Disable Brave Running in Background for Apps
+
+
+
+
+ Disable Brave running in background for apps
+
+
Brave cannot read and write to its data directory:
@@ -770,7 +780,7 @@ Brave is unable to recover your settings.
Brave API keys are missing. Some functionality of Brave will be disabled.
-
+
$1Gmail Checker has been added to Brave
@@ -963,6 +973,9 @@ Brave is unable to recover your settings.
+
+ Your organization requires you to sign into Brave
+
Link your Brave data to this account?
@@ -985,9 +998,6 @@ Brave is unable to recover your settings.
Any Brave data that is generated during the use of this profile (such as the creation of bookmarks, history, passwords, and other settings) can be removed by the work profile administrator. $1Learn more
-
- Your organization requires you to sign into Brave
-
Your organization, $1manager.com, requires you to sign into Brave
@@ -1016,7 +1026,7 @@ Brave is unable to recover your settings.
- To continue, you'll need to sign in to Brave with $1user@example.com. This ensures compliance with your organization's policies.
+ To continue, sign in to Brave as $1user@example.com. This makes sure that you've got your organization's policies.
@@ -1088,18 +1098,12 @@ Brave is unable to recover your settings.
-
- Continue in a new Brave profile?
-
Sign in to Brave in a new profile?
Switch to existing Brave profile?
-
- A Brave profile with this account already exists
-
You're already signed in as $1foo@gmail.com in another Brave profile
@@ -1110,13 +1114,7 @@ Brave is unable to recover your settings.
$1Elisa is already signed in to this Brave profile. To keep your browsing separate, Brave can create your own profile for you.
- $1Elisa is already signed in. To keep your browsing separate, sign in to Brave in your own profile as $2foo@gmail.com.
-
-
- $1Elisa is already signed in to this Brave profile. This will create a new Brave profile for $2foo@gmail.com
-
-
- This will create a new Brave profile for $1foo@gmail.com
+ $1Elisa is already signed in. To keep your browsing separate, sign in to Brave in your own profile as $2foo@gmail.com.
To get your passwords and more on all your devices, sign in to Brave
@@ -1544,16 +1542,16 @@ Brave is unable to recover your settings.
Brave Tab
- To share your screen, allow screen recording for Brave in System Preferences
+ To share your screen, allow screen recording for Brave in System Settings
- To share your screen, allow screen recording for Brave in System Preferences.
+ To share your screen, allow screen recording for Brave in System Settings.
- To share your window, allow screen recording for Brave in System Preferences
+ To share your window, allow screen recording for Brave in System Settings
- To share your window, allow screen recording for Brave in System Preferences.
+ To share your window, allow screen recording for Brave in System Settings.
You'll then need to restart Brave.
@@ -1653,6 +1651,9 @@ Brave is unable to recover your settings.
My Activity
+
+ Can't find content in page
+
Dismiss
@@ -1677,6 +1678,12 @@ Brave is unable to recover your settings.
Select anything to search with Image Search
+
+ Select any text or image to search with Image Search or press escape to exit Image Search
+
+
+ Select any text or image to search with Image Search
+
Select text with Image Search
@@ -1948,7 +1955,7 @@ Brave is unable to recover your settings.
- Your organization can see and manage browsing data, such as your bookmarks, history, and passwords. It can't see browsing data in personal Brave profiles.
+ Your organization can see and manage browsing data, such as your bookmarks, history, and passwords. It can't see browsing data in other Brave profiles
@@ -1958,10 +1965,7 @@ Brave is unable to recover your settings.
Who's using Brave?
- With Brave profiles you can separate all your Brave stuff. Create profiles for friends and family, or split between work and fun.
-
-
- To access your Brave stuff across all your devices, sign in, then turn on sync.
+ With Brave profiles, you can separate all your Brave stuff. Create profiles for friends and family, or split between work and fun.
Set up your new Brave profile
@@ -2322,21 +2326,9 @@ Brave is unable to recover your settings.
These tabs are using extra resources. To improve your performance, let Brave make them inactive.
-
- Brave can make these tabs inactive to improve your browsing experience and free up resources.
-
-
- Brave can make these tabs inactive to improve your browsing experience and keep things fast.
-
This tab is using extra resources. To improve your performance, let Brave make it inactive.
-
- Brave can make this tab inactive to improve your browsing experience and free up resources.
-
-
- Brave can make this tab inactive to improve your browsing experience and keep things fast.
-
@@ -2364,12 +2356,9 @@ Brave is unable to recover your settings.
-
- Sign in to Brave
-
- To get your extensions on all your computers, sign in to Brave
+ To get your extensions and more on all your computers, sign in to Brave
diff --git a/app/brave_strings_override.grd b/app/brave_strings_override.grd
index 678d0c0f73a3..10db72df9d65 100644
--- a/app/brave_strings_override.grd
+++ b/app/brave_strings_override.grd
@@ -165,6 +165,10 @@ If you update this file, be sure also to update google_chrome_strings.grd. -->
+
+
+
+
@@ -187,7 +191,7 @@ If you update this file, be sure also to update google_chrome_strings.grd. -->
-
+
diff --git a/app/certificate_manager.grdp b/app/certificate_manager.grdp
index 4c23967e6fb1..e5ca888d60dd 100644
--- a/app/certificate_manager.grdp
+++ b/app/certificate_manager.grdp
@@ -181,6 +181,9 @@
Error importing certificate
+
+ Invalid or corrupt file
+
Unable to import certificate
@@ -191,9 +194,6 @@
Incorrect password or corrupt file
-
- Invalid or corrupt file
-
File uses unsupported features
diff --git a/app/extensions_strings.grdp b/app/extensions_strings.grdp
index eaccacb25b36..e9a01a9a0af7 100644
--- a/app/extensions_strings.grdp
+++ b/app/extensions_strings.grdp
@@ -263,6 +263,12 @@
Allow in Private
+
+ Allow User Scripts
+
+
+ The extension will be able to run code which has not been reviewed by Brave. It may be unsafe and you should only enable this if you know what you are doing.
+
The following extensions depend on this extension:
diff --git a/app/feature_defaults_unittest.cc b/app/feature_defaults_unittest.cc
index dacf5ec3137e..e74759e7d609 100644
--- a/app/feature_defaults_unittest.cc
+++ b/app/feature_defaults_unittest.cc
@@ -52,8 +52,8 @@
#include "components/user_education/common/user_education_features.h"
#include "components/webapps/browser/features.h"
#include "content/common/features.h"
+#include "content/public/common/btm_utils.h"
#include "content/public/common/content_features.h"
-#include "content/public/common/dips_utils.h"
#include "gpu/config/gpu_finch_features.h"
#include "media/base/media_switches.h"
#include "net/base/features.h"
@@ -68,7 +68,6 @@
#include "chrome/browser/flags/android/chrome_feature_list.h"
#include "components/password_manager/core/common/password_manager_features.h"
#else
-#include "chrome/browser/apps/link_capturing/link_capturing_features.h"
#include "chrome/browser/enterprise/connectors/analysis/content_analysis_features.h"
#include "chrome/browser/sharing_hub/sharing_hub_features.h"
#include "components/device_signals/core/common/signals_features.h"
@@ -95,8 +94,6 @@ TEST(FeatureDefaultsTest, DisabledFeatures) {
&blink::features::kAllowURNsInIframes,
&blink::features::kAttributionReportingInBrowserMigration,
&blink::features::kBackgroundResourceFetch,
- &blink::features::kBiddingAndScoringDebugReportingAPI,
- &blink::features::kBrowsingTopics,
&blink::features::kControlledFrame,
&blink::features::kCssSelectorFragmentAnchor,
&blink::features::kFencedFrames,
@@ -104,11 +101,9 @@ TEST(FeatureDefaultsTest, DisabledFeatures) {
&blink::features::kFledgeBiddingAndAuctionServer,
&blink::features::kFledgeConsiderKAnonymity,
&blink::features::kFledgeEnforceKAnonymity,
- &blink::features::kInterestGroupStorage,
&blink::features::kParakeet,
&blink::features::kPrerender2,
&blink::features::kPrivateAggregationApi,
- &blink::features::kSharedStorageAPI,
&blink::features::kSpeculationRulesPrefetchFuture,
#if BUILDFLAG(IS_ANDROID)
&chrome::android::kAdaptiveButtonInTopToolbarCustomizationV2,
@@ -161,7 +156,7 @@ TEST(FeatureDefaultsTest, DisabledFeatures) {
#endif
&features::kSCTAuditing,
&features::kServiceWorkerAutoPreload,
- &features::kSupportSearchSuggestionForPrerender2,
+ &features::kSideBySide,
&features::kTabHoverCardImages,
#if !BUILDFLAG(IS_ANDROID)
&features::kTrustSafetySentimentSurvey,
@@ -199,6 +194,9 @@ TEST(FeatureDefaultsTest, DisabledFeatures) {
&net::features::kTopLevelTpcdOriginTrial,
&net::features::kTpcdMetadataGrants,
&net::features::kWaitForFirstPartySetsInit,
+ &network::features::kBrowsingTopics,
+ &network::features::kInterestGroupStorage,
+ &network::features::kSharedStorageAPI,
&network_time::kNetworkTimeServiceQuerying,
&ntp_features::kCustomizeChromeSidePanelExtensionsCard,
&ntp_features::kCustomizeChromeWallpaperSearch,
@@ -245,7 +243,8 @@ TEST(FeatureDefaultsTest, DisabledFeatures) {
&segmentation_platform::features::kSegmentationPlatformTimeDelaySampling,
&shared_highlighting::kSharedHighlightingManager,
&subresource_filter::kAdTagging,
- &syncer::kSyncEnableBookmarksInTransportMode,
+ &switches::kSyncEnableBookmarksInTransportMode,
+ &syncer::kSyncAutofillLoyaltyCard,
#if !BUILDFLAG(IS_ANDROID)
&translate::kTFLiteLanguageDetectionEnabled,
#endif
diff --git a/app/generated_resources.grd b/app/generated_resources.grd
index 480a03880051..6e5ce614d91a 100644
--- a/app/generated_resources.grd
+++ b/app/generated_resources.grd
@@ -324,7 +324,7 @@ are declared in tools/grit/grit_args.gni.
-
+
@@ -498,8 +498,8 @@ are declared in tools/grit/grit_args.gni.
Disable
-
-
+
+
Search cleared
@@ -5178,7 +5178,7 @@ are declared in tools/grit/grit_args.gni.
- Change your settings that control websites' access to features such as cookies, JavaScript, plugins, geolocation, microphone, camera, etc.
+ Change and grant access to features such as geolocation, microphone, camera, cookies, etc., for all your websites and extensions, including this extension.
Change your privacy-related settings
@@ -5431,7 +5431,7 @@ are declared in tools/grit/grit_args.gni.
-
+
Show me
@@ -7533,6 +7533,9 @@ Keep your key file in a safe place. You will need it to create new versions of y
Violet
+
+ $1Red color
+
You won't see this specific message again
@@ -8022,6 +8025,9 @@ Keep your key file in a safe place. You will need it to create new versions of y
Choose what buttons show in the toolbar
+
+ Enabled
+
To rearrange buttons on the toolbar, drag them
@@ -8217,6 +8223,9 @@ Keep your key file in a safe place. You will need it to create new versions of y
See more
+
+ See more meetings on your Calendar
+
Top picks for you
@@ -8341,7 +8350,7 @@ Keep your key file in a safe place. You will need it to create new versions of y
Hide for 12 hours
- See your Outlook Calendar and Sharepoint files
+ See your Outlook Calendar and SharePoint and OneDrive files
Easily access recent documents and upcoming calendar events
@@ -8350,7 +8359,7 @@ Keep your key file in a safe place. You will need it to create new versions of y
Sign in with Microsoft
- If this card is disabled, your Microsoft cards such as Sharepoint and Outlook Calendar will be disabled as well.
+ If this card is disabled, your Microsoft cards such as SharePoint and OneDrive files and Outlook Calendar will be disabled as well.
@@ -9145,6 +9154,12 @@ Keep your key file in a safe place. You will need it to create new versions of y
New tab
+
+ Scroll to first tab
+
+
+ Scroll to last tab
+
Search by voice
@@ -10365,7 +10380,7 @@ Check your passwords anytime in $1Brave P
Suggest strong password
-
+
Use a passkey on a different device
@@ -10845,7 +10860,7 @@ Check your passwords anytime in $1Brave P
other {Add tabs to new group}}
- Split tab with active tab
+ Show side-by-side
New group
@@ -10949,7 +10964,7 @@ Check your passwords anytime in $1Brave P
other {Add Tabs to New Group}}
- Split Tab With Active Tab
+ Show Side-By-Side
New Group
@@ -11010,6 +11025,11 @@ Check your passwords anytime in $1Brave P
+
+
+ Side By Side Resize Handle
+
+
To search your tabs, click here
@@ -11655,12 +11675,6 @@ Check your passwords anytime in $1Brave P
Recent Activity
-
- Last Update to this Tab
-
-
- Latest Updates to this Group
-
@@ -11806,16 +11820,19 @@ Check your passwords anytime in $1Brave P
Recent activity
-
- Last update to this tab
-
-
- Latest updates to this group
-
+
+
+ Last update to this tab
+
+
+ Latest updates to this group
+
+
+
Anyone with the link can edit all tabs, so share wisely. Link expires in 48 hours.
@@ -11886,11 +11903,14 @@ Check your passwords anytime in $1Brave P
Block $1John Doe?
+
+ $1John Doe ($2johndoe@gmail.com) will immediately lose access to the “$3Vacation” tab group, and will no longer be able to interact with you across Brave services.
+
- You’ll immediately lose access to the “$1Vacation” tab group, and $1Ali Connors ($2ali.connors@gmail.com) will no longer be able to interact with you across Brave services.
+ You’ll immediately lose access to the “$1Vacation” tab group, and $2Ali Connors ($3ali.connors@gmail.com) will no longer be able to interact with you across Brave services.
Learn about blocked accounts
@@ -11946,15 +11966,24 @@ Check your passwords anytime in $1Brave P
+
+ Keep tab group?
+
{NUM_GROUPS, plural, =1 {Keep this group to add tabs later, or delete it if you no longer need it.} other {Keep these groups to add tabs later, or delete them if you no longer need them.}}
+
+ Keep this group to add tabs later, or delete it if you no longer need it.
+
If you delete it, everyone will immediately lose access to the "$1Vacation" tab group, and it will be deleted from all devices.
{NUM_GROUPS, plural, =1 {Keep this group to add tabs later, or leave it if you no longer want access to it} other {Keep these groups to add tabs later, or leave them if you no longer want access to them}}
+
+ Keep this group to add tabs later, or leave it if you no longer want access to it.
+
@@ -11964,6 +11993,9 @@ Check your passwords anytime in $1Brave P
$1Ali changed this tab
+
+ No updates to this group
+
@@ -11997,6 +12029,15 @@ Check your passwords anytime in $1Brave P
Changes made are seen by everyone in the group
+
+ Shared tab groups feedback
+
+
+ Send your feedback about shared tab groups here
+
+
+ Select the feedback button to send feedback regarding the shared tab groups feature
+
@@ -12030,6 +12071,12 @@ Check your passwords anytime in $1Brave P
Leave group
+
+ Keep group
+
+
+ Delete group
+
Loading
@@ -12291,8 +12338,8 @@ Check your passwords anytime in $1Brave P
-
+ Not necessary on Android that uses native UI in settings unless extensions are enabled. -->
+
Your home page has been set.
@@ -13486,9 +13533,6 @@ This can include information about installed software, files, your browser, and
Cancel
-
- Ok
-
To stay safer online with your parent’s choices, sign in to your own profile as $1john@gmail.com
@@ -13498,9 +13542,6 @@ This can include information about installed software, files, your browser, and
Continue as $1Bob
-
- This will separate your browsing from $1bob@example.com
-
You just signed in a managed account, creating a new managed profile will allow you to access some resources linked to that account.
@@ -13973,15 +14014,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
Your account sign-in details are out of date. Please sign out and sign in again.
-
- Your password has expired. Please sign out then sign in again to change it.
-
-
- Your password has been changed on the server. Please sign out then sign in again.
-
-
- Failed to get authentication token. Please sign out then sign in again to try again.
-
Advanced settings
@@ -15323,8 +15355,8 @@ Please help our engineers fix this problem. Tell us what happened right before y
Options for sharing are managed by your organization. Some items may be hidden.
-
- Open System Preferences
+
+ Open System Settings
Choose a different screen
@@ -15336,9 +15368,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
This Tab
-
- Other Tab
-
Select a tab to share
@@ -15891,9 +15920,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
$1www.google.com wants to connect to a serial port
-
- $1Virtual COM Port ($2COM1)
-
Connect
@@ -15906,19 +15932,22 @@ Please help our engineers fix this problem. Tell us what happened right before y
USB device from $2Brave (product $10x12AB)
-
- USB device ($212AB:$112AB)
-
-
- USB devices from vendor $112AB
-
USB devices from $1Brave
-
- Any serial port
-
+
+ $1Virtual COM Port ($2COM1)
+
+
+ USB device ($212AB:$112AB)
+
+
+ USB devices from vendor $112AB
+
+
+ Any serial port
+
@@ -16435,7 +16464,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
-
+
Brave needs permission to use Bluetooth to connect to your device
@@ -16680,24 +16709,12 @@ Please help our engineers fix this problem. Tell us what happened right before y
On other devices
-
- From your Brave profile
-
Your Brave profile
-
- From iCloud Keychain
-
iCloud Keychain
-
- From "$1Dashlane"
-
-
- From Windows Hello
-
Windows Hello
@@ -16913,57 +16930,75 @@ Please help our engineers fix this problem. Tell us what happened right before y
Sign in to $1webauthn.io
+
+
+ Sign in faster next time
+
+
+
+ $1example.com just created a passkey for your account. Passkeys offer a faster and safer way to sign in and are saved in Brave Password Manager for $2elisa.beckett@gmail.com. $3Learn more about passkeys
+
+
+
+ Learn more about passkeys
+
+
+
+ Manage passwords and passkeys
+
+
+
-
- Bluetooth is disabled
+
+ Turn on Bluetooth?
-
+
Check your device settings and turn it on to continue
-
+
Try again
-
- Scan this QR code to use an ID from an Android device
+
+ To choose an ID, scan the QR code
-
- Scan this QR code with a camera on the device from which you want to retrieve an ID for $1example.com
+
+ Safely use an ID from your Android device
-
+
QR code
-
- Connecting to your device
+
+ Connecting...
-
- Follow the steps on your device
+
+ Follow the steps on your other device
-
- Make sure you trust this site with your data
+
+ Do you trust this site with your data?
-
- $1www.cheapalcohol.com wants to use personal info from your digital wallet. Only continue if you trust this site.
+
+ $1www.cheapalcohol.com wants to use personal info from your digital wallet.
-
+
Cancel
-
+
$1www.cheapalcohol.com wants to use personal info from your digital wallet. Only continue if you trust this site. Dangerous sites might trick you into revealing things like your legal name or ID number.
-
+
Back to safety
-
+
Continue
@@ -17507,6 +17542,12 @@ Please help our engineers fix this problem. Tell us what happened right before y
profile picture
+
+ phone number
+
+
+ username
+
To continue, $1idp.com will share your $2name and email address with this site.
@@ -17935,12 +17976,6 @@ Please help our engineers fix this problem. Tell us what happened right before y
-
- Location
-
-
- Webview
-
$1Work address form filled.
@@ -18196,6 +18231,14 @@ Please help our engineers fix this problem. Tell us what happened right before y
You can get a summary of what people are saying in their reviews
+
+
+
+
+ Brave Apps will soon be deprecated. For alternatives contact the developer or your IT service contact.
+
+
+
diff --git a/app/generated_resources_override.grd b/app/generated_resources_override.grd
index c017c9ab2494..03ebe636b294 100644
--- a/app/generated_resources_override.grd
+++ b/app/generated_resources_override.grd
@@ -113,7 +113,7 @@ are declared in tools/grit/grit_args.gni.
-
+
@@ -151,7 +151,7 @@ are declared in tools/grit/grit_args.gni.
-
+
@@ -474,7 +474,7 @@ are declared in tools/grit/grit_args.gni.
-
+
@@ -877,7 +877,7 @@ are declared in tools/grit/grit_args.gni.
-
+
Not from Web Store.
@@ -1147,7 +1147,6 @@ are declared in tools/grit/grit_args.gni.
-
@@ -1313,6 +1312,9 @@ are declared in tools/grit/grit_args.gni.
+
+
+
diff --git a/app/os_settings_strings.grdp b/app/os_settings_strings.grdp
index 2a01d4327c33..3438e93493ea 100644
--- a/app/os_settings_strings.grdp
+++ b/app/os_settings_strings.grdp
@@ -1037,7 +1037,7 @@
Help me read
- Summarize content or ask follow-up questions.
+ Summarize content or ask questions.
Help me write
@@ -7326,5 +7326,14 @@ Press & hold keyboard keys to see accent marks and special characters. This
ChromeOS is up to date
+
+
+
+ Create image
+
+
+ Enter a custom prompt or highlight text to create an image.
+
+
diff --git a/app/password_manager_ui_strings.grdp b/app/password_manager_ui_strings.grdp
index 9e13def7115b..c7bf184871e6 100644
--- a/app/password_manager_ui_strings.grdp
+++ b/app/password_manager_ui_strings.grdp
@@ -696,6 +696,12 @@
You created this passkey on $12024-02-01
+
+ Automatically create a passkey to sign in faster
+
+
+ Allow sites and apps to upgrade existing accounts to use passkeys
+
Remove access to your passkeys on this device
diff --git a/app/profiles_strings.grdp b/app/profiles_strings.grdp
index 21a5db29c2e8..3be8f7ed8cf1 100644
--- a/app/profiles_strings.grdp
+++ b/app/profiles_strings.grdp
@@ -87,16 +87,13 @@
Turn on sync...
-
- Continue as $1Bob
+
+ Sign in
Continue as $1John
-
- Sync is off
-
Sync as $1John Doe
@@ -112,12 +109,6 @@
Sync is paused
-
- {0, plural,
- =1 {Close # window}
- other {Close # windows}
- }
-
Sign in to get your bookmarks, history, passwords, and other settings on all your devices.
@@ -146,10 +137,19 @@
This profile is managed
+
+ {0, plural,
+ =1 {Close Guest}
+ other {Close Guest (# windows)}
+ }
+
+
+ {0, plural,
+ =1 {Close Private}
+ other {Close Private (# windows)}
+ }
+
-
- Other profiles
-
Your accounts
@@ -182,9 +182,6 @@
-
- Other Profiles
-
Your Accounts
@@ -632,17 +629,20 @@
Add existing browsing data to managed profile
-
- About this profile
+
+ About school profiles
+
+
+ About work profiles
Set up a new profile
- This profile is managed by your organization, which can view some information, including
+ Your profile is managed by your organization, which can view some information, including
- This profile is managed by $1example.com, which can view some information, including
+ Your profile is managed by $1example.com, which can view some information, including
Profile information
@@ -651,7 +651,10 @@
Device information
- To make sure this device can be used safely, your organization can see information about its operating system, browser, and settings, and what software is installed on the device.
+ To make sure this device can be used safely, your organization can see information about its operating system, browser, and settings, and what software is installed on the device
+
+
+ Back
Setting up your profile ...
@@ -686,32 +689,71 @@
Contact your administrator for more information
-
+
Sign in to get your passwords and more on all your devices
+
+ Set up a school profile to save and use your passwords and more in your account
+
+
+ Set up a work profile to save and use your passwords and more in your account
+
- Keep existing browsing data separate from your work profile?
+ Do you want to create a new profile for work?
- Keep existing browsing data separate from your school profile?
+ Do you want to create a new profile for school?
Keep existing browsing data separate from this new profile?
-
- Yes, keep it separate (recommended)
+
+ Yes, keep my data separate from school (recommended)
+
+
+ Yes, keep my data separate from work (recommended)
-
- Yes, keep it separate
+
+ Yes, keep my data separate from school
+
+
+ Yes, keep my data separate from work
- Your existing browsing data will remain in the existing profile. This new profile will not contain any previous browsing data.
+ Data that is saved only on this device will remain in the existing profile
+
+
+ No, continue to work in this profile
-
- No, move it into this new profile
+
+ No, continue to use for school in this profile
- This includes bookmarks, extensions and your browsing history of sites.
+ Your organization will be able to see and manage any existing browsing data, such as passwords and more
+
+
+ {BROWSING_HISTORY_COUNT, plural,
+ =1 {your browsing history of # site}
+ other {your browsing history of # sites}}
+
+
+ {BOOKMARKS_COUNT, plural,
+ =1 {# extension}
+ other {# extensions}}
+
+
+ {EXTENSIONS_COUNT, plural,
+ =1 {# bookmark}
+ other {# bookmarks}}
+
+
+ You currently have $110 bookmarks, $210 extensions, $3your browsing history of 5 sites, and more
+
+
+ You currently have $110 bookmarks, $210 extensions, and more
+
+
+ You currently have $110 bookmarks, and more
@@ -891,9 +933,6 @@
Back up data
-
- Save your bookmarks, passwords and more with sync
-
Save your bookmarks and more with sync
@@ -989,6 +1028,12 @@
other {Addresses ({SELECTED_ITEMS})}
}
+
+ Current color theme
+
+
+ Theme: $1Green color
+
Save in account
@@ -1007,5 +1052,19 @@
Select none
+
+
+
+ {ACCOUNT_EXTENSIONS_COUNT, plural,
+ =1 {Remove 1 extension and the data it's saved on this device}
+ other {Remove {ACCOUNT_EXTENSIONS_COUNT} extensions and the data they've saved on this device}
+ }
+
+
+ {ACCOUNT_EXTENSIONS_COUNT, plural,
+ =1 {This extension is saved in your Brave sync chain, but any data it’s saved only on this device may be deleted}
+ other {These extensions are saved in your Brave sync chain, but any data they've saved only on this device may be deleted}
+ }
+
diff --git a/app/profiles_strings_override.grdp b/app/profiles_strings_override.grdp
index 3382b1ba0e25..a273c8f9f064 100644
--- a/app/profiles_strings_override.grdp
+++ b/app/profiles_strings_override.grdp
@@ -24,6 +24,12 @@
+
+ {0, plural,
+ =1 {Close Private}
+ other {Close Private (# windows)}
+ }
+
diff --git a/app/settings_brave_strings.grdp b/app/settings_brave_strings.grdp
index 0f85a0666736..0bce723082c5 100644
--- a/app/settings_brave_strings.grdp
+++ b/app/settings_brave_strings.grdp
@@ -179,9 +179,6 @@
-
- Sites will probably work as you expect but won't remember you after you close all Brave windows
-
Sites will probably work as expected. You'll be signed out of most sites when you close all Brave windows, except your Brave sync chain if you're signed in to Brave.
diff --git a/app/settings_strings.grdp b/app/settings_strings.grdp
index a7b0eb8bbe6e..29d854c73218 100644
--- a/app/settings_strings.grdp
+++ b/app/settings_strings.grdp
@@ -275,9 +275,6 @@
Change
-
- Open Web Store
-
Pressing Tab on a webpage highlights links, as well as form fields
@@ -2471,6 +2468,9 @@
Sites automatically follow this setting when you visit them. Sites usually send notifications to let you know about breaking news or chat messages.
+
+ Sites usually send notifications to let you know about breaking news or chat messages.
+
Customized behaviors
@@ -2885,6 +2885,9 @@
Expand all requests
+
+ How to show requests
+
Don't allow sites to send notifications
@@ -3640,37 +3643,37 @@
- Sites you visit can embed content from other sites, for example images, ads, and text. These other sites can ask for permission to use info they've saved about you as you browse the site.
+ Sites you visit can embed content from other sites, for example images, ads, and text. These other sites can ask for permission to use information they've saved about you as you browse the site.
-
- Sites can ask to use info they've saved about you
+
+ Sites can ask to use information they've saved about you
-
- Sites are blocked from asking you to use info they've saved about you
+
+ Sites are blocked from asking you to use information they've saved about you
- Allowed to use info they've saved about you
+ Allowed to use information they've saved about you
- Not allowed to use info they've saved about you
+ Not allowed to use information they've saved about you
Remove $1google.com
-
+
Remove $1embedding.com from $2top-level.com
-
+
Show sites
-
+
Show less
-
- can use your info as you browse
+
+ can use your information as you browse
-
- is blocked from using your info on
+
+ is blocked from using your information on
@@ -4567,14 +4570,6 @@
When you use organize tabs, the titles and URLs of your open tabs are sent to Brave to generate suggested tab groups
-
-
- Create themes with AI
-
-
- Helps you design custom themes for Brave
-
-
Easily compare similar products
diff --git a/app/settings_strings_override.grdp b/app/settings_strings_override.grdp
index cd5442ad9e6d..ac36e04c688d 100644
--- a/app/settings_strings_override.grdp
+++ b/app/settings_strings_override.grdp
@@ -47,9 +47,6 @@
Automatically pin new tab groups created on any device to the bookmarks
-
- Open Web Store
-
diff --git a/app/shared_settings_strings.grdp b/app/shared_settings_strings.grdp
index 3b064f60fcf6..22d868ab98a2 100644
--- a/app/shared_settings_strings.grdp
+++ b/app/shared_settings_strings.grdp
@@ -400,18 +400,9 @@
Review your synced data
-
- Manage device sync
-
Manage browser sync
-
- Across your apps and Brave browser
-
-
- Manage Brave browser sync
-
Sync and Brave services
diff --git a/app/theme/brave_theme_resources.grd b/app/theme/brave_theme_resources.grd
index c90f08fb9c26..0721ca4ec6ff 100644
--- a/app/theme/brave_theme_resources.grd
+++ b/app/theme/brave_theme_resources.grd
@@ -1,5 +1,5 @@
-
+