Chromium Code Reviews| Index: components/sync_sessions/sessions_sync_manager_unittest.cc |
| diff --git a/components/sync_sessions/sessions_sync_manager_unittest.cc b/components/sync_sessions/sessions_sync_manager_unittest.cc |
| index ab5cbfde94db4bca324d1de09698e5347f57bed4..85e0a2ac40e5b0af9b466b962644b7a534d3c1ee 100644 |
| --- a/components/sync_sessions/sessions_sync_manager_unittest.cc |
| +++ b/components/sync_sessions/sessions_sync_manager_unittest.cc |
| @@ -700,21 +700,34 @@ class SessionsSyncManagerTest : public testing::Test { |
| } |
| TestSyncedTabDelegate* AddTab(SessionID::id_type window_id, |
| const std::string& url) { |
| - return AddTab(window_id, url, base::Time()); |
| + return AddTab(window_id, url, base::Time::Now()); |
| } |
| void NavigateTab(TestSyncedTabDelegate* delegate, |
| const std::string& url, |
| - base::Time time) { |
| + base::Time time, |
| + ui::PageTransition transition) { |
| auto entry = base::MakeUnique<sessions::SerializedNavigationEntry>( |
| SerializedNavigationEntryTestHelper::CreateNavigation(url, kTitle)); |
| SerializedNavigationEntryTestHelper::SetTimestamp(time, entry.get()); |
| + SerializedNavigationEntryTestHelper::SetTransitionType(transition, |
| + entry.get()); |
| delegate->AppendEntry(std::move(entry)); |
| delegate->set_current_entry_index(delegate->GetCurrentEntryIndex() + 1); |
| router_->NotifyNav(delegate); |
| } |
| + void NavigateTab(TestSyncedTabDelegate* delegate, |
| + const std::string& url, |
| + base::Time time) { |
| + NavigateTab(delegate, url, time, ui::PAGE_TRANSITION_TYPED); |
| + } |
| void NavigateTab(TestSyncedTabDelegate* delegate, const std::string& url) { |
| - NavigateTab(delegate, url, base::Time()); |
| + NavigateTab(delegate, url, base::Time::Now()); |
| + } |
| + void NavigateTab(TestSyncedTabDelegate* delegate, |
| + const std::string& url, |
| + ui::PageTransition transition) { |
| + NavigateTab(delegate, url, base::Time::Now(), transition); |
| } |
| TestSyncedWindowDelegate* AddWindow() { |
| @@ -2403,4 +2416,52 @@ TEST_F(SessionsSyncManagerTest, PlaceholderConflictAcrossWindows) { |
| out[1].sync_data().GetSpecifics().session().tab().window_id()); |
| } |
| +// Tests that task ids are generated for navigations on local tabs. |
| +TEST_F(SessionsSyncManagerTest, TrackTasksOnLocalTabModified) { |
| + SyncChangeList out; |
| + TestSyncedWindowDelegate* window = AddWindow(); |
| + InitWithSyncDataTakeOutput(SyncDataList(), &out); |
| + SessionID::id_type window_id = window->GetSessionId(); |
| + ASSERT_FALSE(manager()->current_machine_tag().empty()); |
| + out.clear(); |
| + |
| + // Tab 1 |
| + NavigateTab(AddTab(window_id, kFoo1), kFoo2, ui::PAGE_TRANSITION_TYPED); |
| + // Tab 2 |
| + NavigateTab(AddTab(window_id, kBar1), kBar2, ui::PAGE_TRANSITION_LINK); |
| + |
| + // We only test changes for tab add and tab update, and ingore header updates. |
|
Nicolas Zea
2017/04/17 23:18:46
nit: ingore -> ignore
shenchao
2017/04/19 22:10:01
Done.
|
| + // Sync data of adding Tab 1 change |
| + sync_pb::SessionTab tab = |
| + SyncDataLocal(out[1].sync_data()).GetSpecifics().session().tab(); |
|
Nicolas Zea
2017/04/17 23:18:46
If you're ignoring header updates, you can use Fil
shenchao
2017/04/19 22:10:01
Done.
|
| + EXPECT_EQ(tab.navigation_size(), 1); |
| + EXPECT_EQ(tab.navigation(0).global_id(), tab.navigation(0).task_id()); |
| + EXPECT_TRUE(tab.navigation(0).ancestor_task_id().empty()); |
| + |
| + // Sync data of updating Tab 1 change |
| + tab = SyncDataLocal(out[3].sync_data()).GetSpecifics().session().tab(); |
| + EXPECT_EQ(tab.navigation_size(), 2); |
| + // navigation(0) and navigation(1) are two seperated tasks. |
| + EXPECT_EQ(tab.navigation(0).global_id(), tab.navigation(0).task_id()); |
| + EXPECT_TRUE(tab.navigation(0).ancestor_task_id().empty()); |
| + EXPECT_EQ(tab.navigation(1).global_id(), tab.navigation(1).task_id()); |
| + EXPECT_TRUE(tab.navigation(1).ancestor_task_id().empty()); |
| + |
| + // Sync data of adding Tab 2 change |
| + tab = SyncDataLocal(out[6].sync_data()).GetSpecifics().session().tab(); |
| + EXPECT_EQ(tab.navigation_size(), 1); |
| + EXPECT_EQ(tab.navigation(0).global_id(), tab.navigation(0).task_id()); |
| + EXPECT_TRUE(tab.navigation(0).ancestor_task_id().empty()); |
| + |
| + // Sync data of updating Tab 2 change |
| + tab = SyncDataLocal(out[8].sync_data()).GetSpecifics().session().tab(); |
| + EXPECT_EQ(tab.navigation_size(), 2); |
| + EXPECT_EQ(tab.navigation(0).global_id(), tab.navigation(0).task_id()); |
| + EXPECT_TRUE(tab.navigation(0).ancestor_task_id().empty()); |
| + EXPECT_EQ(tab.navigation(1).global_id(), tab.navigation(1).task_id()); |
| + // navigation(1) is a subtask of navigation(0). |
| + EXPECT_EQ(tab.navigation(1).ancestor_task_id_size(), 1); |
| + EXPECT_EQ(tab.navigation(1).ancestor_task_id(0), tab.navigation(0).task_id()); |
| +} |
| + |
| } // namespace sync_sessions |