Commit 35c6e7ce authored by Yue Zhang's avatar Yue Zhang Committed by Commit Bot

[Instant Start] Fix bug in GridTabSwitcher initialization (3)

Since GridTabSwitcher has an instance of TabGridDialog, having instant
start on means that TabGridDialog can also be constructed before native.
Similar to http://crrev.com/c/2328038, this CL moves things in
TabGridDialog that should happen after native is ready to appropriate
places.

Bug: 1111391
Change-Id: I7c4e96a715b5867aa62fdd30d9e7dc2a8436d306
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2329154
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#795656}
parent 21c89bbc
...@@ -169,7 +169,6 @@ public class TabGridDialogMediator { ...@@ -169,7 +169,6 @@ public class TabGridDialogMediator {
updateGridTabSwitcher(); updateGridTabSwitcher();
} }
}; };
mTabModelSelector.getTabModelFilterProvider().addTabModelFilterObserver(mTabModelObserver);
mTabModelSelectorObserver = new EmptyTabModelSelectorObserver() { mTabModelSelectorObserver = new EmptyTabModelSelectorObserver() {
@Override @Override
...@@ -221,6 +220,7 @@ public class TabGridDialogMediator { ...@@ -221,6 +220,7 @@ public class TabGridDialogMediator {
TabGroupTitleEditor tabGroupTitleEditor) { TabGroupTitleEditor tabGroupTitleEditor) {
mTabSelectionEditorController = tabSelectionEditorController; mTabSelectionEditorController = tabSelectionEditorController;
mTabGroupTitleEditor = tabGroupTitleEditor; mTabGroupTitleEditor = tabGroupTitleEditor;
mTabModelSelector.getTabModelFilterProvider().addTabModelFilterObserver(mTabModelObserver);
assert mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter() assert mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter()
instanceof TabGroupModelFilter; instanceof TabGroupModelFilter;
......
...@@ -710,6 +710,24 @@ public class TabGridDialogTest { ...@@ -710,6 +710,24 @@ public class TabGridDialogTest {
mRenderTestRule.render(dialogView, "5_tabs_select_last"); mRenderTestRule.render(dialogView, "5_tabs_select_last");
} }
@Test
@MediumTest
@Features.EnableFeatures({ChromeFeatureList.INSTANT_START})
public void testSetup_WithInstantStart() {
final ChromeTabbedActivity cta = mActivityTestRule.getActivity();
prepareTabsWithThumbnail(mActivityTestRule, 2, 0, "about:blank");
enterTabSwitcher(cta);
verifyTabSwitcherCardCount(cta, 2);
mergeAllNormalTabsToAGroup(cta);
verifyTabSwitcherCardCount(cta, 1);
openDialogFromTabSwitcherAndVerify(cta, 2, null);
// Verify TabModelObserver is correctly setup by checking if tab grid dialog changes with
// tab closure.
closeFirstTabInDialog();
verifyShowingDialog(cta, 1, null);
}
private void openDialogFromTabSwitcherAndVerify( private void openDialogFromTabSwitcherAndVerify(
ChromeTabbedActivity cta, int tabCount, String customizedTitle) { ChromeTabbedActivity cta, int tabCount, String customizedTitle) {
clickFirstCardFromTabSwitcher(cta); clickFirstCardFromTabSwitcher(cta);
......
...@@ -193,7 +193,11 @@ public class TabGridDialogMediatorUnitTest { ...@@ -193,7 +193,11 @@ public class TabGridDialogMediatorUnitTest {
mMediator = new TabGridDialogMediator(mContext, mDialogController, mModel, mMediator = new TabGridDialogMediator(mContext, mDialogController, mModel,
mTabModelSelector, mTabCreatorManager, mTabSwitcherResetHandler, mTabModelSelector, mTabCreatorManager, mTabSwitcherResetHandler,
mAnimationSourceViewProvider, mShareDelegateSupplier, ""); mAnimationSourceViewProvider, mShareDelegateSupplier, "");
// TabModelObserver is registered when native is ready.
assertThat(mTabModelObserverCaptor.getAllValues().isEmpty(), equalTo(true));
mMediator.initWithNative(mTabSelectionEditorController, mTabGroupTitleEditor); mMediator.initWithNative(mTabSelectionEditorController, mTabGroupTitleEditor);
assertThat(mTabModelObserverCaptor.getAllValues().isEmpty(), equalTo(false));
} }
@Test @Test
......
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