| OLD | NEW | 
|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/reading_list/core/reading_list_store.h" | 5 #include "components/reading_list/core/reading_list_store.h" | 
| 6 | 6 | 
| 7 #include <map> | 7 #include <map> | 
| 8 #include <set> | 8 #include <set> | 
| 9 | 9 | 
| 10 #include "base/bind.h" | 10 #include "base/bind.h" | 
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 217   AssertCounts(1, 0, 0, 0, 0); | 217   AssertCounts(1, 0, 0, 0, 0); | 
| 218   syncer::EntityData* data = put_multimap_["http://unread.example.com/"].get(); | 218   syncer::EntityData* data = put_multimap_["http://unread.example.com/"].get(); | 
| 219   const sync_pb::ReadingListSpecifics& specifics = | 219   const sync_pb::ReadingListSpecifics& specifics = | 
| 220       data->specifics.reading_list(); | 220       data->specifics.reading_list(); | 
| 221   EXPECT_EQ(specifics.title(), "unread title"); | 221   EXPECT_EQ(specifics.title(), "unread title"); | 
| 222   EXPECT_EQ(specifics.url(), "http://unread.example.com/"); | 222   EXPECT_EQ(specifics.url(), "http://unread.example.com/"); | 
| 223   EXPECT_EQ(specifics.status(), sync_pb::ReadingListSpecifics::UNSEEN); | 223   EXPECT_EQ(specifics.status(), sync_pb::ReadingListSpecifics::UNSEEN); | 
| 224 } | 224 } | 
| 225 | 225 | 
| 226 TEST_F(ReadingListStoreTest, SyncMergeOneEntry) { | 226 TEST_F(ReadingListStoreTest, SyncMergeOneEntry) { | 
| 227   syncer::EntityDataMap remote_input; | 227   syncer::EntityChangeList remote_input; | 
| 228   ReadingListEntry entry(GURL("http://read.example.com/"), "read title", | 228   ReadingListEntry entry(GURL("http://read.example.com/"), "read title", | 
| 229                          AdvanceAndGetTime(clock_)); | 229                          AdvanceAndGetTime(clock_)); | 
| 230   entry.SetRead(true, AdvanceAndGetTime(clock_)); | 230   entry.SetRead(true, AdvanceAndGetTime(clock_)); | 
| 231   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 231   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 
| 232       entry.AsReadingListSpecifics(); | 232       entry.AsReadingListSpecifics(); | 
| 233 | 233 | 
| 234   syncer::EntityData data; | 234   syncer::EntityData data; | 
| 235   data.client_tag_hash = "http://read.example.com/"; | 235   data.client_tag_hash = "http://read.example.com/"; | 
| 236   *data.specifics.mutable_reading_list() = *specifics; | 236   *data.specifics.mutable_reading_list() = *specifics; | 
| 237 | 237 | 
| 238   remote_input["http://read.example.com/"] = data.PassToPtr(); | 238   remote_input.push_back(syncer::EntityChange::CreateAdd( | 
|  | 239       "http://read.example.com/", data.PassToPtr())); | 
| 239 | 240 | 
| 240   std::unique_ptr<syncer::MetadataChangeList> metadata_changes( | 241   std::unique_ptr<syncer::MetadataChangeList> metadata_changes( | 
| 241       reading_list_store_->CreateMetadataChangeList()); | 242       reading_list_store_->CreateMetadataChangeList()); | 
| 242   auto error = reading_list_store_->MergeSyncData(std::move(metadata_changes), | 243   auto error = reading_list_store_->MergeSyncData(std::move(metadata_changes), | 
| 243                                                   remote_input); | 244                                                   remote_input); | 
| 244   AssertCounts(0, 0, 1, 0, 0); | 245   AssertCounts(0, 0, 1, 0, 0); | 
| 245   EXPECT_EQ(sync_added_.size(), 1u); | 246   EXPECT_EQ(sync_added_.size(), 1u); | 
| 246   EXPECT_EQ(sync_added_.count("http://read.example.com/"), 1u); | 247   EXPECT_EQ(sync_added_.count("http://read.example.com/"), 1u); | 
| 247   EXPECT_EQ(sync_added_["http://read.example.com/"], true); | 248   EXPECT_EQ(sync_added_["http://read.example.com/"], true); | 
| 248 } | 249 } | 
| 249 | 250 | 
| 250 TEST_F(ReadingListStoreTest, ApplySyncChangesOneAdd) { | 251 TEST_F(ReadingListStoreTest, ApplySyncChangesOneAdd) { | 
| 251   syncer::EntityDataMap remote_input; |  | 
| 252   ReadingListEntry entry(GURL("http://read.example.com/"), "read title", | 252   ReadingListEntry entry(GURL("http://read.example.com/"), "read title", | 
| 253                          AdvanceAndGetTime(clock_)); | 253                          AdvanceAndGetTime(clock_)); | 
| 254   entry.SetRead(true, AdvanceAndGetTime(clock_)); | 254   entry.SetRead(true, AdvanceAndGetTime(clock_)); | 
| 255   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 255   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 
| 256       entry.AsReadingListSpecifics(); | 256       entry.AsReadingListSpecifics(); | 
| 257   syncer::EntityData data; | 257   syncer::EntityData data; | 
| 258   data.client_tag_hash = "http://read.example.com/"; | 258   data.client_tag_hash = "http://read.example.com/"; | 
| 259   *data.specifics.mutable_reading_list() = *specifics; | 259   *data.specifics.mutable_reading_list() = *specifics; | 
| 260 | 260 | 
| 261   syncer::EntityChangeList add_changes; | 261   syncer::EntityChangeList add_changes; | 
| 262 | 262 | 
| 263   add_changes.push_back(syncer::EntityChange::CreateAdd( | 263   add_changes.push_back(syncer::EntityChange::CreateAdd( | 
| 264       "http://read.example.com/", data.PassToPtr())); | 264       "http://read.example.com/", data.PassToPtr())); | 
| 265   auto error = reading_list_store_->ApplySyncChanges( | 265   auto error = reading_list_store_->ApplySyncChanges( | 
| 266       reading_list_store_->CreateMetadataChangeList(), add_changes); | 266       reading_list_store_->CreateMetadataChangeList(), add_changes); | 
| 267   AssertCounts(0, 0, 1, 0, 0); | 267   AssertCounts(0, 0, 1, 0, 0); | 
| 268   EXPECT_EQ(sync_added_.size(), 1u); | 268   EXPECT_EQ(sync_added_.size(), 1u); | 
| 269   EXPECT_EQ(sync_added_.count("http://read.example.com/"), 1u); | 269   EXPECT_EQ(sync_added_.count("http://read.example.com/"), 1u); | 
| 270   EXPECT_EQ(sync_added_["http://read.example.com/"], true); | 270   EXPECT_EQ(sync_added_["http://read.example.com/"], true); | 
| 271 } | 271 } | 
| 272 | 272 | 
| 273 TEST_F(ReadingListStoreTest, ApplySyncChangesOneMerge) { | 273 TEST_F(ReadingListStoreTest, ApplySyncChangesOneMerge) { | 
| 274   syncer::EntityDataMap remote_input; |  | 
| 275   AdvanceAndGetTime(clock_); | 274   AdvanceAndGetTime(clock_); | 
| 276   model_->AddEntry(GURL("http://unread.example.com/"), "unread title", | 275   model_->AddEntry(GURL("http://unread.example.com/"), "unread title", | 
| 277                    reading_list::ADDED_VIA_CURRENT_APP); | 276                    reading_list::ADDED_VIA_CURRENT_APP); | 
| 278 | 277 | 
| 279   ReadingListEntry new_entry(GURL("http://unread.example.com/"), "unread title", | 278   ReadingListEntry new_entry(GURL("http://unread.example.com/"), "unread title", | 
| 280                              AdvanceAndGetTime(clock_)); | 279                              AdvanceAndGetTime(clock_)); | 
| 281   new_entry.SetRead(true, AdvanceAndGetTime(clock_)); | 280   new_entry.SetRead(true, AdvanceAndGetTime(clock_)); | 
| 282   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 281   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 
| 283       new_entry.AsReadingListSpecifics(); | 282       new_entry.AsReadingListSpecifics(); | 
| 284   syncer::EntityData data; | 283   syncer::EntityData data; | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 295   EXPECT_EQ(sync_merged_.count("http://unread.example.com/"), 1u); | 294   EXPECT_EQ(sync_merged_.count("http://unread.example.com/"), 1u); | 
| 296   EXPECT_EQ(sync_merged_["http://unread.example.com/"], true); | 295   EXPECT_EQ(sync_merged_["http://unread.example.com/"], true); | 
| 297 } | 296 } | 
| 298 | 297 | 
| 299 TEST_F(ReadingListStoreTest, ApplySyncChangesOneIgnored) { | 298 TEST_F(ReadingListStoreTest, ApplySyncChangesOneIgnored) { | 
| 300   // Read entry but with unread URL as it must update the other one. | 299   // Read entry but with unread URL as it must update the other one. | 
| 301   ReadingListEntry old_entry(GURL("http://unread.example.com/"), | 300   ReadingListEntry old_entry(GURL("http://unread.example.com/"), | 
| 302                              "old unread title", AdvanceAndGetTime(clock_)); | 301                              "old unread title", AdvanceAndGetTime(clock_)); | 
| 303   old_entry.SetRead(true, AdvanceAndGetTime(clock_)); | 302   old_entry.SetRead(true, AdvanceAndGetTime(clock_)); | 
| 304 | 303 | 
| 305   syncer::EntityDataMap remote_input; |  | 
| 306   AdvanceAndGetTime(clock_); | 304   AdvanceAndGetTime(clock_); | 
| 307   model_->AddEntry(GURL("http://unread.example.com/"), "new unread title", | 305   model_->AddEntry(GURL("http://unread.example.com/"), "new unread title", | 
| 308                    reading_list::ADDED_VIA_CURRENT_APP); | 306                    reading_list::ADDED_VIA_CURRENT_APP); | 
| 309   AssertCounts(0, 0, 0, 0, 0); | 307   AssertCounts(0, 0, 0, 0, 0); | 
| 310 | 308 | 
| 311   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 309   std::unique_ptr<sync_pb::ReadingListSpecifics> specifics = | 
| 312       old_entry.AsReadingListSpecifics(); | 310       old_entry.AsReadingListSpecifics(); | 
| 313   syncer::EntityData data; | 311   syncer::EntityData data; | 
| 314   data.client_tag_hash = "http://unread.example.com/"; | 312   data.client_tag_hash = "http://unread.example.com/"; | 
| 315   *data.specifics.mutable_reading_list() = *specifics; | 313   *data.specifics.mutable_reading_list() = *specifics; | 
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 449     entryB.set_status(status_oder[index_a]); | 447     entryB.set_status(status_oder[index_a]); | 
| 450     ExpectAB(entryA, entryB, true); | 448     ExpectAB(entryA, entryB, true); | 
| 451     ExpectAB(entryB, entryA, true); | 449     ExpectAB(entryB, entryA, true); | 
| 452     for (int index_b = index_a + 1; index_b < 3; index_b++) { | 450     for (int index_b = index_a + 1; index_b < 3; index_b++) { | 
| 453       entryB.set_status(status_oder[index_b]); | 451       entryB.set_status(status_oder[index_b]); | 
| 454       ExpectAB(entryA, entryB, true); | 452       ExpectAB(entryA, entryB, true); | 
| 455       ExpectAB(entryB, entryA, false); | 453       ExpectAB(entryB, entryA, false); | 
| 456     } | 454     } | 
| 457   } | 455   } | 
| 458 } | 456 } | 
| OLD | NEW | 
|---|