diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index fb39b515cd42..73a9d5fdbf23 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -129,11 +129,13 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/download/settings/BraveDownloadSettings.java", "../../brave/android/java/org/chromium/chrome/browser/externalnav/BraveExternalNavigationHandler.java", "../../brave/android/java/org/chromium/chrome/browser/feedback/BraveHelpAndFeedbackLauncherImpl.java", + "../../brave/android/java/org/chromium/chrome/browser/firstrun/BraveFirstRunFlowSequencer.java", "../../brave/android/java/org/chromium/chrome/browser/firstrun/BraveFreIntentCreator.java", "../../brave/android/java/org/chromium/chrome/browser/firstrun/P3aOnboardingActivity.java", "../../brave/android/java/org/chromium/chrome/browser/help/BraveHelpAndFeedbackLauncher.java", "../../brave/android/java/org/chromium/chrome/browser/homepage/BraveHomepageManager.java", "../../brave/android/java/org/chromium/chrome/browser/homepage/settings/BraveHomepageSettings.java", + "../../brave/android/java/org/chromium/chrome/browser/infobar/BraveInfoBarIdentifier.java", "../../brave/android/java/org/chromium/chrome/browser/informers/BraveAndroidSyncDisabledInformer.java", "../../brave/android/java/org/chromium/chrome/browser/language/settings/BraveLanguageSettings.java", "../../brave/android/java/org/chromium/chrome/browser/local_database/BraveStatsTable.java", diff --git a/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceCoordinator.java b/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceCoordinator.java index 9e3db24df395..46e892d994af 100644 --- a/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceCoordinator.java +++ b/android/feed/core/java/src/org/chromium/chrome/browser/feed/BraveFeedSurfaceCoordinator.java @@ -13,16 +13,17 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.Px; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.bookmarks.BookmarkBridge; -import org.chromium.chrome.browser.feed.shared.FeedSurfaceDelegate; +import org.chromium.chrome.browser.feed.hooks.FeedHooks; +import org.chromium.chrome.browser.feed.sections.SectionHeaderView; +import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher; import org.chromium.chrome.browser.native_page.NativePageNavigationDelegate; import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin; -import org.chromium.chrome.browser.ntp.SnapScrollHelper; -import org.chromium.chrome.browser.ntp.snippets.SectionHeaderView; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.share.ShareDelegate; @@ -42,10 +43,9 @@ public class BraveFeedSurfaceCoordinator extends FeedSurfaceCoordinator { public BraveFeedSurfaceCoordinator(Activity activity, SnackbarManager snackbarManager, WindowAndroid windowAndroid, @Nullable SnapScrollHelper snapScrollHelper, - @Nullable View ntpHeader, @Nullable SectionHeaderView sectionHeaderView, - boolean showDarkBackground, FeedSurfaceDelegate delegate, - @Nullable NativePageNavigationDelegate pageNavigationDelegate, Profile profile, - boolean isPlaceholderShownInitially, BottomSheetController bottomSheetController, + @Nullable View ntpHeader, @Px int toolbarHeight, boolean showDarkBackground, + FeedSurfaceDelegate delegate, Profile profile, boolean isPlaceholderShownInitially, + BottomSheetController bottomSheetController, Supplier shareDelegateSupplier, @Nullable ScrollableContainerDelegate externalScrollableContainerDelegate, @NewTabPageLaunchOrigin int launchOrigin, @@ -53,13 +53,14 @@ public BraveFeedSurfaceCoordinator(Activity activity, SnackbarManager snackbarMa @NonNull Supplier toolbarSupplier, FeedLaunchReliabilityLoggingState launchReliabilityLoggingState, @Nullable FeedSwipeRefreshLayout swipeRefreshLayout, boolean overScrollDisabled, - @Nullable ViewGroup viewportView, @NonNull BookmarkBridge bookmarkBridge) { - super(activity, snackbarManager, windowAndroid, snapScrollHelper, ntpHeader, - sectionHeaderView, showDarkBackground, delegate, pageNavigationDelegate, profile, - isPlaceholderShownInitially, bottomSheetController, shareDelegateSupplier, - externalScrollableContainerDelegate, launchOrigin, privacyPreferencesManager, - toolbarSupplier, launchReliabilityLoggingState, swipeRefreshLayout, - overScrollDisabled, viewportView, bookmarkBridge); + @Nullable ViewGroup viewportView, FeedActionDelegate actionDelegate, + HelpAndFeedbackLauncher helpAndFeedbackLauncher, FeedHooks feedHooks) { + super(activity, snackbarManager, windowAndroid, snapScrollHelper, ntpHeader, toolbarHeight, + showDarkBackground, delegate, profile, isPlaceholderShownInitially, + bottomSheetController, shareDelegateSupplier, externalScrollableContainerDelegate, + launchOrigin, privacyPreferencesManager, toolbarSupplier, + launchReliabilityLoggingState, swipeRefreshLayout, overScrollDisabled, viewportView, + actionDelegate, helpAndFeedbackLauncher, feedHooks); } @Override diff --git a/android/java/apk_for_test.flags b/android/java/apk_for_test.flags index 229b1645524a..916705eca14e 100644 --- a/android/java/apk_for_test.flags +++ b/android/java/apk_for_test.flags @@ -50,8 +50,10 @@ -keep class org.chromium.chrome.browser.ntp.NewTabPage { public (...); + *** mBrowserControlsStateProvider; *** mNewTabPageLayout; *** mFeedSurfaceProvider; + *** mToolbarSupplier; } -keep class org.chromium.chrome.browser.ntp.BraveNewTabPage { @@ -136,7 +138,6 @@ *** mOverviewModeBehaviorSupplier; *** mSnackbarManager; *** onOrientationChange(...); - *** updateButtonStatus(...); *** updateBookmarkButtonStatus(...); *** updateReloadState(...); } diff --git a/android/java/org/chromium/chrome/browser/BraveSyncInformers.java b/android/java/org/chromium/chrome/browser/BraveSyncInformers.java index 692dd549db34..67e1eac4c93a 100644 --- a/android/java/org/chromium/chrome/browser/BraveSyncInformers.java +++ b/android/java/org/chromium/chrome/browser/BraveSyncInformers.java @@ -15,7 +15,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.BraveSyncWorker; import org.chromium.chrome.browser.app.BraveActivity; -import org.chromium.chrome.browser.infobar.InfoBarIdentifier; +import org.chromium.chrome.browser.infobar.BraveInfoBarIdentifier; import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; import org.chromium.chrome.browser.settings.BraveSyncScreensPreference; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; @@ -81,15 +81,11 @@ public boolean onInfoBarLinkClicked() { return false; } }, - // must be SYNC_V2_MIGRATE_INFOBAR_DELEGATE, but now it is introduced through - // src/brave/chromium_src/components/infobars/core/infobar_delegate.h and - // java enums are generated by //components/infobars/core:infobar_generated_enums - // who does not understand `brave/chromium_src` - InfoBarIdentifier.INLINE_UPDATE_READY_INFOBAR_ANDROID, - activity, + BraveInfoBarIdentifier.SYNC_V2_MIGRATE_INFOBAR_DELEGATE, activity, R.drawable.sync_icon /* drawableId */, activity.getString(R.string.brave_sync_v2_migrate_infobar_message) /* message */, - activity.getString(R.string.brave_sync_v2_migrate_infobar_command) /* primaryText */, + activity.getString( + R.string.brave_sync_v2_migrate_infobar_command) /* primaryText */, null /* secondaryText */, null /* linkText */, false /* autoExpire */); BraveSyncWorker.get().setSyncV2MigrateNoticeDismissed(true); } diff --git a/android/java/org/chromium/chrome/browser/app/appmenu/AppMenuIconRowFooter.java b/android/java/org/chromium/chrome/browser/app/appmenu/AppMenuIconRowFooter.java index e4c9db1a66d0..4f14846f032a 100644 --- a/android/java/org/chromium/chrome/browser/app/appmenu/AppMenuIconRowFooter.java +++ b/android/java/org/chromium/chrome/browser/app/appmenu/AppMenuIconRowFooter.java @@ -116,7 +116,8 @@ private void updateBookmarkMenuItem(BookmarkBridge bookmarkBridge, Tab currentTa mBookmarkButton.setImageResource(R.drawable.btn_star_filled); mBookmarkButton.setContentDescription(getContext().getString(R.string.edit_bookmark)); ApiCompatibilityUtils.setImageTintList(mBookmarkButton, - AppCompatResources.getColorStateList(getContext(), R.color.blue_mode_tint)); + AppCompatResources.getColorStateList( + getContext(), R.color.default_icon_color_accent1_tint_list)); } else { mBookmarkButton.setImageResource(R.drawable.btn_star); mBookmarkButton.setContentDescription( diff --git a/android/java/org/chromium/chrome/browser/appmenu/BraveTabbedAppMenuPropertiesDelegate.java b/android/java/org/chromium/chrome/browser/appmenu/BraveTabbedAppMenuPropertiesDelegate.java index 14b5888ec66c..6de4955bf150 100644 --- a/android/java/org/chromium/chrome/browser/appmenu/BraveTabbedAppMenuPropertiesDelegate.java +++ b/android/java/org/chromium/chrome/browser/appmenu/BraveTabbedAppMenuPropertiesDelegate.java @@ -47,7 +47,8 @@ public class BraveTabbedAppMenuPropertiesDelegate extends TabbedAppMenuPropertiesDelegate { private Menu mMenu; - AppMenuDelegate mAppMenuDelegate; + private AppMenuDelegate mAppMenuDelegate; + private ObservableSupplier mBookmarkBridgeSupplier; public BraveTabbedAppMenuPropertiesDelegate(Context context, ActivityTabProvider activityTabProvider, @@ -65,6 +66,7 @@ public BraveTabbedAppMenuPropertiesDelegate(Context context, snackbarManager); mAppMenuDelegate = appMenuDelegate; + mBookmarkBridgeSupplier = bookmarkBridgeSupplier; } @Override @@ -158,11 +160,11 @@ public void prepareMenu(Menu menu, AppMenuHandler handler) { shareItem.setIcon(AppCompatResources.getDrawable(mContext, R.drawable.share_icon)); } - // By this we forcibly initialize mBookmarkBridge + // By this we forcibly initialize BookmarkBridge MenuItem bookmarkItem = menu.findItem(R.id.bookmark_this_page_id); Tab currentTab = mActivityTabProvider.get(); if (bookmarkItem != null && currentTab != null) { - updateBookmarkMenuItem(bookmarkItem, currentTab); + updateBookmarkMenuItemShortcut(bookmarkItem, currentTab); } } @@ -181,7 +183,7 @@ public void onMenuDismissed() { @Override public void onFooterViewInflated(AppMenuHandler appMenuHandler, View view) { // If it's still null, just hide the whole view - if (mBookmarkBridge == null) { + if (mBookmarkBridgeSupplier.get() == null) { if (view != null) { view.setVisibility(View.GONE); } @@ -193,8 +195,8 @@ public void onFooterViewInflated(AppMenuHandler appMenuHandler, View view) { if (view instanceof AppMenuIconRowFooter) { ((AppMenuIconRowFooter) view) - .initialize(appMenuHandler, mBookmarkBridge, mActivityTabProvider.get(), - mAppMenuDelegate); + .initialize(appMenuHandler, mBookmarkBridgeSupplier.get(), + mActivityTabProvider.get(), mAppMenuDelegate); } // Hide bookmark button if bottom toolbar is enabled diff --git a/android/java/org/chromium/chrome/browser/firstrun/BraveFirstRunFlowSequencer.java b/android/java/org/chromium/chrome/browser/firstrun/BraveFirstRunFlowSequencer.java new file mode 100644 index 000000000000..54e82ac86e8a --- /dev/null +++ b/android/java/org/chromium/chrome/browser/firstrun/BraveFirstRunFlowSequencer.java @@ -0,0 +1,19 @@ +/* Copyright (c) 2021 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/. */ + +package org.chromium.chrome.browser.firstrun; + +import android.app.Activity; + +public abstract class BraveFirstRunFlowSequencer extends FirstRunFlowSequencer { + public BraveFirstRunFlowSequencer(Activity activity) { + super(activity); + } + + @Override + public void start() { + super.start(); + } +} diff --git a/android/java/org/chromium/chrome/browser/infobar/BraveInfoBarIdentifier.java b/android/java/org/chromium/chrome/browser/infobar/BraveInfoBarIdentifier.java new file mode 100644 index 000000000000..6efd4dadf819 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/infobar/BraveInfoBarIdentifier.java @@ -0,0 +1,27 @@ +/* Copyright (c) 2021 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/. */ + +package org.chromium.chrome.browser.infobar; + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +// Reflects enum items from chromium_src/components/infobars/core/infobar_delegate.h + +@IntDef({BraveInfoBarIdentifier.INVALID, BraveInfoBarIdentifier.BRAVE_CONFIRM_P3A_INFOBAR_DELEGATE, + BraveInfoBarIdentifier.WAYBACK_MACHINE_INFOBAR_DELEGATE, + BraveInfoBarIdentifier.SYNC_V2_MIGRATE_INFOBAR_DELEGATE, + BraveInfoBarIdentifier.ANDROID_SYSTEM_SYNC_DISABLED_INFOBAR}) + +@Retention(RetentionPolicy.SOURCE) +public @interface BraveInfoBarIdentifier { + int INVALID = -1; + int BRAVE_CONFIRM_P3A_INFOBAR_DELEGATE = 500; + int WAYBACK_MACHINE_INFOBAR_DELEGATE = 502; + int SYNC_V2_MIGRATE_INFOBAR_DELEGATE = 503; + int ANDROID_SYSTEM_SYNC_DISABLED_INFOBAR = 504; +} diff --git a/android/java/org/chromium/chrome/browser/informers/BraveAndroidSyncDisabledInformer.java b/android/java/org/chromium/chrome/browser/informers/BraveAndroidSyncDisabledInformer.java index a6d08ffc59d9..039629bd1645 100644 --- a/android/java/org/chromium/chrome/browser/informers/BraveAndroidSyncDisabledInformer.java +++ b/android/java/org/chromium/chrome/browser/informers/BraveAndroidSyncDisabledInformer.java @@ -15,7 +15,7 @@ import org.chromium.base.Log; import org.chromium.chrome.R; import org.chromium.chrome.browser.app.BraveActivity; -import org.chromium.chrome.browser.infobar.InfoBarIdentifier; +import org.chromium.chrome.browser.infobar.BraveInfoBarIdentifier; import org.chromium.chrome.browser.sync.SyncService; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.ui.messages.infobar.BraveSimpleConfirmInfoBarBuilder; @@ -92,11 +92,7 @@ public boolean onInfoBarLinkClicked() { return false; } }, - // must be enum from - // src/brave/chromium_src/components/infobars/core/infobar_delegate.h and java enums - // are generated by //components/infobars/core:infobar_generated_enums who does not - // understand `brave/chromium_src` - InfoBarIdentifier.INLINE_UPDATE_READY_INFOBAR_ANDROID, activity, + BraveInfoBarIdentifier.ANDROID_SYSTEM_SYNC_DISABLED_INFOBAR, activity, R.drawable.ic_warning_circle, activity.getString(R.string.brave_sync_android_sync_disabled), activity.getString(R.string.brave_open_system_sync_settings), diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java index f87b39885eec..dfa985e3754c 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java @@ -17,9 +17,12 @@ import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; import org.chromium.chrome.browser.feed.BraveFeedSurfaceCoordinator; +import org.chromium.chrome.browser.feed.FeedFeatures; +import org.chromium.chrome.browser.feed.FeedLaunchReliabilityLoggingState; +import org.chromium.chrome.browser.feed.FeedSurfaceProvider; import org.chromium.chrome.browser.feed.FeedSwipeRefreshLayout; -import org.chromium.chrome.browser.feed.shared.FeedFeatures; -import org.chromium.chrome.browser.feed.shared.FeedSurfaceProvider; +import org.chromium.chrome.browser.feed.hooks.FeedHooksImpl; +import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; @@ -29,13 +32,16 @@ import org.chromium.chrome.browser.toolbar.top.Toolbar; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.native_page.NativePageHost; +import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger.SurfaceType; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.ui.base.WindowAndroid; public class BraveNewTabPage extends NewTabPage { - private Supplier mToolbarSupplier; + // To delete in bytecode, members from parent class will be used instead. + private BrowserControlsStateProvider mBrowserControlsStateProvider; private NewTabPageLayout mNewTabPageLayout; private FeedSurfaceProvider mFeedSurfaceProvider; + private Supplier mToolbarSupplier; public BraveNewTabPage(Activity activity, BrowserControlsStateProvider browserControlsStateProvider, @@ -55,8 +61,6 @@ public BraveNewTabPage(Activity activity, if (mNewTabPageLayout instanceof BraveNewTabPageLayout) { ((BraveNewTabPageLayout) mNewTabPageLayout).setTab(tab); } - - mToolbarSupplier = toolbarSupplier; } @Override @@ -71,16 +75,17 @@ protected void initializeMainView(Activity activity, WindowAndroid windowAndroid assert !FeedFeatures.isFeedEnabled(); mFeedSurfaceProvider = new BraveFeedSurfaceCoordinator(activity, snackbarManager, - windowAndroid, new SnapScrollHelper(mNewTabPageManager, mNewTabPageLayout), - mNewTabPageLayout, null, isInNightMode, this, - mNewTabPageManager.getNavigationDelegate(), profile, + windowAndroid, new SnapScrollHelperImpl(mNewTabPageManager, mNewTabPageLayout), + mNewTabPageLayout, mBrowserControlsStateProvider.getTopControlsHeight(), + isInNightMode, this, profile, /* isPlaceholderShownInitially= */ false, bottomSheetController, shareDelegateSupplier, /* externalScrollableContainerDelegate= */ null, NewTabPageUtils.decodeOriginFromNtpUrl(url), PrivacyPreferencesManagerImpl.getInstance(), mToolbarSupplier, - /* FeedLaunchReliabilityLoggingState */ null, + new FeedLaunchReliabilityLoggingState(SurfaceType.NEW_TAB_PAGE, mConstructedTimeNs), FeedSwipeRefreshLayout.create(activity, R.id.toolbar_container), - /* overScrollDisabled= */ false, - /* viewportView= */ null, new BookmarkBridge(profile)); + /* overScrollDisabled= */ false, /* viewportView= */ null, + /* actionDelegate= */ null, HelpAndFeedbackLauncherImpl.getInstance(), + FeedHooksImpl.getInstance()); } } diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java index f1237ffd8bfb..2628af71bb72 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java @@ -89,6 +89,7 @@ import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.custom_layout.VerticalViewPager; import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge; +import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.local_database.DatabaseHelper; @@ -1215,7 +1216,7 @@ private void processFeed() { @Override public void initialize(NewTabPageManager manager, Activity activity, TileGroup.Delegate tileGroupDelegate, boolean searchProviderHasLogo, - boolean searchProviderIsGoogle, ScrollDelegate scrollDelegate, + boolean searchProviderIsGoogle, FeedSurfaceScrollDelegate scrollDelegate, ContextMenuManager contextMenuManager, UiConfig uiConfig, Supplier tabProvider, ActivityLifecycleDispatcher lifecycleDispatcher, NewTabPageUma uma, boolean isIncognito, WindowAndroid windowAndroid) { diff --git a/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java b/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java index ee3f70a741ad..42d1558cb9b3 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java +++ b/android/java/org/chromium/chrome/browser/toolbar/BraveToolbarManager.java @@ -145,7 +145,7 @@ public BraveToolbarManager(AppCompatActivity activity, BrowserControlsSizer cont ObservableSupplier omniboxFocusStateSupplier, OneshotSupplier intentMetadataOneshotSupplier, OneshotSupplier promoShownOneshotSupplier, WindowAndroid windowAndroid, - Supplier isInOverviewModeSupplier, + Supplier isInOverviewModeSupplier, boolean shouldShowOverviewPageOnStart, Supplier modalDialogManagerSupplier, StatusBarColorController statusBarColorController, AppMenuDelegate appMenuDelegate, ActivityLifecycleDispatcher activityLifecycleDispatcher, @@ -168,12 +168,12 @@ public BraveToolbarManager(AppCompatActivity activity, BrowserControlsSizer cont layoutStateProviderSupplier, appMenuCoordinatorSupplier, shouldShowUpdateBadge, tabModelSelectorSupplier, startSurfaceSupplier, omniboxFocusStateSupplier, intentMetadataOneshotSupplier, promoShownOneshotSupplier, windowAndroid, - isInOverviewModeSupplier, modalDialogManagerSupplier, statusBarColorController, - appMenuDelegate, activityLifecycleDispatcher, startSurfaceParentTabSupplier, - bottomSheetController, isWarmOnResumeSupplier, tabContentManager, tabCreatorManager, - overviewModeBehaviorSupplier, snackbarManager, jankTracker, - merchantTrustSignalsCoordinatorSupplier, tabReparentingControllerSupplier, - initializeWithIncognitoColors); + isInOverviewModeSupplier, shouldShowOverviewPageOnStart, modalDialogManagerSupplier, + statusBarColorController, appMenuDelegate, activityLifecycleDispatcher, + startSurfaceParentTabSupplier, bottomSheetController, isWarmOnResumeSupplier, + tabContentManager, tabCreatorManager, overviewModeBehaviorSupplier, snackbarManager, + jankTracker, merchantTrustSignalsCoordinatorSupplier, + tabReparentingControllerSupplier, initializeWithIncognitoColors); mOmniboxFocusStateSupplier = omniboxFocusStateSupplier; mLayoutStateProviderSupplier = layoutStateProviderSupplier; mActivity = activity; @@ -297,21 +297,6 @@ protected void onOrientationChange(int newOrientation) { } } - protected void updateButtonStatus() { - Tab currentTab = mLocationBarModel.getTab(); - boolean tabCrashed = currentTab != null && SadTab.isShowing(currentTab); - - mToolbar.updateButtonVisibility(); - mToolbar.updateBackButtonVisibility(currentTab != null && currentTab.canGoBack()); - mToolbar.updateForwardButtonVisibility(currentTab != null && currentTab.canGoForward()); - updateReloadState(tabCrashed); - updateBookmarkButtonStatus(); - - if (mToolbar.getMenuButtonWrapper() != null && !isBottomToolbarVisible()) { - mToolbar.getMenuButtonWrapper().setVisibility(View.VISIBLE); - } - } - protected void updateBookmarkButtonStatus() { Tab currentTab = mLocationBarModel.getTab(); BookmarkBridge bridge = mBookmarkBridgeSupplier.get(); @@ -345,10 +330,6 @@ private void setBottomToolbarVisible(boolean visible) { } } - public boolean isBottomToolbarVisible() { - return mIsBottomToolbarVisible; - } - private void updateBottomToolbarVisibility() { boolean isBottomToolbarVisible = BottomToolbarConfiguration.isBottomToolbarEnabled() && mActivity.getResources().getConfiguration().orientation diff --git a/android/java/org/chromium/chrome/browser/toolbar/bottom/BookmarksButton.java b/android/java/org/chromium/chrome/browser/toolbar/bottom/BookmarksButton.java index 01d2d9cd281a..b652a324ab85 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/bottom/BookmarksButton.java +++ b/android/java/org/chromium/chrome/browser/toolbar/bottom/BookmarksButton.java @@ -62,7 +62,9 @@ public void onTintChanged(ColorStateList tint, boolean useLight) { public void updateBookmarkButton(boolean isBookmarked, boolean editingAllowed) { if (isBookmarked) { setImageResource(R.drawable.btn_bookmark_fill); - ApiCompatibilityUtils.setImageTintList(this, AppCompatResources.getColorStateList(getContext(), R.color.blue_mode_tint)); + ApiCompatibilityUtils.setImageTintList(this, + AppCompatResources.getColorStateList( + getContext(), R.color.default_icon_color_accent1_tint_list)); setContentDescription(getContext().getString(R.string.edit_bookmark)); } else { setImageResource(R.drawable.btn_bookmark); 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 235efb5604d5..dc093c84049d 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java @@ -21,6 +21,7 @@ import org.chromium.chrome.browser.toolbar.ButtonDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarTabController; +import org.chromium.chrome.browser.toolbar.menu_button.MenuButton; import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator; import org.chromium.chrome.browser.toolbar.top.NavigationPopup.HistoryDelegate; import org.chromium.chrome.browser.toolbar.top.ToolbarTablet.OfflineDownloader; @@ -36,6 +37,8 @@ public class BraveTopToolbarCoordinator extends TopToolbarCoordinator { private TabSwitcherModeTTCoordinatorPhone mTabSwitcherModeCoordinatorPhone; private OptionalBrowsingModeButtonController mOptionalButtonController; private ToolbarLayout mBraveToolbarLayout; + private MenuButtonCoordinator mBraveMenuButtonCoordinator; + private boolean mIsBottomToolbarVisible; public BraveTopToolbarCoordinator(ToolbarControlContainer controlContainer, ToolbarLayout toolbarLayout, ToolbarDataProvider toolbarDataProvider, @@ -59,7 +62,7 @@ public BraveTopToolbarCoordinator(ToolbarControlContainer controlContainer, boolean isTabToGtsAnimationEnabled, boolean isStartSurfaceEnabled, boolean isTabGroupsAndroidContinuationEnabled, HistoryDelegate historyDelegate, BooleanSupplier partnerHomepageEnabledSupplier, OfflineDownloader offlineDownloader, - boolean initializeWithIncognitoColors) { + boolean initializeWithIncognitoColors, boolean shouldHideToolbarLayoutOnStart) { super(controlContainer, toolbarLayout, toolbarDataProvider, tabController, userEducationHelper, buttonDataProviders, layoutStateProviderSupplier, normalThemeColorProvider, overviewThemeColorProvider, @@ -71,9 +74,11 @@ public BraveTopToolbarCoordinator(ToolbarControlContainer controlContainer, isIncognitoModeEnabledSupplier, isGridTabSwitcherEnabled, isTabToGtsAnimationEnabled, isStartSurfaceEnabled, isTabGroupsAndroidContinuationEnabled, historyDelegate, - partnerHomepageEnabledSupplier, offlineDownloader, initializeWithIncognitoColors); + partnerHomepageEnabledSupplier, offlineDownloader, initializeWithIncognitoColors, + shouldHideToolbarLayoutOnStart); mBraveToolbarLayout = toolbarLayout; + mBraveMenuButtonCoordinator = browsingModeMenuButtonCoordinator; if (isToolbarPhone()) { if (!isStartSurfaceEnabled) { @@ -87,6 +92,7 @@ public BraveTopToolbarCoordinator(ToolbarControlContainer controlContainer, } public void onBottomToolbarVisibilityChanged(boolean isVisible) { + mIsBottomToolbarVisible = isVisible; if (mBraveToolbarLayout instanceof BraveToolbarLayout) { ((BraveToolbarLayoutImpl) mBraveToolbarLayout) .onBottomToolbarVisibilityChanged(isVisible); @@ -101,4 +107,10 @@ public void onBottomToolbarVisibilityChanged(boolean isVisible) { public boolean isToolbarPhone() { return mBraveToolbarLayout instanceof ToolbarPhone; } + + @Override + public MenuButton getMenuButtonWrapper() { + // We consider that there is no top toolbar menu button, if bottom toolbar is visible. + return mIsBottomToolbarVisible ? null : mBraveMenuButtonCoordinator.getMenuButton(); + } } diff --git a/android/java/org/chromium/chrome/browser/vpn/BraveVpnPlansActivity.java b/android/java/org/chromium/chrome/browser/vpn/BraveVpnPlansActivity.java index 7dc5a55f1260..d6a28ef87c91 100644 --- a/android/java/org/chromium/chrome/browser/vpn/BraveVpnPlansActivity.java +++ b/android/java/org/chromium/chrome/browser/vpn/BraveVpnPlansActivity.java @@ -25,14 +25,14 @@ import org.chromium.base.Log; import org.chromium.chrome.R; -import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; +import org.chromium.chrome.browser.firstrun.BraveFirstRunFlowSequencer; import org.chromium.chrome.browser.vpn.BraveVpnParentActivity; import org.chromium.chrome.browser.vpn.BraveVpnPlanPagerAdapter; import org.chromium.chrome.browser.vpn.BraveVpnUtils; import org.chromium.chrome.browser.vpn.InAppPurchaseWrapper; public class BraveVpnPlansActivity extends BraveVpnParentActivity { - private FirstRunFlowSequencer mFirstRunFlowSequencer; + private BraveFirstRunFlowSequencer mFirstRunFlowSequencer; private ProgressBar mPlanProgress; private LinearLayout mPlanLayout; private boolean mShouldShowRestoreMenu; @@ -152,7 +152,7 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override protected void triggerLayoutInflation() { - mFirstRunFlowSequencer = new FirstRunFlowSequencer(this) { + mFirstRunFlowSequencer = new BraveFirstRunFlowSequencer(this) { @Override public void onFlowIsKnown(Bundle freProperties) { initializeViews(); diff --git a/android/java/org/chromium/chrome/browser/vpn/BraveVpnProfileActivity.java b/android/java/org/chromium/chrome/browser/vpn/BraveVpnProfileActivity.java index 0440d1e62cea..a72aecf1e32b 100644 --- a/android/java/org/chromium/chrome/browser/vpn/BraveVpnProfileActivity.java +++ b/android/java/org/chromium/chrome/browser/vpn/BraveVpnProfileActivity.java @@ -21,13 +21,13 @@ import org.chromium.base.Log; import org.chromium.chrome.R; -import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; +import org.chromium.chrome.browser.firstrun.BraveFirstRunFlowSequencer; import org.chromium.chrome.browser.vpn.BraveVpnNativeWorker; import org.chromium.chrome.browser.vpn.BraveVpnProfileUtils; import org.chromium.chrome.browser.vpn.BraveVpnUtils; public class BraveVpnProfileActivity extends BraveVpnParentActivity { - private FirstRunFlowSequencer mFirstRunFlowSequencer; + private BraveFirstRunFlowSequencer mFirstRunFlowSequencer; private TextView mProfileTitle; private TextView mProfileText; private Button mInstallVpnButton; @@ -91,7 +91,7 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override protected void triggerLayoutInflation() { - mFirstRunFlowSequencer = new FirstRunFlowSequencer(this) { + mFirstRunFlowSequencer = new BraveFirstRunFlowSequencer(this) { @Override public void onFlowIsKnown(Bundle freProperties) { initializeViews(); diff --git a/android/java/org/chromium/chrome/browser/vpn/BraveVpnSupportActivity.java b/android/java/org/chromium/chrome/browser/vpn/BraveVpnSupportActivity.java index 169b4afe40e8..279c86fc4c83 100644 --- a/android/java/org/chromium/chrome/browser/vpn/BraveVpnSupportActivity.java +++ b/android/java/org/chromium/chrome/browser/vpn/BraveVpnSupportActivity.java @@ -28,14 +28,14 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.about_settings.AboutChromeSettings; import org.chromium.chrome.browser.about_settings.AboutSettingsBridge; -import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; +import org.chromium.chrome.browser.firstrun.BraveFirstRunFlowSequencer; import org.chromium.chrome.browser.init.AsyncInitializationActivity; import org.chromium.chrome.browser.vpn.BraveVpnPrefUtils; import java.util.TimeZone; public class BraveVpnSupportActivity extends AsyncInitializationActivity { - private FirstRunFlowSequencer mFirstRunFlowSequencer; + private BraveFirstRunFlowSequencer mFirstRunFlowSequencer; private void initializeViews() { setContentView(R.layout.activity_brave_vpn_support); @@ -135,7 +135,7 @@ public void onClick(View v) { @Override protected void triggerLayoutInflation() { - mFirstRunFlowSequencer = new FirstRunFlowSequencer(this) { + mFirstRunFlowSequencer = new BraveFirstRunFlowSequencer(this) { @Override public void onFlowIsKnown(Bundle freProperties) { initializeViews(); diff --git a/android/java/res/layout/brave_rewards_panel.xml b/android/java/res/layout/brave_rewards_panel.xml index eab7e881a121..b6394face967 100644 --- a/android/java/res/layout/brave_rewards_panel.xml +++ b/android/java/res/layout/brave_rewards_panel.xml @@ -207,7 +207,7 @@ android:orientation="vertical" android:visibility="gone"/> -