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

Side by Side Diff: components/sync_driver/generic_change_processor_unittest.cc

Issue 538403004: Revert of Replace AttachmentStore's StoreAttachments with UploadAttachments. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/sync_driver/generic_change_processor.h" 5 #include "components/sync_driver/generic_change_processor.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h"
11 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
12 #include "components/sync_driver/data_type_error_handler_mock.h" 11 #include "components/sync_driver/data_type_error_handler_mock.h"
13 #include "components/sync_driver/sync_api_component_factory.h" 12 #include "components/sync_driver/sync_api_component_factory.h"
14 #include "sync/api/attachments/fake_attachment_store.h" 13 #include "sync/api/attachments/fake_attachment_store.h"
15 #include "sync/api/fake_syncable_service.h" 14 #include "sync/api/fake_syncable_service.h"
16 #include "sync/api/sync_change.h" 15 #include "sync/api/sync_change.h"
17 #include "sync/api/sync_merge_result.h" 16 #include "sync/api/sync_merge_result.h"
18 #include "sync/internal_api/public/attachments/attachment_service_impl.h" 17 #include "sync/internal_api/public/attachments/attachment_service_impl.h"
19 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h" 18 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h"
20 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h" 19 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h"
21 #include "sync/internal_api/public/base/model_type.h" 20 #include "sync/internal_api/public/base/model_type.h"
22 #include "sync/internal_api/public/read_node.h" 21 #include "sync/internal_api/public/read_node.h"
23 #include "sync/internal_api/public/read_transaction.h" 22 #include "sync/internal_api/public/read_transaction.h"
24 #include "sync/internal_api/public/sync_encryption_handler.h" 23 #include "sync/internal_api/public/sync_encryption_handler.h"
25 #include "sync/internal_api/public/test/test_user_share.h" 24 #include "sync/internal_api/public/test/test_user_share.h"
26 #include "sync/internal_api/public/user_share.h" 25 #include "sync/internal_api/public/user_share.h"
27 #include "sync/internal_api/public/write_node.h" 26 #include "sync/internal_api/public/write_node.h"
28 #include "sync/internal_api/public/write_transaction.h" 27 #include "sync/internal_api/public/write_transaction.h"
29 #include "testing/gmock/include/gmock/gmock-matchers.h"
30 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
31 29
32 namespace sync_driver { 30 namespace sync_driver {
33 31
34 namespace { 32 namespace {
35 33
36 const char kTestData[] = "some data"; 34 const char kTestData[] = "some data";
37 35
38 // A mock that keeps track of attachments passed to UploadAttachments. 36 // A mock that keeps track of attachments passed to StoreAttachments.
39 class MockAttachmentService : public syncer::AttachmentServiceImpl { 37 class MockAttachmentService : public syncer::AttachmentServiceImpl {
40 public: 38 public:
41 MockAttachmentService(); 39 MockAttachmentService();
42 virtual ~MockAttachmentService(); 40 virtual ~MockAttachmentService();
43 virtual void UploadAttachments( 41 virtual void StoreAttachments(const syncer::AttachmentList& attachments,
44 const syncer::AttachmentIdSet& attachment_ids) OVERRIDE; 42 const StoreCallback& callback) OVERRIDE;
45 std::vector<syncer::AttachmentIdSet>* attachment_id_sets(); 43 std::vector<syncer::AttachmentList>* attachment_lists();
46 44
47 private: 45 private:
48 std::vector<syncer::AttachmentIdSet> attachment_id_sets_; 46 std::vector<syncer::AttachmentList> attachment_lists_;
49 }; 47 };
50 48
51 MockAttachmentService::MockAttachmentService() 49 MockAttachmentService::MockAttachmentService()
52 : AttachmentServiceImpl( 50 : AttachmentServiceImpl(
53 scoped_ptr<syncer::AttachmentStore>(new syncer::FakeAttachmentStore( 51 scoped_ptr<syncer::AttachmentStore>(new syncer::FakeAttachmentStore(
54 base::MessageLoopProxy::current())), 52 base::MessageLoopProxy::current())),
55 scoped_ptr<syncer::AttachmentUploader>( 53 scoped_ptr<syncer::AttachmentUploader>(
56 new syncer::FakeAttachmentUploader), 54 new syncer::FakeAttachmentUploader),
57 scoped_ptr<syncer::AttachmentDownloader>( 55 scoped_ptr<syncer::AttachmentDownloader>(
58 new syncer::FakeAttachmentDownloader), 56 new syncer::FakeAttachmentDownloader),
59 NULL) { 57 NULL) {
60 } 58 }
61 59
62 MockAttachmentService::~MockAttachmentService() { 60 MockAttachmentService::~MockAttachmentService() {
63 } 61 }
64 62
65 void MockAttachmentService::UploadAttachments( 63 void MockAttachmentService::StoreAttachments(
66 const syncer::AttachmentIdSet& attachment_ids) { 64 const syncer::AttachmentList& attachments,
67 attachment_id_sets_.push_back(attachment_ids); 65 const StoreCallback& callback) {
68 AttachmentServiceImpl::UploadAttachments(attachment_ids); 66 attachment_lists_.push_back(attachments);
67 AttachmentServiceImpl::StoreAttachments(attachments, callback);
69 } 68 }
70 69
71 std::vector<syncer::AttachmentIdSet>* 70 std::vector<syncer::AttachmentList>* MockAttachmentService::attachment_lists() {
72 MockAttachmentService::attachment_id_sets() { 71 return &attachment_lists_;
73 return &attachment_id_sets_;
74 } 72 }
75 73
76 // MockSyncApiComponentFactory needed to initialize GenericChangeProcessor and 74 // MockSyncApiComponentFactory needed to initialize GenericChangeProcessor and
77 // pass MockAttachmentService to it. 75 // pass MockAttachmentService to it.
78 class MockSyncApiComponentFactory : public SyncApiComponentFactory { 76 class MockSyncApiComponentFactory : public SyncApiComponentFactory {
79 public: 77 public:
80 MockSyncApiComponentFactory( 78 MockSyncApiComponentFactory(
81 scoped_ptr<syncer::AttachmentService> attachment_service) 79 scoped_ptr<syncer::AttachmentService> attachment_service)
82 : attachment_service_(attachment_service.Pass()) {} 80 : attachment_service_(attachment_service.Pass()) {}
83 81
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 } 154 }
157 155
158 syncer::UserShare* user_share() { 156 syncer::UserShare* user_share() {
159 return test_user_share_.user_share(); 157 return test_user_share_.user_share();
160 } 158 }
161 159
162 MockAttachmentService* mock_attachment_service() { 160 MockAttachmentService* mock_attachment_service() {
163 return mock_attachment_service_; 161 return mock_attachment_service_;
164 } 162 }
165 163
166 void RunLoop() {
167 base::RunLoop run_loop;
168 run_loop.RunUntilIdle();
169 }
170
171 private: 164 private:
172 base::MessageLoopForUI loop_; 165 base::MessageLoopForUI loop_;
173 166
174 syncer::SyncMergeResult sync_merge_result_; 167 syncer::SyncMergeResult sync_merge_result_;
175 base::WeakPtrFactory<syncer::SyncMergeResult> merge_result_ptr_factory_; 168 base::WeakPtrFactory<syncer::SyncMergeResult> merge_result_ptr_factory_;
176 169
177 syncer::FakeSyncableService fake_syncable_service_; 170 syncer::FakeSyncableService fake_syncable_service_;
178 base::WeakPtrFactory<syncer::FakeSyncableService> 171 base::WeakPtrFactory<syncer::FakeSyncableService>
179 syncable_service_ptr_factory_; 172 syncable_service_ptr_factory_;
180 173
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 342
350 // Add a SyncData with two attachments. 343 // Add a SyncData with two attachments.
351 syncer::SyncChangeList change_list; 344 syncer::SyncChangeList change_list;
352 change_list.push_back( 345 change_list.push_back(
353 syncer::SyncChange(FROM_HERE, 346 syncer::SyncChange(FROM_HERE,
354 syncer::SyncChange::ACTION_ADD, 347 syncer::SyncChange::ACTION_ADD,
355 syncer::SyncData::CreateLocalDataWithAttachments( 348 syncer::SyncData::CreateLocalDataWithAttachments(
356 tag, title, specifics, attachments))); 349 tag, title, specifics, attachments)));
357 ASSERT_FALSE( 350 ASSERT_FALSE(
358 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 351 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
359 RunLoop();
360 352
361 // Check that the AttachmentService received the new attachments. 353 // Check that the AttachmentService received the new attachments.
362 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U); 354 ASSERT_EQ(mock_attachment_service()->attachment_lists()->size(), 1U);
363 const syncer::AttachmentIdSet& attachments_added = 355 const syncer::AttachmentList& attachments_added =
364 mock_attachment_service()->attachment_id_sets()->front(); 356 mock_attachment_service()->attachment_lists()->front();
365 ASSERT_THAT(attachments_added, 357 ASSERT_EQ(attachments_added.size(), 2U);
366 testing::UnorderedElementsAre(attachments[0].GetId(), 358 ASSERT_EQ(attachments_added[0].GetId(), attachments[0].GetId());
367 attachments[1].GetId())); 359 ASSERT_EQ(attachments_added[1].GetId(), attachments[1].GetId());
368 360
369 // Update the SyncData, replacing its two attachments with one new attachment. 361 // Update the SyncData, replacing its two attachments with one new attachment.
370 syncer::AttachmentList new_attachments; 362 syncer::AttachmentList new_attachments;
371 new_attachments.push_back(syncer::Attachment::Create(attachment_data)); 363 new_attachments.push_back(syncer::Attachment::Create(attachment_data));
372 mock_attachment_service()->attachment_id_sets()->clear(); 364 mock_attachment_service()->attachment_lists()->clear();
373 change_list.clear(); 365 change_list.clear();
374 change_list.push_back( 366 change_list.push_back(
375 syncer::SyncChange(FROM_HERE, 367 syncer::SyncChange(FROM_HERE,
376 syncer::SyncChange::ACTION_UPDATE, 368 syncer::SyncChange::ACTION_UPDATE,
377 syncer::SyncData::CreateLocalDataWithAttachments( 369 syncer::SyncData::CreateLocalDataWithAttachments(
378 tag, title, specifics, new_attachments))); 370 tag, title, specifics, new_attachments)));
379 ASSERT_FALSE( 371 ASSERT_FALSE(
380 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 372 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
381 RunLoop();
382 373
383 // Check that the AttachmentService received it. 374 // Check that the AttachmentService received it.
384 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U); 375 ASSERT_EQ(mock_attachment_service()->attachment_lists()->size(), 1U);
385 const syncer::AttachmentIdSet& new_attachments_added = 376 const syncer::AttachmentList& new_attachments_added =
386 mock_attachment_service()->attachment_id_sets()->front(); 377 mock_attachment_service()->attachment_lists()->front();
387 ASSERT_THAT(new_attachments_added, 378 ASSERT_EQ(new_attachments_added.size(), 1U);
388 testing::UnorderedElementsAre(new_attachments[0].GetId())); 379 ASSERT_EQ(new_attachments_added[0].GetId(), new_attachments[0].GetId());
389 } 380 }
390 381
391 // Verify that after attachment is uploaded GenericChangeProcessor updates 382 // Verify that after attachment is uploaded GenericChangeProcessor updates
392 // corresponding entries 383 // corresponding entries
393 TEST_F(SyncGenericChangeProcessorTest, AttachmentUploaded) { 384 TEST_F(SyncGenericChangeProcessorTest, AttachmentUploaded) {
394 std::string tag = "client_tag"; 385 std::string tag = "client_tag";
395 std::string title = "client_title"; 386 std::string title = "client_title";
396 sync_pb::EntitySpecifics specifics; 387 sync_pb::EntitySpecifics specifics;
397 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference(); 388 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference();
398 pref_specifics->set_name("test"); 389 pref_specifics->set_name("test");
(...skipping 23 matching lines...) Expand all
422 syncer::ReadNode node(&read_transaction); 413 syncer::ReadNode node(&read_transaction);
423 ASSERT_EQ(node.InitByClientTagLookup(syncer::PREFERENCES, tag), 414 ASSERT_EQ(node.InitByClientTagLookup(syncer::PREFERENCES, tag),
424 syncer::BaseNode::INIT_OK); 415 syncer::BaseNode::INIT_OK);
425 syncer::AttachmentIdList attachment_ids = node.GetAttachmentIds(); 416 syncer::AttachmentIdList attachment_ids = node.GetAttachmentIds();
426 EXPECT_EQ(1U, attachment_ids.size()); 417 EXPECT_EQ(1U, attachment_ids.size());
427 } 418 }
428 419
429 } // namespace 420 } // namespace
430 421
431 } // namespace sync_driver 422 } // namespace sync_driver
OLDNEW
« no previous file with comments | « components/sync_driver/generic_change_processor.cc ('k') | sync/internal_api/attachments/attachment_service_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698