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

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

Issue 582913002: Make GenericChangeProcessor upload attachments on startup. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge with master. 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
« no previous file with comments | « components/sync_driver/generic_change_processor.cc ('k') | sync/api/attachments/README » ('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 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" 10 #include "base/run_loop.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "components/sync_driver/data_type_error_handler_mock.h" 12 #include "components/sync_driver/data_type_error_handler_mock.h"
13 #include "components/sync_driver/sync_api_component_factory.h" 13 #include "components/sync_driver/sync_api_component_factory.h"
14 #include "sync/api/attachments/attachment_id.h"
14 #include "sync/api/attachments/fake_attachment_store.h" 15 #include "sync/api/attachments/fake_attachment_store.h"
15 #include "sync/api/fake_syncable_service.h" 16 #include "sync/api/fake_syncable_service.h"
16 #include "sync/api/sync_change.h" 17 #include "sync/api/sync_change.h"
17 #include "sync/api/sync_merge_result.h" 18 #include "sync/api/sync_merge_result.h"
18 #include "sync/internal_api/public/attachments/attachment_service_impl.h" 19 #include "sync/internal_api/public/attachments/attachment_service_impl.h"
19 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h" 20 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h"
20 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h" 21 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h"
21 #include "sync/internal_api/public/base/model_type.h" 22 #include "sync/internal_api/public/base/model_type.h"
22 #include "sync/internal_api/public/read_node.h" 23 #include "sync/internal_api/public/read_node.h"
23 #include "sync/internal_api/public/read_transaction.h" 24 #include "sync/internal_api/public/read_transaction.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 new base::WeakPtrFactory<syncer::SyncMergeResult>( 136 new base::WeakPtrFactory<syncer::SyncMergeResult>(
136 sync_merge_result_.get())); 137 sync_merge_result_.get()));
137 138
138 syncer::ModelTypeSet types = syncer::ProtocolTypes(); 139 syncer::ModelTypeSet types = syncer::ProtocolTypes();
139 for (syncer::ModelTypeSet::Iterator iter = types.First(); iter.Good(); 140 for (syncer::ModelTypeSet::Iterator iter = types.First(); iter.Good();
140 iter.Inc()) { 141 iter.Inc()) {
141 syncer::TestUserShare::CreateRoot(iter.Get(), 142 syncer::TestUserShare::CreateRoot(iter.Get(),
142 test_user_share_->user_share()); 143 test_user_share_->user_share());
143 } 144 }
144 test_user_share_->encryption_handler()->Init(); 145 test_user_share_->encryption_handler()->Init();
146 ConstructGenericChangeProcessor(type);
147 }
148
149 void ConstructGenericChangeProcessor(syncer::ModelType type) {
145 scoped_refptr<syncer::AttachmentStore> attachment_store( 150 scoped_refptr<syncer::AttachmentStore> attachment_store(
146 new syncer::FakeAttachmentStore(base::MessageLoopProxy::current())); 151 new syncer::FakeAttachmentStore(base::MessageLoopProxy::current()));
147
148 scoped_ptr<MockAttachmentService> mock_attachment_service( 152 scoped_ptr<MockAttachmentService> mock_attachment_service(
149 new MockAttachmentService(attachment_store)); 153 new MockAttachmentService(attachment_store));
150 // GenericChangeProcessor takes ownership of the AttachmentService, but we 154 // GenericChangeProcessor takes ownership of the AttachmentService, but we
151 // need to have a pointer to it so we can see that it was used properly. 155 // need to have a pointer to it so we can see that it was used properly.
152 // Take a pointer and trust that GenericChangeProcessor does not prematurely 156 // Take a pointer and trust that GenericChangeProcessor does not prematurely
153 // destroy it. 157 // destroy it.
154 mock_attachment_service_ = mock_attachment_service.get(); 158 mock_attachment_service_ = mock_attachment_service.get();
155 sync_factory_.reset(new MockSyncApiComponentFactory( 159 sync_factory_.reset(new MockSyncApiComponentFactory(
156 mock_attachment_service.PassAs<syncer::AttachmentService>())); 160 mock_attachment_service.PassAs<syncer::AttachmentService>()));
157 change_processor_.reset( 161 change_processor_.reset(
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 syncer::AttachmentId::CreateFromProto(attachment_id_proto); 443 syncer::AttachmentId::CreateFromProto(attachment_id_proto);
440 444
441 change_processor()->OnAttachmentUploaded(attachment_id); 445 change_processor()->OnAttachmentUploaded(attachment_id);
442 syncer::ReadTransaction read_transaction(FROM_HERE, user_share()); 446 syncer::ReadTransaction read_transaction(FROM_HERE, user_share());
443 syncer::ReadNode node(&read_transaction); 447 syncer::ReadNode node(&read_transaction);
444 ASSERT_EQ(node.InitByClientTagLookup(kType, tag), syncer::BaseNode::INIT_OK); 448 ASSERT_EQ(node.InitByClientTagLookup(kType, tag), syncer::BaseNode::INIT_OK);
445 attachment_ids = node.GetAttachmentIds(); 449 attachment_ids = node.GetAttachmentIds();
446 EXPECT_EQ(1U, attachment_ids.size()); 450 EXPECT_EQ(1U, attachment_ids.size());
447 } 451 }
448 452
453 // Verify that upon construction, all attachments not yet on the server are
454 // scheduled for upload.
455 TEST_F(SyncGenericChangeProcessorTest, UploadAllAttachmentsNotOnServer) {
456 // Create two attachment ids. id2 will be marked as "on server".
457 syncer::AttachmentId id1 = syncer::AttachmentId::Create();
458 syncer::AttachmentId id2 = syncer::AttachmentId::Create();
459 {
460 // Write an entry containing these two attachment ids.
461 syncer::WriteTransaction trans(FROM_HERE, user_share());
462 syncer::ReadNode root(&trans);
463 ASSERT_EQ(syncer::BaseNode::INIT_OK, root.InitTypeRoot(kType));
464 syncer::WriteNode node(&trans);
465 node.InitUniqueByCreation(kType, root, "some node");
466 sync_pb::AttachmentMetadata metadata;
467 sync_pb::AttachmentMetadataRecord* record1 = metadata.add_record();
468 *record1->mutable_id() = id1.GetProto();
469 sync_pb::AttachmentMetadataRecord* record2 = metadata.add_record();
470 *record2->mutable_id() = id2.GetProto();
471 record2->set_is_on_server(true);
472 node.SetAttachmentMetadata(metadata);
473 }
474
475 // Construct the GenericChangeProcessor and see that it asks the
476 // AttachmentService to upload id1 only.
477 ConstructGenericChangeProcessor(kType);
478 ASSERT_EQ(1U, mock_attachment_service()->attachment_id_sets()->size());
479 ASSERT_THAT(mock_attachment_service()->attachment_id_sets()->front(),
480 testing::UnorderedElementsAre(id1));
481 }
482
449 } // namespace 483 } // namespace
450 484
451 } // namespace sync_driver 485 } // namespace sync_driver
OLDNEW
« no previous file with comments | « components/sync_driver/generic_change_processor.cc ('k') | sync/api/attachments/README » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698