Commit 4d87b1a9 authored by Lijin Shen's avatar Lijin Shen Committed by Commit Bot

Remove the incorrect assumption about PseudoTab

Remove the incorrect assumption which causes consistent assertion
failure on multi-instance tab merging.

Bug: 1100460, 1080810
Change-Id: Ief512fa3450e0999fdd9588a5ec6b7b6536691d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2318446Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Lijin Shen <lazzzis@google.com>
Cr-Commit-Position: refs/heads/master@{#798179}
parent 7cfb2e1f
...@@ -86,8 +86,13 @@ public class PseudoTab { ...@@ -86,8 +86,13 @@ public class PseudoTab {
synchronized (sLock) { synchronized (sLock) {
PseudoTab cached = sAllTabs.get(tab.getId()); PseudoTab cached = sAllTabs.get(tab.getId());
if (cached != null && cached.hasRealTab()) { if (cached != null && cached.hasRealTab()) {
assert cached.getTab() == tab; if (cached.getTab() == tab) {
return cached; return cached;
} else {
assert cached.getTab().getWebContents() == null
|| cached.getTab().getWebContents().getTopLevelNativeWindow() == null;
return new PseudoTab(tab);
}
} }
// We need to upgrade a pre-native Tab to a post-native Tab. // We need to upgrade a pre-native Tab to a post-native Tab.
return new PseudoTab(tab); return new PseudoTab(tab);
......
...@@ -70,6 +70,7 @@ public class PseudoTabUnitTest { ...@@ -70,6 +70,7 @@ public class PseudoTabUnitTest {
private TabImpl mTab1; private TabImpl mTab1;
private TabImpl mTab2; private TabImpl mTab2;
private TabImpl mTab3; private TabImpl mTab3;
private TabImpl mTab1Copy;
@Before @Before
public void setUp() { public void setUp() {
...@@ -78,6 +79,7 @@ public class PseudoTabUnitTest { ...@@ -78,6 +79,7 @@ public class PseudoTabUnitTest {
mTab1 = TabUiUnitTestUtils.prepareTab(TAB1_ID, mCriticalPersistedTabData); mTab1 = TabUiUnitTestUtils.prepareTab(TAB1_ID, mCriticalPersistedTabData);
mTab2 = TabUiUnitTestUtils.prepareTab(TAB2_ID, mCriticalPersistedTabData); mTab2 = TabUiUnitTestUtils.prepareTab(TAB2_ID, mCriticalPersistedTabData);
mTab3 = TabUiUnitTestUtils.prepareTab(TAB3_ID, mCriticalPersistedTabData); mTab3 = TabUiUnitTestUtils.prepareTab(TAB3_ID, mCriticalPersistedTabData);
mTab1Copy = TabUiUnitTestUtils.prepareTab(TAB1_ID, mCriticalPersistedTabData);
doReturn(mTabModelFilterProvider).when(mTabModelSelector).getTabModelFilterProvider(); doReturn(mTabModelFilterProvider).when(mTabModelSelector).getTabModelFilterProvider();
} }
...@@ -139,6 +141,14 @@ public class PseudoTabUnitTest { ...@@ -139,6 +141,14 @@ public class PseudoTabUnitTest {
Assert.assertEquals(tab1, tab1prime); Assert.assertEquals(tab1, tab1prime);
} }
@Test
public void fromTab_obsoleteCache() {
PseudoTab tab1 = PseudoTab.fromTab(mTab1);
PseudoTab tab1copy = PseudoTab.fromTab(mTab1Copy);
Assert.assertNotEquals(tab1, tab1copy);
Assert.assertEquals(tab1.getId(), tab1copy.getId());
}
@Test @Test
public void fromTab_cached_upgrade() { public void fromTab_cached_upgrade() {
PseudoTab tab1 = PseudoTab.fromTabId(TAB1_ID); PseudoTab tab1 = PseudoTab.fromTabId(TAB1_ID);
......
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