| Index: components/sync_sessions/synced_session_tracker_unittest.cc
|
| diff --git a/components/sync_sessions/synced_session_tracker_unittest.cc b/components/sync_sessions/synced_session_tracker_unittest.cc
|
| index 9da19516ab02d95158085b50b6e7adf256585763..04cc0fd7daea01c2430ee783523372b848377f74 100644
|
| --- a/components/sync_sessions/synced_session_tracker_unittest.cc
|
| +++ b/components/sync_sessions/synced_session_tracker_unittest.cc
|
| @@ -61,6 +61,10 @@ TEST_F(SyncedSessionTrackerTest, PutWindowInSession) {
|
| GetTracker()->PutWindowInSession(kTag, 0);
|
| SyncedSession* session = GetTracker()->GetSession(kTag);
|
| ASSERT_EQ(1U, session->windows.size());
|
| +
|
| + // Doing it again should have no effect.
|
| + GetTracker()->PutWindowInSession(kTag, 0);
|
| + ASSERT_EQ(1U, session->windows.size());
|
| // Should clean up memory on its own.
|
| }
|
|
|
| @@ -324,7 +328,7 @@ TEST_F(SyncedSessionTrackerTest, SessionTracking) {
|
| // Window 1 was closed, along with tab 5.
|
| GetTracker()->PutTabInWindow(kTag, 0, 6); // No longer unmapped.
|
| // Session 2 should not be affected.
|
| - GetTracker()->CleanupForeignSession(kTag);
|
| + GetTracker()->CleanupSession(kTag);
|
|
|
| // Verify that only those parts of the session not owned have been removed.
|
| ASSERT_EQ(1U, session1->windows.size());
|
| @@ -560,4 +564,38 @@ TEST_F(SyncedSessionTrackerTest, ReassociateTabUnmapped) {
|
| ASSERT_EQ(1U, GetTabNodePool()->Capacity());
|
| }
|
|
|
| +TEST_F(SyncedSessionTrackerTest, ReassociateTabMapMismatch) {
|
| + std::set<int> free_node_ids;
|
| +
|
| + // First create the old tab in an unmapped state.
|
| + GetTracker()->SetLocalSessionTag(kTag);
|
| + EXPECT_FALSE(GetTracker()->IsLocalTabNodeAssociated(kTabNode));
|
| + GetTracker()->ReassociateLocalTab(kTabNode, kTab1);
|
| + EXPECT_TRUE(GetTracker()->IsLocalTabNodeAssociated(kTabNode));
|
| + EXPECT_TRUE(GetTracker()->IsTabUnmappedForTesting(kTab1));
|
| +
|
| + // Map an unseen tab to a window, then reassociate the existing tab to the
|
| + // mapped tab id.
|
| + GetTracker()->ResetSessionTracking(kTag);
|
| + EXPECT_TRUE(GetTracker()->IsLocalTabNodeAssociated(kTabNode));
|
| + GetTracker()->PutWindowInSession(kTag, kWindow1);
|
| + GetTracker()->PutTabInWindow(kTag, kWindow1, kTab2);
|
| + GetTracker()->CleanupLocalTabs(&free_node_ids);
|
| + EXPECT_FALSE(GetTracker()->IsTabUnmappedForTesting(kTab1));
|
| + EXPECT_FALSE(GetTracker()->IsTabUnmappedForTesting(kTab2));
|
| + GetTracker()->ReassociateLocalTab(kTabNode, kTab2);
|
| + EXPECT_TRUE(free_node_ids.empty());
|
| + EXPECT_FALSE(GetTracker()->IsTabUnmappedForTesting(kTab1));
|
| + EXPECT_FALSE(GetTracker()->IsTabUnmappedForTesting(kTab2));
|
| +
|
| + // Now that it's been mapped, it should be accessible both via the
|
| + // GetSession as well as GetTab.
|
| + SyncedSession* session = GetTracker()->GetSession(kTag);
|
| + ASSERT_EQ(GetTracker()->GetTab(kTag, kTab2),
|
| + session->windows[kWindow1]->wrapped_window.tabs[0].get());
|
| + ASSERT_EQ(session->tab_node_ids.size(),
|
| + session->tab_node_ids.count(kTabNode));
|
| + ASSERT_EQ(1U, GetTabNodePool()->Capacity());
|
| +}
|
| +
|
| } // namespace sync_sessions
|
|
|