Commit 2336b655 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Chromium LUCI CQ

Toolbar: Move BottomControls to modularized target

This CL moves the classes for BottomControls MVC component plus
its layout xml to chrome/browser/ui/android/toolbar/.

Following dependencies on chrome_java were removed:

- ShareDelegate - was not in use.
- TabGroupUi - split to BottomControlsContentDelegate and extend
               from it.


Bug: 1127732
Change-Id: I40a630eba6924b65a3b90b8ab95f2814dacb70d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2610411
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Reviewed-by: default avatarMei Liang <meiliang@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841911}
parent 5e5678ff
...@@ -767,7 +767,6 @@ chrome_java_resources = [ ...@@ -767,7 +767,6 @@ chrome_java_resources = [
"java/res/layout/bookmark_widget.xml", "java/res/layout/bookmark_widget.xml",
"java/res/layout/bookmark_widget_icons_only.xml", "java/res/layout/bookmark_widget_icons_only.xml",
"java/res/layout/bookmark_widget_item.xml", "java/res/layout/bookmark_widget_item.xml",
"java/res/layout/bottom_control_container.xml",
"java/res/layout/chip_view_menu_item.xml", "java/res/layout/chip_view_menu_item.xml",
"java/res/layout/clear_browsing_data_button.xml", "java/res/layout/clear_browsing_data_button.xml",
"java/res/layout/clear_browsing_data_tabs.xml", "java/res/layout/clear_browsing_data_tabs.xml",
......
...@@ -1389,10 +1389,6 @@ chrome_java_sources = [ ...@@ -1389,10 +1389,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java", "java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBar.java", "java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBar.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarTabControllerImpl.java", "java/src/org/chromium/chrome/browser/toolbar/ToolbarTabControllerImpl.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java",
"java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator.java", "java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator.java",
"java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator.java", "java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator.java",
"java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressProperties.java", "java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressProperties.java",
......
...@@ -205,6 +205,7 @@ android_library("java") { ...@@ -205,6 +205,7 @@ android_library("java") {
"//chrome/browser/ui/android/favicon:java", "//chrome/browser/ui/android/favicon:java",
"//chrome/browser/ui/android/strings:ui_strings_grd", "//chrome/browser/ui/android/strings:ui_strings_grd",
"//chrome/browser/ui/android/theme:java", "//chrome/browser/ui/android/theme:java",
"//chrome/browser/ui/android/toolbar:java",
"//chrome/browser/ui/messages/android:java", "//chrome/browser/ui/messages/android:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//components/browser_ui/android/bottomsheet:java", "//components/browser_ui/android/bottomsheet:java",
......
...@@ -8,6 +8,7 @@ include_rules = [ ...@@ -8,6 +8,7 @@ include_rules = [
"+chrome/browser/tabpersistence/android/java", "+chrome/browser/tabpersistence/android/java",
"+chrome/browser/ui/android/favicon/java", "+chrome/browser/ui/android/favicon/java",
"+chrome/browser/ui/android/theme/java", "+chrome/browser/ui/android/theme/java",
"+chrome/browser/ui/android/toolbar/java",
"+chrome/browser/ui/messages/android/java", "+chrome/browser/ui/messages/android/java",
"+components/browser_ui/styles/android", "+components/browser_ui/styles/android",
"+components/browser_ui/widget/android", "+components/browser_ui/widget/android",
......
...@@ -4,29 +4,15 @@ ...@@ -4,29 +4,15 @@
package org.chromium.chrome.browser.tasks.tab_management; package org.chromium.chrome.browser.tasks.tab_management;
import android.app.Activity;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.toolbar.bottom.BottomControlsCoordinator; import org.chromium.chrome.browser.toolbar.bottom.BottomControlsContentDelegate;
/** /**
* Interface for the Tab Groups related UI. This UI manages its own visibility through {@link * Interface for the Tab Groups related UI.
* BottomControlsCoordinator.BottomControlsVisibilityController}.
*/ */
public interface TabGroupUi { public interface TabGroupUi extends BottomControlsContentDelegate {
/**
* Called by the ToolbarManager when the system back button is pressed.
* @return Whether or not the TabGroupUi consumed the event.
*/
boolean onBackPressed();
void initializeWithNative(Activity activity,
BottomControlsCoordinator.BottomControlsVisibilityController visibilityController);
/** /**
* @return {@link Supplier} that provides dialog visibility. * @return {@link Supplier} that provides dialog visibility.
*/ */
Supplier<Boolean> getTabGridDialogVisibilitySupplier(); Supplier<Boolean> getTabGridDialogVisibilitySupplier();
void destroy();
} }
...@@ -236,9 +236,6 @@ ...@@ -236,9 +236,6 @@
<dimen name="tablet_toolbar_start_padding">4dp</dimen> <dimen name="tablet_toolbar_start_padding">4dp</dimen>
<dimen name="toolbar_optional_button_animation_translation">10dp</dimen> <dimen name="toolbar_optional_button_animation_translation">10dp</dimen>
<!-- Bottom controls dimensions -->
<dimen name="bottom_controls_height">@dimen/min_touch_target_size</dimen>
<!-- Start surface toolbar dimensions --> <!-- Start surface toolbar dimensions -->
<dimen name="start_surface_toolbar_button_padding_to_button">8dp</dimen> <dimen name="start_surface_toolbar_button_padding_to_button">8dp</dimen>
<dimen name="start_surface_toolbar_button_padding_to_edge">16dp</dimen> <dimen name="start_surface_toolbar_button_padding_to_edge">16dp</dimen>
......
...@@ -1529,12 +1529,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -1529,12 +1529,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) { if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) {
dialogVisibilitySupplier = () -> { dialogVisibilitySupplier = () -> {
assert mStartSurfaceSupplier.get() != null; assert mStartSurfaceSupplier.get() != null;
assert getToolbarManager().getBottomControlsCoordinator() != null; assert getToolbarManager().getTabGroupUi() != null;
// Return true if dialog from either tab switcher or tab strip is visible. // Return true if dialog from either tab switcher or tab strip is visible.
Supplier<Boolean> tabGroupUiDialogVisibilitySupplier = Supplier<Boolean> tabGroupUiDialogVisibilitySupplier =
getToolbarManager() getToolbarManager().getTabGroupUi().getTabGridDialogVisibilitySupplier();
.getBottomControlsCoordinator()
.getTabGridDialogVisibilitySupplier();
Supplier<Boolean> tabSwitcherDialogVisibilitySupplier = Supplier<Boolean> tabSwitcherDialogVisibilitySupplier =
mStartSurfaceSupplier.get().getTabGridDialogVisibilitySupplier(); mStartSurfaceSupplier.get().getTabGridDialogVisibilitySupplier();
boolean isDialogVisible = false; boolean isDialogVisible = false;
......
...@@ -10,8 +10,10 @@ include_rules = [ ...@@ -10,8 +10,10 @@ include_rules = [
specific_include_rules = { specific_include_rules = {
'ToolbarManager.java': [ 'ToolbarManager.java': [
"+chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management",
"+chrome/android/java/src/org/chromium/chrome/browser", "+chrome/android/java/src/org/chromium/chrome/browser",
"-chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", "-chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
"+chrome/browser/ui/android/toolbar",
], ],
'ToolbarButtonInProductHelpController.java': [ 'ToolbarButtonInProductHelpController.java': [
"+chrome/android/java/src/org/chromium/chrome/browser", "+chrome/android/java/src/org/chromium/chrome/browser",
......
...@@ -18,6 +18,7 @@ import android.view.View.OnAttachStateChangeListener; ...@@ -18,6 +18,7 @@ import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener; import android.view.View.OnLongClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewStub;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -90,11 +91,14 @@ import org.chromium.chrome.browser.tabmodel.TabModel; ...@@ -90,11 +91,14 @@ import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver; import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil; import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
import org.chromium.chrome.browser.tasks.tab_management.TabGroupUi;
import org.chromium.chrome.browser.tasks.tab_management.TabManagementModuleProvider;
import org.chromium.chrome.browser.theme.ThemeColorProvider; import org.chromium.chrome.browser.theme.ThemeColorProvider;
import org.chromium.chrome.browser.theme.ThemeColorProvider.ThemeColorObserver; import org.chromium.chrome.browser.theme.ThemeColorProvider.ThemeColorObserver;
import org.chromium.chrome.browser.theme.ThemeColorProvider.TintObserver; import org.chromium.chrome.browser.theme.ThemeColorProvider.TintObserver;
import org.chromium.chrome.browser.theme.TopUiThemeColorProvider; import org.chromium.chrome.browser.theme.TopUiThemeColorProvider;
import org.chromium.chrome.browser.toolbar.bottom.BottomControlsCoordinator; import org.chromium.chrome.browser.toolbar.bottom.BottomControlsCoordinator;
import org.chromium.chrome.browser.toolbar.bottom.ScrollingBottomViewResourceFrameLayout;
import org.chromium.chrome.browser.toolbar.load_progress.LoadProgressCoordinator; import org.chromium.chrome.browser.toolbar.load_progress.LoadProgressCoordinator;
import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator; import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator;
import org.chromium.chrome.browser.toolbar.top.ActionModeController; import org.chromium.chrome.browser.toolbar.top.ActionModeController;
...@@ -183,7 +187,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -183,7 +187,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
private FindToolbarManager mFindToolbarManager; private FindToolbarManager mFindToolbarManager;
private LayoutManagerImpl mLayoutManager; private LayoutManagerImpl mLayoutManager;
private final ObservableSupplier<ShareDelegate> mShareDelegateSupplier;
private TabObserver mTabObserver; private TabObserver mTabObserver;
private BookmarkBridge.BookmarkModelObserver mBookmarksObserver; private BookmarkBridge.BookmarkModelObserver mBookmarksObserver;
...@@ -253,6 +256,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -253,6 +256,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
private ObservableSupplierImpl<Boolean> mOverlayPanelVisibilitySupplier = private ObservableSupplierImpl<Boolean> mOverlayPanelVisibilitySupplier =
new ObservableSupplierImpl<>(); new ObservableSupplierImpl<>();
private TabGroupUi mTabGroupUi;
private static class TabObscuringCallback implements Callback<Boolean> { private static class TabObscuringCallback implements Callback<Boolean> {
private final TabObscuringHandler mTabObscuringHandler; private final TabObscuringHandler mTabObscuringHandler;
/** A token held while the toolbar/omnibox is obscuring all visible tabs. */ /** A token held while the toolbar/omnibox is obscuring all visible tabs. */
...@@ -350,7 +355,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -350,7 +355,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
mFullscreenManager = fullscreenManager; mFullscreenManager = fullscreenManager;
mActionBarDelegate = new ViewShiftingActionBarDelegate(activity.getSupportActionBar(), mActionBarDelegate = new ViewShiftingActionBarDelegate(activity.getSupportActionBar(),
controlContainer, activity.findViewById(R.id.action_bar_black_background)); controlContainer, activity.findViewById(R.id.action_bar_black_background));
mShareDelegateSupplier = shareDelegateSupplier;
mCanAnimateNativeBrowserControls = canAnimateNativeBrowserControls; mCanAnimateNativeBrowserControls = canAnimateNativeBrowserControls;
mScrimCoordinator = scrimCoordinator; mScrimCoordinator = scrimCoordinator;
mTabModelSelectorSupplier = tabModelSelectorSupplier; mTabModelSelectorSupplier = tabModelSelectorSupplier;
...@@ -996,19 +1000,24 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -996,19 +1000,24 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
* Enable the bottom controls. * Enable the bottom controls.
*/ */
public void enableBottomControls() { public void enableBottomControls() {
View root = ((ViewStub) mActivity.findViewById(R.id.bottom_controls_stub)).inflate();
mTabGroupUi = TabManagementModuleProvider.getDelegate().createTabGroupUi(
root.findViewById(R.id.bottom_container_slot), mAppThemeColorProvider,
mScrimCoordinator, mOmniboxFocusStateSupplier);
mBottomControlsCoordinatorSupplier.set( mBottomControlsCoordinatorSupplier.set(
new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager, new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager,
mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer, mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer,
mFullscreenManager, mActivity.findViewById(R.id.bottom_controls_stub), mFullscreenManager, (ScrollingBottomViewResourceFrameLayout) root,
mAppThemeColorProvider, mShareDelegateSupplier, mScrimCoordinator, mAppThemeColorProvider, mTabGroupUi, mOverlayPanelVisibilitySupplier));
mOmniboxFocusStateSupplier, mOverlayPanelVisibilitySupplier));
} }
/** /**
* @return The coordinator for the bottom controls if it exists. * TODO(https://crbug.com/1164216): Remove this getter in favor of extracting tab group
* feature details from ChromeTabbedActivity directly.
* @return The coordinator for the tab group UI if it exists.
*/ */
public BottomControlsCoordinator getBottomControlsCoordinator() { public TabGroupUi getTabGroupUi() {
return mBottomControlsCoordinatorSupplier.get(); return mTabGroupUi;
} }
/** /**
......
...@@ -18,6 +18,11 @@ android_library("java") { ...@@ -18,6 +18,11 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView.java", "java/src/org/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView.java",
"java/src/org/chromium/chrome/browser/toolbar/ToolbarTabController.java", "java/src/org/chromium/chrome/browser/toolbar/ToolbarTabController.java",
"java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonController.java", "java/src/org/chromium/chrome/browser/toolbar/VoiceToolbarButtonController.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsContentDelegate.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout.java", "java/src/org/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout.java",
"java/src/org/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer.java", "java/src/org/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer.java",
"java/src/org/chromium/chrome/browser/toolbar/top/ActionModeController.java", "java/src/org/chromium/chrome/browser/toolbar/top/ActionModeController.java",
...@@ -47,6 +52,7 @@ android_library("java") { ...@@ -47,6 +52,7 @@ android_library("java") {
"//third_party/android_deps:android_support_v7_appcompat_java", "//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_full_java", "//ui/android:ui_full_java",
"//ui/android:ui_utils_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
resources_package = "org.chromium.chrome.browser.toolbar" resources_package = "org.chromium.chrome.browser.toolbar"
...@@ -63,6 +69,7 @@ android_resources("java_resources") { ...@@ -63,6 +69,7 @@ android_resources("java_resources") {
"java/res/drawable-xhdpi/btn_toolbar_home.png", "java/res/drawable-xhdpi/btn_toolbar_home.png",
"java/res/drawable-xxhdpi/btn_toolbar_home.png", "java/res/drawable-xxhdpi/btn_toolbar_home.png",
"java/res/drawable-xxxhdpi/btn_toolbar_home.png", "java/res/drawable-xxxhdpi/btn_toolbar_home.png",
"java/res/layout/bottom_control_container.xml",
"java/res/layout/control_container.xml", "java/res/layout/control_container.xml",
"java/res/values-sw600dp/dimens.xml", "java/res/values-sw600dp/dimens.xml",
"java/res/values/dimens.xml", "java/res/values/dimens.xml",
......
...@@ -6,4 +6,7 @@ ...@@ -6,4 +6,7 @@
<resources> <resources>
<!-- Tab Strip Dimensions --> <!-- Tab Strip Dimensions -->
<dimen name="tab_strip_height">0dp</dimen> <dimen name="tab_strip_height">0dp</dimen>
<!-- Bottom controls dimensions -->
<dimen name="bottom_controls_height">@dimen/min_touch_target_size</dimen>
</resources> </resources>
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.toolbar.bottom;
import android.app.Activity;
/**
* Interface for the bottom controls content UI. This UI delegates various operations to
* the implementation. This UI manages its own visibility through
* {@link BottomControlsCoordinator.BottomControlsVisibilityController}.
*/
public interface BottomControlsContentDelegate {
/**
* Called by the ToolbarManager when the system back button is pressed.
* @return Whether or not the TabGroupUi consumed the event.
*/
boolean onBackPressed();
/**
* Initialize the delegate on native initialization.
* @param activity Activity for the delegate.
* @param visibilityController Bottom controls visibility controller.
*/
void initializeWithNative(Activity activity,
BottomControlsCoordinator.BottomControlsVisibilityController visibilityController);
/** Destroy the delegate. */
void destroy();
}
...@@ -8,24 +8,17 @@ import android.annotation.SuppressLint; ...@@ -8,24 +8,17 @@ import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewStub;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.browser_controls.BrowserControlsSizer; import org.chromium.chrome.browser.browser_controls.BrowserControlsSizer;
import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager;
import org.chromium.chrome.browser.layouts.LayoutManager; import org.chromium.chrome.browser.layouts.LayoutManager;
import org.chromium.chrome.browser.layouts.LayoutStateProvider; import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tasks.tab_management.TabGroupUi;
import org.chromium.chrome.browser.tasks.tab_management.TabManagementModuleProvider;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.theme.ThemeColorProvider; import org.chromium.chrome.browser.theme.ThemeColorProvider;
import org.chromium.chrome.browser.toolbar.R;
import org.chromium.chrome.browser.toolbar.bottom.BottomControlsViewBinder.ViewHolder; import org.chromium.chrome.browser.toolbar.bottom.BottomControlsViewBinder.ViewHolder;
import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
...@@ -50,8 +43,8 @@ public class BottomControlsCoordinator { ...@@ -50,8 +43,8 @@ public class BottomControlsCoordinator {
/** The mediator that handles events from outside the bottom controls. */ /** The mediator that handles events from outside the bottom controls. */
private final BottomControlsMediator mMediator; private final BottomControlsMediator mMediator;
/** The coordinator for the split toolbar's bottom toolbar component. */ /** The Delegate for the split toolbar's bottom toolbar component UI operation. */
private @Nullable TabGroupUi mTabGroupUi; private @Nullable BottomControlsContentDelegate mContentDelegate;
/** /**
* Build the coordinator that manages the bottom controls. * Build the coordinator that manages the bottom controls.
...@@ -62,10 +55,7 @@ public class BottomControlsCoordinator { ...@@ -62,10 +55,7 @@ public class BottomControlsCoordinator {
* @param fullscreenManager A {@link FullscreenManager} to listen for fullscreen changes. * @param fullscreenManager A {@link FullscreenManager} to listen for fullscreen changes.
* @param stub The bottom controls {@link ViewStub} to inflate. * @param stub The bottom controls {@link ViewStub} to inflate.
* @param themeColorProvider The {@link ThemeColorProvider} for the bottom toolbar. * @param themeColorProvider The {@link ThemeColorProvider} for the bottom toolbar.
* @param shareDelegateSupplier The supplier for the {@link ShareDelegate} the bottom controls * @param contentDelegate Delegate for bottom controls UI operations.
* should use to share content.
* @param scrimCoordinator The {@link ScrimCoordinator} to control scrim view.
* @param omniboxFocusStateSupplier Supplier to access the focus state of the omnibox.
* @param overlayPanelVisibilitySupplier Notifies overlay panel visibility event. * @param overlayPanelVisibilitySupplier Notifies overlay panel visibility event.
* @param resourceManager A {@link ResourceManager} for loading textures into the compositor. * @param resourceManager A {@link ResourceManager} for loading textures into the compositor.
* @param layoutManager A {@link LayoutManagerImpl} to attach overlays to. * @param layoutManager A {@link LayoutManagerImpl} to attach overlays to.
...@@ -73,15 +63,10 @@ public class BottomControlsCoordinator { ...@@ -73,15 +63,10 @@ public class BottomControlsCoordinator {
@SuppressLint("CutPasteId") // Not actually cut and paste since it's View vs ViewGroup. @SuppressLint("CutPasteId") // Not actually cut and paste since it's View vs ViewGroup.
public BottomControlsCoordinator(Activity activity, WindowAndroid windowAndroid, public BottomControlsCoordinator(Activity activity, WindowAndroid windowAndroid,
LayoutManager layoutManager, ResourceManager resourceManager, LayoutManager layoutManager, ResourceManager resourceManager,
BrowserControlsSizer controlsSizer, FullscreenManager fullscreenManager, ViewStub stub, BrowserControlsSizer controlsSizer, FullscreenManager fullscreenManager,
ThemeColorProvider themeColorProvider, ScrollingBottomViewResourceFrameLayout root, ThemeColorProvider themeColorProvider,
ObservableSupplier<ShareDelegate> shareDelegateSupplier, BottomControlsContentDelegate contentDelegate,
ScrimCoordinator scrimCoordinator,
ObservableSupplier<Boolean> omniboxFocusStateSupplier,
ObservableSupplier<Boolean> overlayPanelVisibilitySupplier) { ObservableSupplier<Boolean> overlayPanelVisibilitySupplier) {
final ScrollingBottomViewResourceFrameLayout root =
(ScrollingBottomViewResourceFrameLayout) stub.inflate();
PropertyModel model = new PropertyModel(BottomControlsProperties.ALL_KEYS); PropertyModel model = new PropertyModel(BottomControlsProperties.ALL_KEYS);
ScrollingBottomViewSceneLayer sceneLayer = ScrollingBottomViewSceneLayer sceneLayer =
...@@ -103,12 +88,7 @@ public class BottomControlsCoordinator { ...@@ -103,12 +88,7 @@ public class BottomControlsCoordinator {
resourceManager.getDynamicResourceLoader().registerResource( resourceManager.getDynamicResourceLoader().registerResource(
root.getId(), root.getResourceAdapter()); root.getId(), root.getResourceAdapter());
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled() mContentDelegate = contentDelegate;
|| TabUiFeatureUtilities.isConditionalTabStripEnabled()) {
mTabGroupUi = TabManagementModuleProvider.getDelegate().createTabGroupUi(
root.findViewById(R.id.bottom_container_slot), themeColorProvider,
scrimCoordinator, omniboxFocusStateSupplier);
}
Toast.setGlobalExtraYOffset( Toast.setGlobalExtraYOffset(
root.getResources().getDimensionPixelSize(bottomControlsHeightId)); root.getResources().getDimensionPixelSize(bottomControlsHeightId));
...@@ -119,8 +99,8 @@ public class BottomControlsCoordinator { ...@@ -119,8 +99,8 @@ public class BottomControlsCoordinator {
sceneLayer.setIsVisible(mMediator.isCompositedViewVisible()); sceneLayer.setIsVisible(mMediator.isCompositedViewVisible());
layoutManager.addSceneOverlay(sceneLayer); layoutManager.addSceneOverlay(sceneLayer);
if (mTabGroupUi != null) { if (mContentDelegate != null) {
mTabGroupUi.initializeWithNative(activity, mMediator::setBottomControlsVisible); mContentDelegate.initializeWithNative(activity, mMediator::setBottomControlsVisible);
} }
} }
...@@ -143,24 +123,14 @@ public class BottomControlsCoordinator { ...@@ -143,24 +123,14 @@ public class BottomControlsCoordinator {
* @return Whether or not the back press event is consumed here. * @return Whether or not the back press event is consumed here.
*/ */
public boolean onBackPressed() { public boolean onBackPressed() {
return mTabGroupUi != null && mTabGroupUi.onBackPressed(); return mContentDelegate != null && mContentDelegate.onBackPressed();
} }
/** /**
* Clean up any state when the bottom controls component is destroyed. * Clean up any state when the bottom controls component is destroyed.
*/ */
public void destroy() { public void destroy() {
if (mTabGroupUi != null) mTabGroupUi.destroy(); if (mContentDelegate != null) mContentDelegate.destroy();
mMediator.destroy(); mMediator.destroy();
} }
/**
* @return {@link Supplier} that provides dialog visibility.
*/
public Supplier<Boolean> getTabGridDialogVisibilitySupplier() {
if (mTabGroupUi == null) {
return null;
}
return mTabGroupUi.getTabGridDialogVisibilitySupplier();
}
} }
...@@ -6,7 +6,7 @@ package org.chromium.chrome.browser.toolbar.bottom; ...@@ -6,7 +6,7 @@ package org.chromium.chrome.browser.toolbar.bottom;
import android.view.View; import android.view.View;
import org.chromium.chrome.R; import org.chromium.chrome.browser.toolbar.R;
import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment