Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/sync/sessions2/sessions_sync_manager_unittest.cc

Issue 217063005: Separate SyncData methods into three groups, local, remote, and common. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@syncapi
Patch Set: Reorganize Local and Remote based on offline feedback. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 (it->sync_data().AsLocal().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
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(), data.AsLocal().GetTag());
641 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 642 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
642 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 643 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
643 EXPECT_TRUE(specifics.has_header()); 644 EXPECT_TRUE(specifics.has_header());
644 const sync_pb::SessionHeader& header_s = specifics.header(); 645 const sync_pb::SessionHeader& header_s = specifics.header();
645 EXPECT_TRUE(header_s.has_device_type()); 646 EXPECT_TRUE(header_s.has_device_type());
646 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); 647 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name());
647 EXPECT_EQ(0, header_s.window_size()); 648 EXPECT_EQ(0, header_s.window_size());
648 649
649 EXPECT_TRUE(out[1].IsValid()); 650 EXPECT_TRUE(out[1].IsValid());
650 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type()); 651 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type());
651 const SyncData data_2(out[1].sync_data()); 652 const SyncData data_2(out[1].sync_data());
652 EXPECT_EQ(manager()->current_machine_tag(), data_2.GetTag()); 653 EXPECT_EQ(manager()->current_machine_tag(), data_2.AsLocal().GetTag());
653 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); 654 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session());
654 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); 655 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag());
655 EXPECT_TRUE(specifics2.has_header()); 656 EXPECT_TRUE(specifics2.has_header());
656 const sync_pb::SessionHeader& header_s2 = specifics2.header(); 657 const sync_pb::SessionHeader& header_s2 = specifics2.header();
657 EXPECT_EQ(0, header_s2.window_size()); 658 EXPECT_EQ(0, header_s2.window_size());
658 659
659 // Now take that header node and feed it in as input. 660 // Now take that header node and feed it in as input.
660 SyncData d(SyncData::CreateRemoteData(1, data.GetSpecifics(), base::Time())); 661 SyncData d(SyncData::CreateRemoteData(1, data.GetSpecifics(), base::Time()));
661 syncer::SyncDataList in(&d, &d + 1); 662 syncer::SyncDataList in(&d, &d + 1);
662 out.clear(); 663 out.clear();
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 AddTabsToSyncDataList(tabs1, &foreign_data); 819 AddTabsToSyncDataList(tabs1, &foreign_data);
819 820
820 syncer::SyncChangeList output; 821 syncer::SyncChangeList output;
821 InitWithSyncDataTakeOutput(foreign_data, &output); 822 InitWithSyncDataTakeOutput(foreign_data, &output);
822 ASSERT_EQ(4U, output.size()); 823 ASSERT_EQ(4U, output.size());
823 824
824 // Verify the local header. 825 // Verify the local header.
825 EXPECT_TRUE(output[0].IsValid()); 826 EXPECT_TRUE(output[0].IsValid());
826 EXPECT_EQ(SyncChange::ACTION_ADD, output[0].change_type()); 827 EXPECT_EQ(SyncChange::ACTION_ADD, output[0].change_type());
827 const SyncData data(output[0].sync_data()); 828 const SyncData data(output[0].sync_data());
828 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); 829 EXPECT_EQ(manager()->current_machine_tag(), data.AsLocal().GetTag());
829 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 830 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
830 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 831 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
831 EXPECT_TRUE(specifics.has_header()); 832 EXPECT_TRUE(specifics.has_header());
832 const sync_pb::SessionHeader& header_s = specifics.header(); 833 const sync_pb::SessionHeader& header_s = specifics.header();
833 EXPECT_TRUE(header_s.has_device_type()); 834 EXPECT_TRUE(header_s.has_device_type());
834 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); 835 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name());
835 EXPECT_EQ(0, header_s.window_size()); 836 EXPECT_EQ(0, header_s.window_size());
836 837
837 // Verify the tab node creations and updates with content. 838 // Verify the tab node creations and updates with content.
838 for (int i = 1; i < 3; i++) { 839 for (int i = 1; i < 3; i++) {
839 EXPECT_TRUE(output[i].IsValid()); 840 EXPECT_TRUE(output[i].IsValid());
840 const SyncData data(output[i].sync_data()); 841 const SyncData data(output[i].sync_data());
841 EXPECT_TRUE(StartsWithASCII(data.GetTag(), 842 EXPECT_TRUE(StartsWithASCII(data.AsLocal().GetTag(),
842 manager()->current_machine_tag(), true)); 843 manager()->current_machine_tag(), true));
843 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 844 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
844 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 845 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
845 } 846 }
846 EXPECT_EQ(SyncChange::ACTION_ADD, output[1].change_type()); 847 EXPECT_EQ(SyncChange::ACTION_ADD, output[1].change_type());
847 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[2].change_type()); 848 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[2].change_type());
848 EXPECT_TRUE(output[2].sync_data().GetSpecifics().session().has_tab()); 849 EXPECT_TRUE(output[2].sync_data().GetSpecifics().session().has_tab());
849 850
850 // Verify the header was updated to reflect window state. 851 // Verify the header was updated to reflect window state.
851 EXPECT_TRUE(output[3].IsValid()); 852 EXPECT_TRUE(output[3].IsValid());
852 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[3].change_type()); 853 EXPECT_EQ(SyncChange::ACTION_UPDATE, output[3].change_type());
853 const SyncData data_2(output[3].sync_data()); 854 const SyncData data_2(output[3].sync_data());
854 EXPECT_EQ(manager()->current_machine_tag(), data_2.GetTag()); 855 EXPECT_EQ(manager()->current_machine_tag(), data_2.AsLocal().GetTag());
855 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); 856 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session());
856 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); 857 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag());
857 EXPECT_TRUE(specifics2.has_header()); 858 EXPECT_TRUE(specifics2.has_header());
858 const sync_pb::SessionHeader& header_s2 = specifics2.header(); 859 const sync_pb::SessionHeader& header_s2 = specifics2.header();
859 EXPECT_EQ(1, header_s2.window_size()); 860 EXPECT_EQ(1, header_s2.window_size());
860 861
861 // Verify foreign data. 862 // Verify foreign data.
862 std::vector<const SyncedSession*> foreign_sessions; 863 std::vector<const SyncedSession*> foreign_sessions;
863 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); 864 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions));
864 std::vector<std::vector<SessionID::id_type> > session_reference; 865 std::vector<std::vector<SessionID::id_type> > session_reference;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 EXPECT_EQ(5U, changes.size()); 1002 EXPECT_EQ(5U, changes.size());
1002 std::set<std::string> expected_tags(&tag, &tag + 1); 1003 std::set<std::string> expected_tags(&tag, &tag + 1);
1003 for (int i = 0; i < 5; i++) 1004 for (int i = 0; i < 5; i++)
1004 expected_tags.insert(TabNodePool2::TabIdToTag(tag, i)); 1005 expected_tags.insert(TabNodePool2::TabIdToTag(tag, i));
1005 1006
1006 for (int i = 0; i < 5; i++) { 1007 for (int i = 0; i < 5; i++) {
1007 SCOPED_TRACE(changes[i].ToString()); 1008 SCOPED_TRACE(changes[i].ToString());
1008 EXPECT_TRUE(changes[i].IsValid()); 1009 EXPECT_TRUE(changes[i].IsValid());
1009 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[i].change_type()); 1010 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[i].change_type());
1010 EXPECT_TRUE(changes[i].sync_data().IsValid()); 1011 EXPECT_TRUE(changes[i].sync_data().IsValid());
1011 EXPECT_EQ(1U, expected_tags.erase(changes[i].sync_data().GetTag())); 1012 EXPECT_EQ(1U,
1013 expected_tags.erase(changes[i].sync_data().AsLocal().GetTag()));
1012 } 1014 }
1013 } 1015 }
1014 1016
1015 // Write a foreign session to a node, with the tabs arriving first, and then 1017 // Write a foreign session to a node, with the tabs arriving first, and then
1016 // retrieve it. 1018 // retrieve it.
1017 TEST_F(SessionsSyncManagerTest, WriteForeignSessionToNodeTabsFirst) { 1019 TEST_F(SessionsSyncManagerTest, WriteForeignSessionToNodeTabsFirst) {
1018 InitWithNoSyncData(); 1020 InitWithNoSyncData();
1019 1021
1020 // Fill an instance of session specifics with a foreign session's data. 1022 // Fill an instance of session specifics with a foreign session's data.
1021 std::string tag = "tag1"; 1023 std::string tag = "tag1";
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 // notification triggers association of the tab, and the subsequent window 1126 // notification triggers association of the tab, and the subsequent window
1125 // update. So we should see 4 changes at the SyncChangeProcessor. 1127 // update. So we should see 4 changes at the SyncChangeProcessor.
1126 ASSERT_EQ(4U, out.size()); 1128 ASSERT_EQ(4U, out.size());
1127 1129
1128 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[0].change_type()); 1130 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[0].change_type());
1129 ASSERT_TRUE(out[0].sync_data().GetSpecifics().session().has_header()); 1131 ASSERT_TRUE(out[0].sync_data().GetSpecifics().session().has_header());
1130 EXPECT_EQ(SyncChange::ACTION_ADD, out[1].change_type()); 1132 EXPECT_EQ(SyncChange::ACTION_ADD, out[1].change_type());
1131 int tab_node_id = out[1].sync_data().GetSpecifics().session().tab_node_id(); 1133 int tab_node_id = out[1].sync_data().GetSpecifics().session().tab_node_id();
1132 EXPECT_EQ(TabNodePool2::TabIdToTag( 1134 EXPECT_EQ(TabNodePool2::TabIdToTag(
1133 manager()->current_machine_tag(), tab_node_id), 1135 manager()->current_machine_tag(), tab_node_id),
1134 out[1].sync_data().GetTag()); 1136 out[1].sync_data().AsLocal().GetTag());
1135 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type()); 1137 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type());
1136 ASSERT_TRUE(out[2].sync_data().GetSpecifics().session().has_tab()); 1138 ASSERT_TRUE(out[2].sync_data().GetSpecifics().session().has_tab());
1137 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[3].change_type()); 1139 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[3].change_type());
1138 ASSERT_TRUE(out[3].sync_data().GetSpecifics().session().has_header()); 1140 ASSERT_TRUE(out[3].sync_data().GetSpecifics().session().has_header());
1139 1141
1140 // Verify the actual content. 1142 // Verify the actual content.
1141 const sync_pb::SessionHeader& session_header = 1143 const sync_pb::SessionHeader& session_header =
1142 out[3].sync_data().GetSpecifics().session().header(); 1144 out[3].sync_data().GetSpecifics().session().header();
1143 ASSERT_EQ(1, session_header.window_size()); 1145 ASSERT_EQ(1, session_header.window_size());
1144 EXPECT_EQ(1, session_header.window(0).tab_size()); 1146 EXPECT_EQ(1, session_header.window(0).tab_size());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 SyncData d(SyncData::CreateRemoteData( 1225 SyncData d(SyncData::CreateRemoteData(
1224 1, changes[0].sync_data().GetSpecifics(), base::Time())); 1226 1, changes[0].sync_data().GetSpecifics(), base::Time()));
1225 syncer::SyncDataList in(&d, &d + 1); 1227 syncer::SyncDataList in(&d, &d + 1);
1226 changes.clear(); 1228 changes.clear();
1227 TearDown(); 1229 TearDown();
1228 SetUp(); 1230 SetUp();
1229 InitWithSyncDataTakeOutput(in, &changes); 1231 InitWithSyncDataTakeOutput(in, &changes);
1230 EXPECT_EQ(1U, FilterOutLocalHeaderChanges(&changes)->size()); 1232 EXPECT_EQ(1U, FilterOutLocalHeaderChanges(&changes)->size());
1231 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[0].change_type()); 1233 EXPECT_EQ(SyncChange::ACTION_DELETE, changes[0].change_type());
1232 EXPECT_EQ(TabNodePool2::TabIdToTag(local_tag, tab_node_id), 1234 EXPECT_EQ(TabNodePool2::TabIdToTag(local_tag, tab_node_id),
1233 changes[0].sync_data().GetTag()); 1235 changes[0].sync_data().AsLocal().GetTag());
1234 } 1236 }
1235 1237
1236 // Test that things work if a tab is initially ignored. 1238 // Test that things work if a tab is initially ignored.
1237 TEST_F(SessionsSyncManagerTest, AssociateWindowsDontReloadTabs) { 1239 TEST_F(SessionsSyncManagerTest, AssociateWindowsDontReloadTabs) {
1238 syncer::SyncChangeList out; 1240 syncer::SyncChangeList out;
1239 // Go to a URL that is ignored by session syncing. 1241 // Go to a URL that is ignored by session syncing.
1240 AddTab(browser(), GURL("chrome://preferences/")); 1242 AddTab(browser(), GURL("chrome://preferences/"));
1241 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); 1243 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out);
1242 ASSERT_EQ(2U, out.size()); // Header add and update. 1244 ASSERT_EQ(2U, out.size()); // Header add and update.
1243 EXPECT_EQ( 1245 EXPECT_EQ(
1244 0, 1246 0,
1245 out[1].sync_data().GetSpecifics().session().header().window_size()); 1247 out[1].sync_data().GetSpecifics().session().header().window_size());
1246 out.clear(); 1248 out.clear();
1247 1249
1248 // Go to a sync-interesting URL. 1250 // Go to a sync-interesting URL.
1249 NavigateAndCommitActiveTab(GURL("http://foo2")); 1251 NavigateAndCommitActiveTab(GURL("http://foo2"));
1250 1252
1251 EXPECT_EQ(3U, out.size()); // Tab add, update, and header update. 1253 EXPECT_EQ(3U, out.size()); // Tab add, update, and header update.
1252 1254
1253 EXPECT_TRUE(StartsWithASCII(out[0].sync_data().GetTag(), 1255 EXPECT_TRUE(StartsWithASCII(out[0].sync_data().AsLocal().GetTag(),
1254 manager()->current_machine_tag(), true)); 1256 manager()->current_machine_tag(), true));
1255 EXPECT_EQ(manager()->current_machine_tag(), 1257 EXPECT_EQ(manager()->current_machine_tag(),
1256 out[0].sync_data().GetSpecifics().session().session_tag()); 1258 out[0].sync_data().GetSpecifics().session().session_tag());
1257 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); 1259 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type());
1258 1260
1259 EXPECT_TRUE(StartsWithASCII(out[1].sync_data().GetTag(), 1261 EXPECT_TRUE(StartsWithASCII(out[1].sync_data().AsLocal().GetTag(),
1260 manager()->current_machine_tag(), true)); 1262 manager()->current_machine_tag(), true));
1261 EXPECT_EQ(manager()->current_machine_tag(), 1263 EXPECT_EQ(manager()->current_machine_tag(),
1262 out[1].sync_data().GetSpecifics().session().session_tag()); 1264 out[1].sync_data().GetSpecifics().session().session_tag());
1263 EXPECT_TRUE(out[1].sync_data().GetSpecifics().session().has_tab()); 1265 EXPECT_TRUE(out[1].sync_data().GetSpecifics().session().has_tab());
1264 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type()); 1266 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[1].change_type());
1265 1267
1266 EXPECT_TRUE(out[2].IsValid()); 1268 EXPECT_TRUE(out[2].IsValid());
1267 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type()); 1269 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[2].change_type());
1268 const SyncData data(out[2].sync_data()); 1270 const SyncData data(out[2].sync_data());
1269 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); 1271 EXPECT_EQ(manager()->current_machine_tag(), data.AsLocal().GetTag());
1270 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 1272 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
1271 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 1273 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
1272 EXPECT_TRUE(specifics.has_header()); 1274 EXPECT_TRUE(specifics.has_header());
1273 const sync_pb::SessionHeader& header_s = specifics.header(); 1275 const sync_pb::SessionHeader& header_s = specifics.header();
1274 EXPECT_EQ(1, header_s.window_size()); 1276 EXPECT_EQ(1, header_s.window_size());
1275 EXPECT_EQ(1, header_s.window(0).tab_size()); 1277 EXPECT_EQ(1, header_s.window(0).tab_size());
1276 } 1278 }
1277 1279
1278 // Tests that the SyncSessionManager responds to local tab events properly. 1280 // Tests that the SyncSessionManager responds to local tab events properly.
1279 TEST_F(SessionsSyncManagerTest, OnLocalTabModified) { 1281 TEST_F(SessionsSyncManagerTest, OnLocalTabModified) {
(...skipping 23 matching lines...) Expand all
1303 // = 6 total header updates. 1305 // = 6 total header updates.
1304 // 12 total updates. 1306 // 12 total updates.
1305 ASSERT_EQ(12U, out.size()); 1307 ASSERT_EQ(12U, out.size());
1306 1308
1307 // Verify the tab node creations and updates to ensure the SyncProcessor 1309 // Verify the tab node creations and updates to ensure the SyncProcessor
1308 // sees the right operations. 1310 // sees the right operations.
1309 for (int i = 0; i < 12; i++) { 1311 for (int i = 0; i < 12; i++) {
1310 SCOPED_TRACE(i); 1312 SCOPED_TRACE(i);
1311 EXPECT_TRUE(out[i].IsValid()); 1313 EXPECT_TRUE(out[i].IsValid());
1312 const SyncData data(out[i].sync_data()); 1314 const SyncData data(out[i].sync_data());
1313 EXPECT_TRUE(StartsWithASCII(data.GetTag(), 1315 EXPECT_TRUE(StartsWithASCII(data.AsLocal().GetTag(),
1314 manager()->current_machine_tag(), true)); 1316 manager()->current_machine_tag(), true));
1315 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 1317 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
1316 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 1318 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
1317 if (i % 6 == 0) { 1319 if (i % 6 == 0) {
1318 // First thing on an AddTab is a no-op header update for parented tab. 1320 // First thing on an AddTab is a no-op header update for parented tab.
1319 EXPECT_EQ(header.SerializeAsString(), 1321 EXPECT_EQ(header.SerializeAsString(),
1320 data.GetSpecifics().SerializeAsString()); 1322 data.GetSpecifics().SerializeAsString());
1321 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); 1323 EXPECT_EQ(manager()->current_machine_tag(), data.AsLocal().GetTag());
1322 } else if (i % 6 == 1) { 1324 } else if (i % 6 == 1) {
1323 // Next, the TabNodePool should create the tab node. 1325 // Next, the TabNodePool should create the tab node.
1324 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type()); 1326 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type());
1325 EXPECT_EQ(TabNodePool2::TabIdToTag( 1327 EXPECT_EQ(TabNodePool2::TabIdToTag(
1326 manager()->current_machine_tag(), 1328 manager()->current_machine_tag(),
1327 data.GetSpecifics().session().tab_node_id()), 1329 data.GetSpecifics().session().tab_node_id()),
1328 data.GetTag()); 1330 data.AsLocal().GetTag());
1329 } else if (i % 6 == 2) { 1331 } else if (i % 6 == 2) {
1330 // Then we see the tab update to the URL. 1332 // Then we see the tab update to the URL.
1331 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); 1333 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type());
1332 EXPECT_EQ(TabNodePool2::TabIdToTag( 1334 EXPECT_EQ(TabNodePool2::TabIdToTag(
1333 manager()->current_machine_tag(), 1335 manager()->current_machine_tag(),
1334 data.GetSpecifics().session().tab_node_id()), 1336 data.GetSpecifics().session().tab_node_id()),
1335 data.GetTag()); 1337 data.AsLocal().GetTag());
1336 ASSERT_TRUE(specifics.has_tab()); 1338 ASSERT_TRUE(specifics.has_tab());
1337 } else if (i % 6 == 3) { 1339 } else if (i % 6 == 3) {
1338 // The header needs to be updated to reflect the new window state. 1340 // The header needs to be updated to reflect the new window state.
1339 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); 1341 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type());
1340 EXPECT_TRUE(specifics.has_header()); 1342 EXPECT_TRUE(specifics.has_header());
1341 } else if (i % 6 == 4) { 1343 } else if (i % 6 == 4) {
1342 // Now we move on to NavigateAndCommit. Update the tab. 1344 // Now we move on to NavigateAndCommit. Update the tab.
1343 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); 1345 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type());
1344 EXPECT_EQ(TabNodePool2::TabIdToTag( 1346 EXPECT_EQ(TabNodePool2::TabIdToTag(
1345 manager()->current_machine_tag(), 1347 manager()->current_machine_tag(),
1346 data.GetSpecifics().session().tab_node_id()), 1348 data.GetSpecifics().session().tab_node_id()),
1347 data.GetTag()); 1349 data.AsLocal().GetTag());
1348 ASSERT_TRUE(specifics.has_tab()); 1350 ASSERT_TRUE(specifics.has_tab());
1349 } else if (i % 6 == 5) { 1351 } else if (i % 6 == 5) {
1350 // The header needs to be updated to reflect the new window state. 1352 // The header needs to be updated to reflect the new window state.
1351 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); 1353 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type());
1352 ASSERT_TRUE(specifics.has_header()); 1354 ASSERT_TRUE(specifics.has_header());
1353 header = data.GetSpecifics(); 1355 header = data.GetSpecifics();
1354 } 1356 }
1355 } 1357 }
1356 1358
1357 // Verify the actual content to ensure sync sees the right data. 1359 // Verify the actual content to ensure sync sees the right data.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 ASSERT_EQ(6U, out.size()); 1398 ASSERT_EQ(6U, out.size());
1397 1399
1398 // Check that this machine's data is not included in the foreign windows. 1400 // Check that this machine's data is not included in the foreign windows.
1399 std::vector<const SyncedSession*> foreign_sessions; 1401 std::vector<const SyncedSession*> foreign_sessions;
1400 ASSERT_FALSE(manager()->GetAllForeignSessions(&foreign_sessions)); 1402 ASSERT_FALSE(manager()->GetAllForeignSessions(&foreign_sessions));
1401 1403
1402 // Verify the header. 1404 // Verify the header.
1403 EXPECT_TRUE(out[0].IsValid()); 1405 EXPECT_TRUE(out[0].IsValid());
1404 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type()); 1406 EXPECT_EQ(SyncChange::ACTION_ADD, out[0].change_type());
1405 const SyncData data(out[0].sync_data()); 1407 const SyncData data(out[0].sync_data());
1406 EXPECT_EQ(manager()->current_machine_tag(), data.GetTag()); 1408 EXPECT_EQ(manager()->current_machine_tag(), data.AsLocal().GetTag());
1407 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 1409 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
1408 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 1410 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
1409 EXPECT_TRUE(specifics.has_header()); 1411 EXPECT_TRUE(specifics.has_header());
1410 const sync_pb::SessionHeader& header_s = specifics.header(); 1412 const sync_pb::SessionHeader& header_s = specifics.header();
1411 EXPECT_TRUE(header_s.has_device_type()); 1413 EXPECT_TRUE(header_s.has_device_type());
1412 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name()); 1414 EXPECT_EQ(GetLocalDeviceInfo()->client_name(), header_s.client_name());
1413 EXPECT_EQ(0, header_s.window_size()); 1415 EXPECT_EQ(0, header_s.window_size());
1414 1416
1415 // Verify the tab node creations and updates with content. 1417 // Verify the tab node creations and updates with content.
1416 for (int i = 1; i < 5; i++) { 1418 for (int i = 1; i < 5; i++) {
1417 EXPECT_TRUE(out[i].IsValid()); 1419 EXPECT_TRUE(out[i].IsValid());
1418 const SyncData data(out[i].sync_data()); 1420 const SyncData data(out[i].sync_data());
1419 EXPECT_TRUE(StartsWithASCII(data.GetTag(), 1421 EXPECT_TRUE(StartsWithASCII(data.AsLocal().GetTag(),
1420 manager()->current_machine_tag(), true)); 1422 manager()->current_machine_tag(), true));
1421 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session()); 1423 const sync_pb::SessionSpecifics& specifics(data.GetSpecifics().session());
1422 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag()); 1424 EXPECT_EQ(manager()->current_machine_tag(), specifics.session_tag());
1423 if (i % 2 == 1) { 1425 if (i % 2 == 1) {
1424 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type()); 1426 EXPECT_EQ(SyncChange::ACTION_ADD, out[i].change_type());
1425 } else { 1427 } else {
1426 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type()); 1428 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[i].change_type());
1427 EXPECT_TRUE(specifics.has_tab()); 1429 EXPECT_TRUE(specifics.has_tab());
1428 } 1430 }
1429 } 1431 }
1430 1432
1431 // Verify the header was updated to reflect new window state. 1433 // Verify the header was updated to reflect new window state.
1432 EXPECT_TRUE(out[5].IsValid()); 1434 EXPECT_TRUE(out[5].IsValid());
1433 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[5].change_type()); 1435 EXPECT_EQ(SyncChange::ACTION_UPDATE, out[5].change_type());
1434 const SyncData data_2(out[5].sync_data()); 1436 const SyncData data_2(out[5].sync_data());
1435 EXPECT_EQ(manager()->current_machine_tag(), data_2.GetTag()); 1437 EXPECT_EQ(manager()->current_machine_tag(), data_2.AsLocal().GetTag());
1436 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session()); 1438 const sync_pb::SessionSpecifics& specifics2(data_2.GetSpecifics().session());
1437 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag()); 1439 EXPECT_EQ(manager()->current_machine_tag(), specifics2.session_tag());
1438 EXPECT_TRUE(specifics2.has_header()); 1440 EXPECT_TRUE(specifics2.has_header());
1439 const sync_pb::SessionHeader& header_s2 = specifics2.header(); 1441 const sync_pb::SessionHeader& header_s2 = specifics2.header();
1440 EXPECT_EQ(1, header_s2.window_size()); 1442 EXPECT_EQ(1, header_s2.window_size());
1441 1443
1442 // Verify TabLinks. 1444 // Verify TabLinks.
1443 SessionsSyncManager::TabLinksMap tab_map = manager()->local_tab_map_; 1445 SessionsSyncManager::TabLinksMap tab_map = manager()->local_tab_map_;
1444 ASSERT_EQ(2U, tab_map.size()); 1446 ASSERT_EQ(2U, tab_map.size());
1445 // Tabs are ordered by sessionid in tab_map, so should be able to traverse 1447 // 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
1495 std::vector<const SyncedSession*> foreign_sessions; 1497 std::vector<const SyncedSession*> foreign_sessions;
1496 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); 1498 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions));
1497 ASSERT_EQ(2U, foreign_sessions.size()); 1499 ASSERT_EQ(2U, foreign_sessions.size());
1498 foreign_sessions.clear(); 1500 foreign_sessions.clear();
1499 1501
1500 // Now garbage collect and verify the non-stale session is still there. 1502 // Now garbage collect and verify the non-stale session is still there.
1501 manager()->DoGarbageCollection(); 1503 manager()->DoGarbageCollection();
1502 ASSERT_EQ(5U, output.size()); 1504 ASSERT_EQ(5U, output.size());
1503 EXPECT_EQ(SyncChange::ACTION_DELETE, output[0].change_type()); 1505 EXPECT_EQ(SyncChange::ACTION_DELETE, output[0].change_type());
1504 const SyncData data(output[0].sync_data()); 1506 const SyncData data(output[0].sync_data());
1505 EXPECT_EQ(tag1, data.GetTag()); 1507 EXPECT_EQ(tag1, data.AsLocal().GetTag());
1506 for (int i = 1; i < 5; i++) { 1508 for (int i = 1; i < 5; i++) {
1507 EXPECT_EQ(SyncChange::ACTION_DELETE, output[i].change_type()); 1509 EXPECT_EQ(SyncChange::ACTION_DELETE, output[i].change_type());
1508 const SyncData data(output[i].sync_data()); 1510 const SyncData data(output[i].sync_data());
1509 EXPECT_EQ(TabNodePool2::TabIdToTag(tag1, i), data.GetTag()); 1511 EXPECT_EQ(TabNodePool2::TabIdToTag(tag1, i), data.AsLocal().GetTag());
1510 } 1512 }
1511 1513
1512 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions)); 1514 ASSERT_TRUE(manager()->GetAllForeignSessions(&foreign_sessions));
1513 ASSERT_EQ(1U, foreign_sessions.size()); 1515 ASSERT_EQ(1U, foreign_sessions.size());
1514 std::vector<std::vector<SessionID::id_type> > session_reference; 1516 std::vector<std::vector<SessionID::id_type> > session_reference;
1515 session_reference.push_back(tab_list2); 1517 session_reference.push_back(tab_list2);
1516 helper()->VerifySyncedSession(tag2, session_reference, 1518 helper()->VerifySyncedSession(tag2, session_reference,
1517 *(foreign_sessions[0])); 1519 *(foreign_sessions[0]));
1518 } 1520 }
1519 1521
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1711 ASSERT_FALSE(observer.notified_of_refresh()); 1713 ASSERT_FALSE(observer.notified_of_refresh());
1712 InitWithNoSyncData(); 1714 InitWithNoSyncData();
1713 AddTab(browser(), GURL("http://foo1")); 1715 AddTab(browser(), GURL("http://foo1"));
1714 EXPECT_FALSE(observer.notified_of_refresh()); 1716 EXPECT_FALSE(observer.notified_of_refresh());
1715 NavigateAndCommitActiveTab(GURL("chrome://newtab/#open_tabs")); 1717 NavigateAndCommitActiveTab(GURL("chrome://newtab/#open_tabs"));
1716 EXPECT_TRUE(observer.notified_of_refresh()); 1718 EXPECT_TRUE(observer.notified_of_refresh());
1717 } 1719 }
1718 #endif // defined(OS_ANDROID) || defined(OS_IOS) 1720 #endif // defined(OS_ANDROID) || defined(OS_IOS)
1719 1721
1720 } // namespace browser_sync 1722 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698