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