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

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: Rebase. 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
« no previous file with comments | « chrome/browser/sync/sessions2/sessions_sync_manager.cc ('k') | sync/api/sync_change.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 (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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/sync/sessions2/sessions_sync_manager.cc ('k') | sync/api/sync_change.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698