OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/sync/sessions2/sessions_sync_manager.h" | 5 #include "chrome/browser/sync/sessions2/sessions_sync_manager.h" |
6 | 6 |
7 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
8 #include "chrome/browser/chrome_notification_types.h" | 8 #include "chrome/browser/chrome_notification_types.h" |
9 #include "chrome/browser/sessions/session_id.h" | 9 #include "chrome/browser/sessions/session_id.h" |
10 #include "chrome/browser/sessions/session_tab_helper.h" | 10 #include "chrome/browser/sessions/session_tab_helper.h" |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 | 271 |
272 void SetSyncData(const syncer::SyncDataList& data) { | 272 void SetSyncData(const syncer::SyncDataList& data) { |
273 test_processor_->SetSyncDataToReturn(data); | 273 test_processor_->SetSyncDataToReturn(data); |
274 } | 274 } |
275 | 275 |
276 syncer::SyncChangeList* FilterOutLocalHeaderChanges( | 276 syncer::SyncChangeList* FilterOutLocalHeaderChanges( |
277 syncer::SyncChangeList* list) { | 277 syncer::SyncChangeList* list) { |
278 syncer::SyncChangeList::iterator it = list->begin(); | 278 syncer::SyncChangeList::iterator it = list->begin(); |
279 bool found = false; | 279 bool found = false; |
280 while (it != list->end()) { | 280 while (it != list->end()) { |
281 if (it->sync_data().GetTag() == manager_->current_machine_tag()) { | 281 if (syncer::SyncDataLocal(it->sync_data()).GetTag() == |
| 282 manager_->current_machine_tag()) { |
282 EXPECT_TRUE(SyncChange::ACTION_ADD == it->change_type() || | 283 EXPECT_TRUE(SyncChange::ACTION_ADD == it->change_type() || |
283 SyncChange::ACTION_UPDATE == it->change_type()); | 284 SyncChange::ACTION_UPDATE == it->change_type()); |
284 it = list->erase(it); | 285 it = list->erase(it); |
285 found = true; | 286 found = true; |
286 } else { | 287 } else { |
287 ++it; | 288 ++it; |
288 } | 289 } |
289 } | 290 } |
290 EXPECT_TRUE(found); | 291 EXPECT_TRUE(found); |
291 return list; | 292 return list; |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 // presence of no other session activity, once and only once. | 631 // presence of no other session activity, once and only once. |
631 TEST_F(SessionsSyncManagerTest, MergeLocalSessionNoTabs) { | 632 TEST_F(SessionsSyncManagerTest, MergeLocalSessionNoTabs) { |
632 syncer::SyncChangeList out; | 633 syncer::SyncChangeList out; |
633 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); | 634 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); |
634 EXPECT_FALSE(manager()->current_machine_tag().empty()); | 635 EXPECT_FALSE(manager()->current_machine_tag().empty()); |
635 | 636 |
636 EXPECT_EQ(2U, out.size()); | 637 EXPECT_EQ(2U, out.size()); |
637 EXPECT_TRUE(out[0].IsValid()); | 638 EXPECT_TRUE(out[0].IsValid()); |
638 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); | 639 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); |
639 const SyncData data(out[0].sync_data()); | 640 const SyncData data(out[0].sync_data()); |
640 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); | 641 EXPECT_EQ(manager()->current_machine_tag(), |
| 642 syncer::SyncDataLocal(data).GetTag()); |
641 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 643 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
642 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 644 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
643 EXPECT_TRUE(specifics.has_header()); | 645 EXPECT_TRUE(specifics.has_header()); |
644 const sync_pb::SessionHeader& header_s = specifics.header(); | 646 const sync_pb::SessionHeader& header_s = specifics.header(); |
645 EXPECT_TRUE(header_s.has_device_type()); | 647 EXPECT_TRUE(header_s.has_device_type()); |
646 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); | 648 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); |
647 EXPECT_EQ(0, header_s.window_size()); | 649 EXPECT_EQ(0, header_s.window_size()); |
648 | 650 |
649 EXPECT_TRUE(out[1].IsValid()); | 651 EXPECT_TRUE(out[1].IsValid()); |
650 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type()); | 652 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type()); |
651 const SyncData data_2(out[1].sync_data()); | 653 const SyncData data_2(out[1].sync_data()); |
652 EXPECT_EQ(manager()->current_machine_tag(), data_2.GetTag()); | 654 EXPECT_EQ(manager()->current_machine_tag(), |
| 655 syncer::SyncDataLocal(data_2).GetTag()); |
653 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); | 656 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); |
654 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); | 657 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); |
655 EXPECT_TRUE(specifics2.has_header()); | 658 EXPECT_TRUE(specifics2.has_header()); |
656 const sync_pb::SessionHeader& header_s2 = specifics2.header(); | 659 const sync_pb::SessionHeader& header_s2 = specifics2.header(); |
657 EXPECT_EQ(0, header_s2.window_size()); | 660 EXPECT_EQ(0, header_s2.window_size()); |
658 | 661 |
659 // Now take that header node and feed it in as input. | 662 // Now take that header node and feed it in as input. |
660 SyncData d(SyncData::CreateRemoteData(1, data.GetSpecifics(), base::Time())); | 663 SyncData d(SyncData::CreateRemoteData(1, data.GetSpecifics(), base::Time())); |
661 syncer::SyncDataList in(&d, &d + 1); | 664 syncer::SyncDataList in(&d, &d + 1); |
662 out.clear(); | 665 out.clear(); |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 AddTabsToSyncDataList(tabs1, &foreign_data); | 821 AddTabsToSyncDataList(tabs1, &foreign_data); |
819 | 822 |
820 syncer::SyncChangeList output; | 823 syncer::SyncChangeList output; |
821 InitWithSyncDataTakeOutput(foreign_data, &output); | 824 InitWithSyncDataTakeOutput(foreign_data, &output); |
822 ASSERT_EQ(4U, output.size()); | 825 ASSERT_EQ(4U, output.size()); |
823 | 826 |
824 // Verify the local header. | 827 // Verify the local header. |
825 EXPECT_TRUE(output[0].IsValid()); | 828 EXPECT_TRUE(output[0].IsValid()); |
826 EXPECT_EQ(SyncChange::ACTION_ADD, output[0].change_type()); | 829 EXPECT_EQ(SyncChange::ACTION_ADD, output[0].change_type()); |
827 const SyncData data(output[0].sync_data()); | 830 const SyncData data(output[0].sync_data()); |
828 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); | 831 EXPECT_EQ(manager()->current_machine_tag(), |
| 832 syncer::SyncDataLocal(data).GetTag()); |
829 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 833 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
830 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 834 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
831 EXPECT_TRUE(specifics.has_header()); | 835 EXPECT_TRUE(specifics.has_header()); |
832 const sync_pb::SessionHeader& header_s = specifics.header(); | 836 const sync_pb::SessionHeader& header_s = specifics.header(); |
833 EXPECT_TRUE(header_s.has_device_type()); | 837 EXPECT_TRUE(header_s.has_device_type()); |
834 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); | 838 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); |
835 EXPECT_EQ(0, header_s.window_size()); | 839 EXPECT_EQ(0, header_s.window_size()); |
836 | 840 |
837 // Verify the tab node creations and updates with content. | 841 // Verify the tab node creations and updates with content. |
838 for (int i = 1; i < 3; i++) { | 842 for (int i = 1; i < 3; i++) { |
839 EXPECT_TRUE(output[i].IsValid()); | 843 EXPECT_TRUE(output[i].IsValid()); |
840 const SyncData data(output[i].sync_data()); | 844 const SyncData data(output[i].sync_data()); |
841 EXPECT_TRUE(StartsWithASCII(data.GetTag(), | 845 EXPECT_TRUE(StartsWithASCII(syncer::SyncDataLocal(data).GetTag(), |
842 manager()->current_machine_tag(), true)); | 846 manager()->current_machine_tag(), true)); |
843 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 847 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
844 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 848 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
845 } | 849 } |
846 EXPECT_EQ(SyncChange::ACTION_ADD, output[1].change_type()); | 850 EXPECT_EQ(SyncChange::ACTION_ADD, output[1].change_type()); |
847 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[2].change_type()); | 851 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[2].change_type()); |
848 EXPECT_TRUE(output[2].sync_data().GetSpecifics().session().has_tab()); | 852 EXPECT_TRUE(output[2].sync_data().GetSpecifics().session().has_tab()); |
849 | 853 |
850 // Verify the header was updated to reflect window state. | 854 // Verify the header was updated to reflect window state. |
851 EXPECT_TRUE(output[3].IsValid()); | 855 EXPECT_TRUE(output[3].IsValid()); |
852 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[3].change_type()); | 856 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[3].change_type()); |
853 const SyncData data_2(output[3].sync_data()); | 857 const SyncData data_2(output[3].sync_data()); |
854 EXPECT_EQ(manager()->current_machine_tag(), data_2.GetTag()); | 858 EXPECT_EQ(manager()->current_machine_tag(), |
| 859 syncer::SyncDataLocal(data_2).GetTag()); |
855 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); | 860 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); |
856 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); | 861 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); |
857 EXPECT_TRUE(specifics2.has_header()); | 862 EXPECT_TRUE(specifics2.has_header()); |
858 const sync_pb::SessionHeader& header_s2 = specifics2.header(); | 863 const sync_pb::SessionHeader& header_s2 = specifics2.header(); |
859 EXPECT_EQ(1, header_s2.window_size()); | 864 EXPECT_EQ(1, header_s2.window_size()); |
860 | 865 |
861 // Verify foreign data. | 866 // Verify foreign data. |
862 std::vector<const SyncedSession*> foreign_sessions; | 867 std::vector<const SyncedSession*> foreign_sessions; |
863 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); | 868 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); |
864 std::vector<std::vector<SessionID::id_type> > session_reference; | 869 std::vector<std::vector<SessionID::id_type> > session_reference; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 EXPECT_EQ(5U, changes.size()); | 1006 EXPECT_EQ(5U, changes.size()); |
1002 std::set<std::string> expected_tags(&tag, &tag + 1); | 1007 std::set<std::string> expected_tags(&tag, &tag + 1); |
1003 for (int i = 0; i < 5; i++) | 1008 for (int i = 0; i < 5; i++) |
1004 expected_tags.insert(TabNodePool2::TabIdToTag(tag, i)); | 1009 expected_tags.insert(TabNodePool2::TabIdToTag(tag, i)); |
1005 | 1010 |
1006 for (int i = 0; i < 5; i++) { | 1011 for (int i = 0; i < 5; i++) { |
1007 SCOPED_TRACE(changes[i].ToString()); | 1012 SCOPED_TRACE(changes[i].ToString()); |
1008 EXPECT_TRUE(changes[i].IsValid()); | 1013 EXPECT_TRUE(changes[i].IsValid()); |
1009 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[i].change_type()); | 1014 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[i].change_type()); |
1010 EXPECT_TRUE(changes[i].sync_data().IsValid()); | 1015 EXPECT_TRUE(changes[i].sync_data().IsValid()); |
1011 EXPECT_EQ(1U, expected_tags.erase(changes[i].sync_data().GetTag())); | 1016 EXPECT_EQ(1U, |
| 1017 expected_tags.erase( |
| 1018 syncer::SyncDataLocal(changes[i].sync_data()).GetTag())); |
1012 } | 1019 } |
1013 } | 1020 } |
1014 | 1021 |
1015 // Write a foreign session to a node, with the tabs arriving first, and then | 1022 // Write a foreign session to a node, with the tabs arriving first, and then |
1016 // retrieve it. | 1023 // retrieve it. |
1017 TEST_F(SessionsSyncManagerTest, WriteForeignSessionToNodeTabsFirst) { | 1024 TEST_F(SessionsSyncManagerTest, WriteForeignSessionToNodeTabsFirst) { |
1018 InitWithNoSyncData(); | 1025 InitWithNoSyncData(); |
1019 | 1026 |
1020 // Fill an instance of session specifics with a foreign session's data. | 1027 // Fill an instance of session specifics with a foreign session's data. |
1021 std::string tag = "tag1"; | 1028 std::string tag = "tag1"; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1124 // notification triggers association of the tab, and the subsequent window | 1131 // notification triggers association of the tab, and the subsequent window |
1125 // update. So we should see 4 changes at the SyncChangeProcessor. | 1132 // update. So we should see 4 changes at the SyncChangeProcessor. |
1126 ASSERT_EQ(4U, out.size()); | 1133 ASSERT_EQ(4U, out.size()); |
1127 | 1134 |
1128 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[0].change_type()); | 1135 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[0].change_type()); |
1129 ASSERT_TRUE(out[0].sync_data().GetSpecifics().session().has_header()); | 1136 ASSERT_TRUE(out[0].sync_data().GetSpecifics().session().has_header()); |
1130 EXPECT_EQ(SyncChange::ACTION_ADD, out[1].change_type()); | 1137 EXPECT_EQ(SyncChange::ACTION_ADD, out[1].change_type()); |
1131 int tab_node_id = out[1].sync_data().GetSpecifics().session().tab_node_id(); | 1138 int tab_node_id = out[1].sync_data().GetSpecifics().session().tab_node_id(); |
1132 EXPECT_EQ(TabNodePool2::TabIdToTag( | 1139 EXPECT_EQ(TabNodePool2::TabIdToTag( |
1133 manager()->current_machine_tag(), tab_node_id), | 1140 manager()->current_machine_tag(), tab_node_id), |
1134 out[1].sync_data().GetTag()); | 1141 syncer::SyncDataLocal(out[1].sync_data()).GetTag()); |
1135 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type()); | 1142 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type()); |
1136 ASSERT_TRUE(out[2].sync_data().GetSpecifics().session().has_tab()); | 1143 ASSERT_TRUE(out[2].sync_data().GetSpecifics().session().has_tab()); |
1137 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[3].change_type()); | 1144 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[3].change_type()); |
1138 ASSERT_TRUE(out[3].sync_data().GetSpecifics().session().has_header()); | 1145 ASSERT_TRUE(out[3].sync_data().GetSpecifics().session().has_header()); |
1139 | 1146 |
1140 // Verify the actual content. | 1147 // Verify the actual content. |
1141 const sync_pb::SessionHeader& session_header = | 1148 const sync_pb::SessionHeader& session_header = |
1142 out[3].sync_data().GetSpecifics().session().header(); | 1149 out[3].sync_data().GetSpecifics().session().header(); |
1143 ASSERT_EQ(1, session_header.window_size()); | 1150 ASSERT_EQ(1, session_header.window_size()); |
1144 EXPECT_EQ(1, session_header.window(0).tab_size()); | 1151 EXPECT_EQ(1, session_header.window(0).tab_size()); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 SyncData d(SyncData::CreateRemoteData( | 1230 SyncData d(SyncData::CreateRemoteData( |
1224 1, changes[0].sync_data().GetSpecifics(), base::Time())); | 1231 1, changes[0].sync_data().GetSpecifics(), base::Time())); |
1225 syncer::SyncDataList in(&d, &d + 1); | 1232 syncer::SyncDataList in(&d, &d + 1); |
1226 changes.clear(); | 1233 changes.clear(); |
1227 TearDown(); | 1234 TearDown(); |
1228 SetUp(); | 1235 SetUp(); |
1229 InitWithSyncDataTakeOutput(in, &changes); | 1236 InitWithSyncDataTakeOutput(in, &changes); |
1230 EXPECT_EQ(1U, FilterOutLocalHeaderChanges(&changes)->size()); | 1237 EXPECT_EQ(1U, FilterOutLocalHeaderChanges(&changes)->size()); |
1231 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[0].change_type()); | 1238 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[0].change_type()); |
1232 EXPECT_EQ(TabNodePool2::TabIdToTag(local_tag, tab_node_id), | 1239 EXPECT_EQ(TabNodePool2::TabIdToTag(local_tag, tab_node_id), |
1233 changes[0].sync_data().GetTag()); | 1240 syncer::SyncDataLocal(changes[0].sync_data()).GetTag()); |
1234 } | 1241 } |
1235 | 1242 |
1236 // Test that things work if a tab is initially ignored. | 1243 // Test that things work if a tab is initially ignored. |
1237 TEST_F(SessionsSyncManagerTest, AssociateWindowsDontReloadTabs) { | 1244 TEST_F(SessionsSyncManagerTest, AssociateWindowsDontReloadTabs) { |
1238 syncer::SyncChangeList out; | 1245 syncer::SyncChangeList out; |
1239 // Go to a URL that is ignored by session syncing. | 1246 // Go to a URL that is ignored by session syncing. |
1240 AddTab(browser(), GURL("chrome://preferences/")); | 1247 AddTab(browser(), GURL("chrome://preferences/")); |
1241 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); | 1248 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); |
1242 ASSERT_EQ(2U, out.size()); // Header add and update. | 1249 ASSERT_EQ(2U, out.size()); // Header add and update. |
1243 EXPECT_EQ( | 1250 EXPECT_EQ( |
1244 0, | 1251 0, |
1245 out[1].sync_data().GetSpecifics().session().header().window_size()); | 1252 out[1].sync_data().GetSpecifics().session().header().window_size()); |
1246 out.clear(); | 1253 out.clear(); |
1247 | 1254 |
1248 // Go to a sync-interesting URL. | 1255 // Go to a sync-interesting URL. |
1249 NavigateAndCommitActiveTab(GURL("http://foo2")); | 1256 NavigateAndCommitActiveTab(GURL("http://foo2")); |
1250 | 1257 |
1251 EXPECT_EQ(3U, out.size()); // Tab add, update, and header update. | 1258 EXPECT_EQ(3U, out.size()); // Tab add, update, and header update. |
1252 | 1259 |
1253 EXPECT_TRUE(StartsWithASCII(out[0].sync_data().GetTag(), | 1260 EXPECT_TRUE( |
1254 manager()->current_machine_tag(), true)); | 1261 StartsWithASCII(syncer::SyncDataLocal(out[0].sync_data()).GetTag(), |
| 1262 manager()->current_machine_tag(), |
| 1263 true)); |
1255 EXPECT_EQ(manager()->current_machine_tag(), | 1264 EXPECT_EQ(manager()->current_machine_tag(), |
1256 out[0].sync_data().GetSpecifics().session().session_tag()); | 1265 out[0].sync_data().GetSpecifics().session().session_tag()); |
1257 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); | 1266 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); |
1258 | 1267 |
1259 EXPECT_TRUE(StartsWithASCII(out[1].sync_data().GetTag(), | 1268 EXPECT_TRUE( |
1260 manager()->current_machine_tag(), true)); | 1269 StartsWithASCII(syncer::SyncDataLocal(out[1].sync_data()).GetTag(), |
| 1270 manager()->current_machine_tag(), |
| 1271 true)); |
1261 EXPECT_EQ(manager()->current_machine_tag(), | 1272 EXPECT_EQ(manager()->current_machine_tag(), |
1262 out[1].sync_data().GetSpecifics().session().session_tag()); | 1273 out[1].sync_data().GetSpecifics().session().session_tag()); |
1263 EXPECT_TRUE(out[1].sync_data().GetSpecifics().session().has_tab()); | 1274 EXPECT_TRUE(out[1].sync_data().GetSpecifics().session().has_tab()); |
1264 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type()); | 1275 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type()); |
1265 | 1276 |
1266 EXPECT_TRUE(out[2].IsValid()); | 1277 EXPECT_TRUE(out[2].IsValid()); |
1267 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type()); | 1278 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type()); |
1268 const SyncData data(out[2].sync_data()); | 1279 const SyncData data(out[2].sync_data()); |
1269 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); | 1280 EXPECT_EQ(manager()->current_machine_tag(), |
| 1281 syncer::SyncDataLocal(data).GetTag()); |
1270 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 1282 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
1271 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 1283 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
1272 EXPECT_TRUE(specifics.has_header()); | 1284 EXPECT_TRUE(specifics.has_header()); |
1273 const sync_pb::SessionHeader& header_s = specifics.header(); | 1285 const sync_pb::SessionHeader& header_s = specifics.header(); |
1274 EXPECT_EQ(1, header_s.window_size()); | 1286 EXPECT_EQ(1, header_s.window_size()); |
1275 EXPECT_EQ(1, header_s.window(0).tab_size()); | 1287 EXPECT_EQ(1, header_s.window(0).tab_size()); |
1276 } | 1288 } |
1277 | 1289 |
1278 // Tests that the SyncSessionManager responds to local tab events properly. | 1290 // Tests that the SyncSessionManager responds to local tab events properly. |
1279 TEST_F(SessionsSyncManagerTest, OnLocalTabModified) { | 1291 TEST_F(SessionsSyncManagerTest, OnLocalTabModified) { |
(...skipping 23 matching lines...) Expand all Loading... |
1303 // = 6 total header updates. | 1315 // = 6 total header updates. |
1304 // 12 total updates. | 1316 // 12 total updates. |
1305 ASSERT_EQ(12U, out.size()); | 1317 ASSERT_EQ(12U, out.size()); |
1306 | 1318 |
1307 // Verify the tab node creations and updates to ensure the SyncProcessor | 1319 // Verify the tab node creations and updates to ensure the SyncProcessor |
1308 // sees the right operations. | 1320 // sees the right operations. |
1309 for (int i = 0; i < 12; i++) { | 1321 for (int i = 0; i < 12; i++) { |
1310 SCOPED_TRACE(i); | 1322 SCOPED_TRACE(i); |
1311 EXPECT_TRUE(out[i].IsValid()); | 1323 EXPECT_TRUE(out[i].IsValid()); |
1312 const SyncData data(out[i].sync_data()); | 1324 const SyncData data(out[i].sync_data()); |
1313 EXPECT_TRUE(StartsWithASCII(data.GetTag(), | 1325 EXPECT_TRUE(StartsWithASCII(syncer::SyncDataLocal(data).GetTag(), |
1314 manager()->current_machine_tag(), true)); | 1326 manager()->current_machine_tag(), true)); |
1315 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 1327 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
1316 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 1328 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
1317 if (i % 6 == 0) { | 1329 if (i % 6 == 0) { |
1318 // First thing on an AddTab is a no-op header update for parented tab. | 1330 // First thing on an AddTab is a no-op header update for parented tab. |
1319 EXPECT_EQ(header.SerializeAsString(), | 1331 EXPECT_EQ(header.SerializeAsString(), |
1320 data.GetSpecifics().SerializeAsString()); | 1332 data.GetSpecifics().SerializeAsString()); |
1321 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); | 1333 EXPECT_EQ(manager()->current_machine_tag(), |
| 1334 syncer::SyncDataLocal(data).GetTag()); |
1322 } else if (i % 6 == 1) { | 1335 } else if (i % 6 == 1) { |
1323 // Next, the TabNodePool should create the tab node. | 1336 // Next, the TabNodePool should create the tab node. |
1324 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type()); | 1337 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type()); |
1325 EXPECT_EQ(TabNodePool2::TabIdToTag( | 1338 EXPECT_EQ(TabNodePool2::TabIdToTag( |
1326 manager()->current_machine_tag(), | 1339 manager()->current_machine_tag(), |
1327 data.GetSpecifics().session().tab_node_id()), | 1340 data.GetSpecifics().session().tab_node_id()), |
1328 data.GetTag()); | 1341 syncer::SyncDataLocal(data).GetTag()); |
1329 } else if (i % 6 == 2) { | 1342 } else if (i % 6 == 2) { |
1330 // Then we see the tab update to the URL. | 1343 // Then we see the tab update to the URL. |
1331 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); | 1344 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); |
1332 EXPECT_EQ(TabNodePool2::TabIdToTag( | 1345 EXPECT_EQ(TabNodePool2::TabIdToTag( |
1333 manager()->current_machine_tag(), | 1346 manager()->current_machine_tag(), |
1334 data.GetSpecifics().session().tab_node_id()), | 1347 data.GetSpecifics().session().tab_node_id()), |
1335 data.GetTag()); | 1348 syncer::SyncDataLocal(data).GetTag()); |
1336 ASSERT_TRUE(specifics.has_tab()); | 1349 ASSERT_TRUE(specifics.has_tab()); |
1337 } else if (i % 6 == 3) { | 1350 } else if (i % 6 == 3) { |
1338 // The header needs to be updated to reflect the new window state. | 1351 // The header needs to be updated to reflect the new window state. |
1339 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); | 1352 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); |
1340 EXPECT_TRUE(specifics.has_header()); | 1353 EXPECT_TRUE(specifics.has_header()); |
1341 } else if (i % 6 == 4) { | 1354 } else if (i % 6 == 4) { |
1342 // Now we move on to NavigateAndCommit. Update the tab. | 1355 // Now we move on to NavigateAndCommit. Update the tab. |
1343 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); | 1356 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); |
1344 EXPECT_EQ(TabNodePool2::TabIdToTag( | 1357 EXPECT_EQ(TabNodePool2::TabIdToTag( |
1345 manager()->current_machine_tag(), | 1358 manager()->current_machine_tag(), |
1346 data.GetSpecifics().session().tab_node_id()), | 1359 data.GetSpecifics().session().tab_node_id()), |
1347 data.GetTag()); | 1360 syncer::SyncDataLocal(data).GetTag()); |
1348 ASSERT_TRUE(specifics.has_tab()); | 1361 ASSERT_TRUE(specifics.has_tab()); |
1349 } else if (i % 6 == 5) { | 1362 } else if (i % 6 == 5) { |
1350 // The header needs to be updated to reflect the new window state. | 1363 // The header needs to be updated to reflect the new window state. |
1351 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); | 1364 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); |
1352 ASSERT_TRUE(specifics.has_header()); | 1365 ASSERT_TRUE(specifics.has_header()); |
1353 header = data.GetSpecifics(); | 1366 header = data.GetSpecifics(); |
1354 } | 1367 } |
1355 } | 1368 } |
1356 | 1369 |
1357 // Verify the actual content to ensure sync sees the right data. | 1370 // Verify the actual content to ensure sync sees the right data. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1396 ASSERT_EQ(6U, out.size()); | 1409 ASSERT_EQ(6U, out.size()); |
1397 | 1410 |
1398 // Check that this machine's data is not included in the foreign windows. | 1411 // Check that this machine's data is not included in the foreign windows. |
1399 std::vector<const SyncedSession*> foreign_sessions; | 1412 std::vector<const SyncedSession*> foreign_sessions; |
1400 ASSERT_FALSE(manager()->GetAllForeignSessions(&foreign_sessions)); | 1413 ASSERT_FALSE(manager()->GetAllForeignSessions(&foreign_sessions)); |
1401 | 1414 |
1402 // Verify the header. | 1415 // Verify the header. |
1403 EXPECT_TRUE(out[0].IsValid()); | 1416 EXPECT_TRUE(out[0].IsValid()); |
1404 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); | 1417 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); |
1405 const SyncData data(out[0].sync_data()); | 1418 const SyncData data(out[0].sync_data()); |
1406 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); | 1419 EXPECT_EQ(manager()->current_machine_tag(), |
| 1420 syncer::SyncDataLocal(data).GetTag()); |
1407 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 1421 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
1408 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 1422 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
1409 EXPECT_TRUE(specifics.has_header()); | 1423 EXPECT_TRUE(specifics.has_header()); |
1410 const sync_pb::SessionHeader& header_s = specifics.header(); | 1424 const sync_pb::SessionHeader& header_s = specifics.header(); |
1411 EXPECT_TRUE(header_s.has_device_type()); | 1425 EXPECT_TRUE(header_s.has_device_type()); |
1412 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); | 1426 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); |
1413 EXPECT_EQ(0, header_s.window_size()); | 1427 EXPECT_EQ(0, header_s.window_size()); |
1414 | 1428 |
1415 // Verify the tab node creations and updates with content. | 1429 // Verify the tab node creations and updates with content. |
1416 for (int i = 1; i < 5; i++) { | 1430 for (int i = 1; i < 5; i++) { |
1417 EXPECT_TRUE(out[i].IsValid()); | 1431 EXPECT_TRUE(out[i].IsValid()); |
1418 const SyncData data(out[i].sync_data()); | 1432 const SyncData data(out[i].sync_data()); |
1419 EXPECT_TRUE(StartsWithASCII(data.GetTag(), | 1433 EXPECT_TRUE(StartsWithASCII(syncer::SyncDataLocal(data).GetTag(), |
1420 manager()->current_machine_tag(), true)); | 1434 manager()->current_machine_tag(), true)); |
1421 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); | 1435 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); |
1422 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); | 1436 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); |
1423 if (i % 2 == 1) { | 1437 if (i % 2 == 1) { |
1424 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type()); | 1438 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type()); |
1425 } else { | 1439 } else { |
1426 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); | 1440 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); |
1427 EXPECT_TRUE(specifics.has_tab()); | 1441 EXPECT_TRUE(specifics.has_tab()); |
1428 } | 1442 } |
1429 } | 1443 } |
1430 | 1444 |
1431 // Verify the header was updated to reflect new window state. | 1445 // Verify the header was updated to reflect new window state. |
1432 EXPECT_TRUE(out[5].IsValid()); | 1446 EXPECT_TRUE(out[5].IsValid()); |
1433 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[5].change_type()); | 1447 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[5].change_type()); |
1434 const SyncData data_2(out[5].sync_data()); | 1448 const SyncData data_2(out[5].sync_data()); |
1435 EXPECT_EQ(manager()->current_machine_tag(), data_2.GetTag()); | 1449 EXPECT_EQ(manager()->current_machine_tag(), |
| 1450 syncer::SyncDataLocal(data_2).GetTag()); |
1436 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); | 1451 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); |
1437 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); | 1452 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); |
1438 EXPECT_TRUE(specifics2.has_header()); | 1453 EXPECT_TRUE(specifics2.has_header()); |
1439 const sync_pb::SessionHeader& header_s2 = specifics2.header(); | 1454 const sync_pb::SessionHeader& header_s2 = specifics2.header(); |
1440 EXPECT_EQ(1, header_s2.window_size()); | 1455 EXPECT_EQ(1, header_s2.window_size()); |
1441 | 1456 |
1442 // Verify TabLinks. | 1457 // Verify TabLinks. |
1443 SessionsSyncManager::TabLinksMap tab_map = manager()->local_tab_map_; | 1458 SessionsSyncManager::TabLinksMap tab_map = manager()->local_tab_map_; |
1444 ASSERT_EQ(2U, tab_map.size()); | 1459 ASSERT_EQ(2U, tab_map.size()); |
1445 // Tabs are ordered by sessionid in tab_map, so should be able to traverse | 1460 // Tabs are ordered by sessionid in tab_map, so should be able to traverse |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1495 std::vector<const SyncedSession*> foreign_sessions; | 1510 std::vector<const SyncedSession*> foreign_sessions; |
1496 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); | 1511 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); |
1497 ASSERT_EQ(2U, foreign_sessions.size()); | 1512 ASSERT_EQ(2U, foreign_sessions.size()); |
1498 foreign_sessions.clear(); | 1513 foreign_sessions.clear(); |
1499 | 1514 |
1500 // Now garbage collect and verify the non-stale session is still there. | 1515 // Now garbage collect and verify the non-stale session is still there. |
1501 manager()->DoGarbageCollection(); | 1516 manager()->DoGarbageCollection(); |
1502 ASSERT_EQ(5U, output.size()); | 1517 ASSERT_EQ(5U, output.size()); |
1503 EXPECT_EQ(SyncChange::ACTION_DELETE, output[0].change_type()); | 1518 EXPECT_EQ(SyncChange::ACTION_DELETE, output[0].change_type()); |
1504 const SyncData data(output[0].sync_data()); | 1519 const SyncData data(output[0].sync_data()); |
1505 EXPECT_EQ(tag1, data.GetTag()); | 1520 EXPECT_EQ(tag1, syncer::SyncDataLocal(data).GetTag()); |
1506 for (int i = 1; i < 5; i++) { | 1521 for (int i = 1; i < 5; i++) { |
1507 EXPECT_EQ(SyncChange::ACTION_DELETE, output[i].change_type()); | 1522 EXPECT_EQ(SyncChange::ACTION_DELETE, output[i].change_type()); |
1508 const SyncData data(output[i].sync_data()); | 1523 const SyncData data(output[i].sync_data()); |
1509 EXPECT_EQ(TabNodePool2::TabIdToTag(tag1, i), data.GetTag()); | 1524 EXPECT_EQ(TabNodePool2::TabIdToTag(tag1, i), |
| 1525 syncer::SyncDataLocal(data).GetTag()); |
1510 } | 1526 } |
1511 | 1527 |
1512 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); | 1528 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); |
1513 ASSERT_EQ(1U, foreign_sessions.size()); | 1529 ASSERT_EQ(1U, foreign_sessions.size()); |
1514 std::vector<std::vector<SessionID::id_type> > session_reference; | 1530 std::vector<std::vector<SessionID::id_type> > session_reference; |
1515 session_reference.push_back(tab_list2); | 1531 session_reference.push_back(tab_list2); |
1516 helper()->VerifySyncedSession(tag2, session_reference, | 1532 helper()->VerifySyncedSession(tag2, session_reference, |
1517 *(foreign_sessions[0])); | 1533 *(foreign_sessions[0])); |
1518 } | 1534 } |
1519 | 1535 |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1711 ASSERT_FALSE(observer.notified_of_refresh()); | 1727 ASSERT_FALSE(observer.notified_of_refresh()); |
1712 InitWithNoSyncData(); | 1728 InitWithNoSyncData(); |
1713 AddTab(browser(), GURL("http://foo1")); | 1729 AddTab(browser(), GURL("http://foo1")); |
1714 EXPECT_FALSE(observer.notified_of_refresh()); | 1730 EXPECT_FALSE(observer.notified_of_refresh()); |
1715 NavigateAndCommitActiveTab(GURL("chrome://newtab/#open_tabs")); | 1731 NavigateAndCommitActiveTab(GURL("chrome://newtab/#open_tabs")); |
1716 EXPECT_TRUE(observer.notified_of_refresh()); | 1732 EXPECT_TRUE(observer.notified_of_refresh()); |
1717 } | 1733 } |
1718 #endif // defined(OS_ANDROID) || defined(OS_IOS) | 1734 #endif // defined(OS_ANDROID) || defined(OS_IOS) |
1719 | 1735 |
1720 } // namespace browser_sync | 1736 } // namespace browser_sync |
OLD | NEW |