Commit 556bf45e authored by Xi Han's avatar Xi Han Committed by Commit Bot

[Instant Start] 2-stage initialization of LayoutManager [2/2]

This is a follow up CL for https://crrev.com/c/1999001.

Bug: 1041865
Change-Id: I35142ce77bbab8987336f509cc7d9cbdd34103d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2118621Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Xi Han <hanxi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753383}
parent 21e565f2
......@@ -65,6 +65,7 @@ android_library("java") {
"//chrome/android/third_party/compositor_animator:compositor_animator_java",
"//chrome/browser/flags:java",
"//chrome/browser/preferences:java",
"//chrome/browser/ui/messages/android:java",
"//components/browser_ui/widget/android:java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_deps:com_google_android_material_material_java",
......
......@@ -142,7 +142,7 @@ public class StartSurfaceCoordinator implements StartSurface {
: null);
if (mTabSwitcher != null) {
mTabSwitcher.initWithNative(mActivity, mActivity.getTabContentManager(),
mActivity.getCompositorViewHolder().getDynamicResourceLoader());
mActivity.getCompositorViewHolder().getDynamicResourceLoader(), mActivity);
}
if (mTasksSurface != null) {
mTasksSurface.onFinishNativeInitialization(
......
......@@ -105,7 +105,7 @@ public class TasksSurfaceCoordinator implements TasksSurface {
ChromeActivity activity = (ChromeActivity) context;
((TabSwitcherCoordinator) mTabSwitcher)
.initWithNative(activity, activity.getTabContentManager(),
activity.getCompositorViewHolder().getDynamicResourceLoader());
activity.getCompositorViewHolder().getDynamicResourceLoader(), activity);
mMediator.initWithNative(fakeboxDelegate);
}
......
......@@ -53,7 +53,7 @@ public class TabManagementDelegateImpl implements TabManagementDelegate {
return new TabSwitcherCoordinator(activity, activity.getLifecycleDispatcher(),
activity.getTabModelSelector(), activity.getTabContentManager(),
activity.getFullscreenManager(), activity,
activity.getMenuOrKeyboardActionController(), activity, containerView,
activity.getMenuOrKeyboardActionController(), containerView,
activity.getShareDelegateSupplier(),
TabUiFeatureUtilities.isTabGroupsAndroidContinuationEnabled()
&& SysUtils.isLowEndDevice()
......@@ -66,7 +66,7 @@ public class TabManagementDelegateImpl implements TabManagementDelegate {
return new TabSwitcherCoordinator(activity, activity.getLifecycleDispatcher(),
activity.getTabModelSelector(), activity.getTabContentManager(),
activity.getFullscreenManager(), activity,
activity.getMenuOrKeyboardActionController(), activity, containerView,
activity.getMenuOrKeyboardActionController(), containerView,
activity.getShareDelegateSupplier(), TabListCoordinator.TabListMode.CAROUSEL);
}
......
......@@ -17,6 +17,7 @@ import org.chromium.base.Callback;
import org.chromium.chrome.browser.compositor.layouts.Layout;
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
import org.chromium.ui.resources.dynamics.ViewResourceAdapter;
......@@ -47,7 +48,8 @@ public interface TabSwitcher {
* Called when the native initialization is completed.
*/
void initWithNative(Context context, TabContentManager tabContentManager,
DynamicResourceLoader dynamicResourceLoader);
DynamicResourceLoader dynamicResourceLoader,
SnackbarManager.SnackbarManageable snackbarManageable);
// TODO(960196): Remove the following interfaces when the associated bug is resolved.
/**
......
......@@ -73,7 +73,7 @@ public class TabSwitcherCoordinator
private NewTabTileCoordinator mNewTabTileCoordinator;
private TabAttributeCache mTabAttributeCache;
private ViewGroup mContainer;
private SnackbarManager.SnackbarManageable mSnackbarManageable;
private TabCreatorManager mTabCreatorManager;
private final MenuOrKeyboardActionController
.MenuOrKeyboardActionHandler mTabSwitcherMenuActionHandler =
......@@ -96,14 +96,13 @@ public class TabSwitcherCoordinator
public TabSwitcherCoordinator(Context context, ActivityLifecycleDispatcher lifecycleDispatcher,
TabModelSelector tabModelSelector, TabContentManager tabContentManager,
ChromeFullscreenManager fullscreenManager, TabCreatorManager tabCreatorManager,
MenuOrKeyboardActionController menuOrKeyboardActionController,
SnackbarManager.SnackbarManageable snackbarManageable, ViewGroup container,
MenuOrKeyboardActionController menuOrKeyboardActionController, ViewGroup container,
ObservableSupplier<ShareDelegate> shareDelegateSupplier,
@TabListCoordinator.TabListMode int mode) {
mMode = mode;
mTabModelSelector = tabModelSelector;
mContainer = container;
mSnackbarManageable = snackbarManageable;
mTabCreatorManager = tabCreatorManager;
PropertyModel containerViewModel = new PropertyModel(TabListContainerProperties.ALL_KEYS);
......@@ -140,12 +139,9 @@ public class TabSwitcherCoordinator
((ChromeTabbedActivity) context).getCompositorViewHolder(), this, mMediator,
this::getTabGridDialogAnimationSourceView, shareDelegateSupplier);
mUndoGroupSnackbarController =
new UndoGroupSnackbarController(context, tabModelSelector, snackbarManageable);
mMediator.setTabGridDialogController(mTabGridDialogCoordinator.getDialogController());
} else {
mTabGridDialogCoordinator = null;
mUndoGroupSnackbarController = null;
}
if (mode == TabListCoordinator.TabListMode.GRID) {
......@@ -156,20 +152,10 @@ public class TabSwitcherCoordinator
}
if (TabUiFeatureUtilities.isTabGridLayoutAndroidNewTabTileEnabled()) {
mNewTabTileCoordinator =
new NewTabTileCoordinator(tabModelSelector, tabCreatorManager);
mTabListCoordinator.registerItemType(TabProperties.UiType.NEW_TAB_TILE,
new LayoutViewBuilder(R.layout.new_tab_tile_card_item),
NewTabTileViewBinder::bind);
}
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()
&& !TabSwitcherMediator.isShowingTabsInMRUOrder()) {
mTabGridIphDialogCoordinator = new TabGridIphDialogCoordinator(context, container);
IphMessageService iphMessageService =
new IphMessageService(mTabGridIphDialogCoordinator.getIphController());
mMessageCardProviderCoordinator.subscribeMessageService(iphMessageService);
}
}
if (TabUiFeatureUtilities.ENABLE_SEARCH_CHIP.getValue()
......@@ -192,7 +178,8 @@ public class TabSwitcherCoordinator
@Override
public void initWithNative(Context context, TabContentManager tabContentManager,
DynamicResourceLoader dynamicResourceLoader) {
DynamicResourceLoader dynamicResourceLoader,
SnackbarManager.SnackbarManageable snackbarManageable) {
// For tab switcher in carousel mode, the selection editor should still follow grid style.
int selectionEditorMode = mMode == TabListCoordinator.TabListMode.CAROUSEL
? TabListCoordinator.TabListMode.GRID
......@@ -209,6 +196,13 @@ public class TabSwitcherCoordinator
mMultiThumbnailCardProvider.initWithNative();
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()) {
mUndoGroupSnackbarController =
new UndoGroupSnackbarController(context, mTabModelSelector, snackbarManageable);
} else {
mUndoGroupSnackbarController = null;
}
if (mMode == TabListCoordinator.TabListMode.GRID) {
if (CachedFeatureFlags.isEnabled(ChromeFeatureList.CLOSE_TAB_SUGGESTIONS)) {
mTabSuggestionsOrchestrator =
......@@ -220,6 +214,19 @@ public class TabSwitcherCoordinator
mMessageCardProviderCoordinator.subscribeMessageService(
tabSuggestionMessageService);
}
if (TabUiFeatureUtilities.isTabGridLayoutAndroidNewTabTileEnabled()) {
mNewTabTileCoordinator =
new NewTabTileCoordinator(mTabModelSelector, mTabCreatorManager);
}
if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled()
&& !TabSwitcherMediator.isShowingTabsInMRUOrder()) {
mTabGridIphDialogCoordinator = new TabGridIphDialogCoordinator(context, mContainer);
IphMessageService iphMessageService =
new IphMessageService(mTabGridIphDialogCoordinator.getIphController());
mMessageCardProviderCoordinator.subscribeMessageService(iphMessageService);
}
}
}
......
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