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

Side by Side Diff: sync/internal_api/attachments/attachment_service_impl_unittest.cc

Issue 1866243002: Convert //sync from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 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 "sync/internal_api/public/attachments/attachment_service_impl.h" 5 #include "sync/internal_api/public/attachments/attachment_service_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h"
14 #include "base/memory/weak_ptr.h" 15 #include "base/memory/weak_ptr.h"
15 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
16 #include "base/run_loop.h" 17 #include "base/run_loop.h"
17 #include "base/thread_task_runner_handle.h" 18 #include "base/thread_task_runner_handle.h"
18 #include "base/timer/mock_timer.h" 19 #include "base/timer/mock_timer.h"
19 #include "sync/api/attachments/attachment_store_backend.h" 20 #include "sync/api/attachments/attachment_store_backend.h"
20 #include "sync/internal_api/public/attachments/attachment_util.h" 21 #include "sync/internal_api/public/attachments/attachment_util.h"
21 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h" 22 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h"
22 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h" 23 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h"
23 #include "testing/gmock/include/gmock/gmock-matchers.h" 24 #include "testing/gmock/include/gmock/gmock-matchers.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 81
81 // Respond to Read request. Attachments found in local_attachments should be 82 // Respond to Read request. Attachments found in local_attachments should be
82 // returned, everything else should be reported unavailable. 83 // returned, everything else should be reported unavailable.
83 void RespondToRead(const AttachmentIdSet& local_attachments) { 84 void RespondToRead(const AttachmentIdSet& local_attachments) {
84 scoped_refptr<base::RefCountedString> data = new base::RefCountedString(); 85 scoped_refptr<base::RefCountedString> data = new base::RefCountedString();
85 AttachmentStore::ReadCallback callback = read_callbacks.back(); 86 AttachmentStore::ReadCallback callback = read_callbacks.back();
86 AttachmentIdList ids = read_ids.back(); 87 AttachmentIdList ids = read_ids.back();
87 read_callbacks.pop_back(); 88 read_callbacks.pop_back();
88 read_ids.pop_back(); 89 read_ids.pop_back();
89 90
90 scoped_ptr<AttachmentMap> attachments(new AttachmentMap()); 91 std::unique_ptr<AttachmentMap> attachments(new AttachmentMap());
91 scoped_ptr<AttachmentIdList> unavailable_attachments( 92 std::unique_ptr<AttachmentIdList> unavailable_attachments(
92 new AttachmentIdList()); 93 new AttachmentIdList());
93 for (AttachmentIdList::const_iterator iter = ids.begin(); iter != ids.end(); 94 for (AttachmentIdList::const_iterator iter = ids.begin(); iter != ids.end();
94 ++iter) { 95 ++iter) {
95 if (local_attachments.find(*iter) != local_attachments.end()) { 96 if (local_attachments.find(*iter) != local_attachments.end()) {
96 Attachment attachment = Attachment::CreateFromParts(*iter, data); 97 Attachment attachment = Attachment::CreateFromParts(*iter, data);
97 attachments->insert(std::make_pair(*iter, attachment)); 98 attachments->insert(std::make_pair(*iter, attachment));
98 } else { 99 } else {
99 unavailable_attachments->push_back(*iter); 100 unavailable_attachments->push_back(*iter);
100 } 101 }
101 } 102 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 void DownloadAttachment(const AttachmentId& id, 142 void DownloadAttachment(const AttachmentId& id,
142 const DownloadCallback& callback) override { 143 const DownloadCallback& callback) override {
143 ASSERT_TRUE(download_requests.find(id) == download_requests.end()); 144 ASSERT_TRUE(download_requests.find(id) == download_requests.end());
144 download_requests.insert(std::make_pair(id, callback)); 145 download_requests.insert(std::make_pair(id, callback));
145 } 146 }
146 147
147 // Multiple requests to download will be active at the same time. 148 // Multiple requests to download will be active at the same time.
148 // RespondToDownload should respond to only one of them. 149 // RespondToDownload should respond to only one of them.
149 void RespondToDownload(const AttachmentId& id, const DownloadResult& result) { 150 void RespondToDownload(const AttachmentId& id, const DownloadResult& result) {
150 ASSERT_TRUE(download_requests.find(id) != download_requests.end()); 151 ASSERT_TRUE(download_requests.find(id) != download_requests.end());
151 scoped_ptr<Attachment> attachment; 152 std::unique_ptr<Attachment> attachment;
152 if (result == DOWNLOAD_SUCCESS) { 153 if (result == DOWNLOAD_SUCCESS) {
153 scoped_refptr<base::RefCountedString> data = new base::RefCountedString(); 154 scoped_refptr<base::RefCountedString> data = new base::RefCountedString();
154 attachment.reset(new Attachment(Attachment::CreateFromParts(id, data))); 155 attachment.reset(new Attachment(Attachment::CreateFromParts(id, data)));
155 } 156 }
156 base::MessageLoop::current()->PostTask( 157 base::MessageLoop::current()->PostTask(
157 FROM_HERE, 158 FROM_HERE,
158 base::Bind(download_requests[id], result, base::Passed(&attachment))); 159 base::Bind(download_requests[id], result, base::Passed(&attachment)));
159 160
160 download_requests.erase(id); 161 download_requests.erase(id);
161 } 162 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 196
196 } // namespace 197 } // namespace
197 198
198 class AttachmentServiceImplTest : public testing::Test, 199 class AttachmentServiceImplTest : public testing::Test,
199 public AttachmentService::Delegate { 200 public AttachmentService::Delegate {
200 protected: 201 protected:
201 AttachmentServiceImplTest() {} 202 AttachmentServiceImplTest() {}
202 203
203 void SetUp() override { 204 void SetUp() override {
204 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); 205 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
205 InitializeAttachmentService(make_scoped_ptr(new MockAttachmentUploader()), 206 InitializeAttachmentService(
206 make_scoped_ptr(new MockAttachmentDownloader()), 207 base::WrapUnique(new MockAttachmentUploader()),
207 this); 208 base::WrapUnique(new MockAttachmentDownloader()), this);
208 } 209 }
209 210
210 void TearDown() override { 211 void TearDown() override {
211 attachment_service_.reset(); 212 attachment_service_.reset();
212 RunLoop(); 213 RunLoop();
213 ASSERT_FALSE(attachment_store_backend_); 214 ASSERT_FALSE(attachment_store_backend_);
214 ASSERT_FALSE(attachment_uploader_); 215 ASSERT_FALSE(attachment_uploader_);
215 ASSERT_FALSE(attachment_downloader_); 216 ASSERT_FALSE(attachment_downloader_);
216 } 217 }
217 218
218 // AttachmentService::Delegate implementation. 219 // AttachmentService::Delegate implementation.
219 void OnAttachmentUploaded(const AttachmentId& attachment_id) override { 220 void OnAttachmentUploaded(const AttachmentId& attachment_id) override {
220 on_attachment_uploaded_list_.push_back(attachment_id); 221 on_attachment_uploaded_list_.push_back(attachment_id);
221 } 222 }
222 223
223 void InitializeAttachmentService( 224 void InitializeAttachmentService(
224 scoped_ptr<MockAttachmentUploader> uploader, 225 std::unique_ptr<MockAttachmentUploader> uploader,
225 scoped_ptr<MockAttachmentDownloader> downloader, 226 std::unique_ptr<MockAttachmentDownloader> downloader,
226 AttachmentService::Delegate* delegate) { 227 AttachmentService::Delegate* delegate) {
227 // Initialize mock attachment store 228 // Initialize mock attachment store
228 scoped_refptr<base::SingleThreadTaskRunner> runner = 229 scoped_refptr<base::SingleThreadTaskRunner> runner =
229 base::ThreadTaskRunnerHandle::Get(); 230 base::ThreadTaskRunnerHandle::Get();
230 scoped_ptr<MockAttachmentStoreBackend> attachment_store_backend( 231 std::unique_ptr<MockAttachmentStoreBackend> attachment_store_backend(
231 new MockAttachmentStoreBackend(runner)); 232 new MockAttachmentStoreBackend(runner));
232 attachment_store_backend_ = attachment_store_backend->AsWeakPtr(); 233 attachment_store_backend_ = attachment_store_backend->AsWeakPtr();
233 scoped_ptr<AttachmentStore> attachment_store = 234 std::unique_ptr<AttachmentStore> attachment_store =
234 AttachmentStore::CreateMockStoreForTest( 235 AttachmentStore::CreateMockStoreForTest(
235 std::move(attachment_store_backend)); 236 std::move(attachment_store_backend));
236 237
237 if (uploader.get()) { 238 if (uploader.get()) {
238 attachment_uploader_ = uploader->AsWeakPtr(); 239 attachment_uploader_ = uploader->AsWeakPtr();
239 } 240 }
240 if (downloader.get()) { 241 if (downloader.get()) {
241 attachment_downloader_ = downloader->AsWeakPtr(); 242 attachment_downloader_ = downloader->AsWeakPtr();
242 } 243 }
243 attachment_service_.reset(new AttachmentServiceImpl( 244 attachment_service_.reset(new AttachmentServiceImpl(
244 attachment_store->CreateAttachmentStoreForSync(), std::move(uploader), 245 attachment_store->CreateAttachmentStoreForSync(), std::move(uploader),
245 std::move(downloader), delegate, base::TimeDelta::FromMinutes(1), 246 std::move(downloader), delegate, base::TimeDelta::FromMinutes(1),
246 base::TimeDelta::FromMinutes(8))); 247 base::TimeDelta::FromMinutes(8)));
247 248
248 scoped_ptr<base::MockTimer> timer_to_pass( 249 std::unique_ptr<base::MockTimer> timer_to_pass(
249 new base::MockTimer(false, false)); 250 new base::MockTimer(false, false));
250 mock_timer_ = timer_to_pass.get(); 251 mock_timer_ = timer_to_pass.get();
251 attachment_service_->SetTimerForTest(std::move(timer_to_pass)); 252 attachment_service_->SetTimerForTest(std::move(timer_to_pass));
252 } 253 }
253 254
254 AttachmentService* attachment_service() { return attachment_service_.get(); } 255 AttachmentService* attachment_service() { return attachment_service_.get(); }
255 256
256 base::MockTimer* mock_timer() { return mock_timer_; } 257 base::MockTimer* mock_timer() { return mock_timer_; }
257 258
258 AttachmentService::GetOrDownloadCallback download_callback() { 259 AttachmentService::GetOrDownloadCallback download_callback() {
259 return base::Bind(&AttachmentServiceImplTest::DownloadDone, 260 return base::Bind(&AttachmentServiceImplTest::DownloadDone,
260 base::Unretained(this)); 261 base::Unretained(this));
261 } 262 }
262 263
263 void DownloadDone(const AttachmentService::GetOrDownloadResult& result, 264 void DownloadDone(const AttachmentService::GetOrDownloadResult& result,
264 scoped_ptr<AttachmentMap> attachments) { 265 std::unique_ptr<AttachmentMap> attachments) {
265 download_results_.push_back(result); 266 download_results_.push_back(result);
266 last_download_attachments_ = std::move(attachments); 267 last_download_attachments_ = std::move(attachments);
267 } 268 }
268 269
269 void RunLoop() { 270 void RunLoop() {
270 base::RunLoop run_loop; 271 base::RunLoop run_loop;
271 run_loop.RunUntilIdle(); 272 run_loop.RunUntilIdle();
272 } 273 }
273 274
274 void RunLoopAndFireTimer() { 275 void RunLoopAndFireTimer() {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 MockAttachmentUploader* uploader() { 312 MockAttachmentUploader* uploader() {
312 return attachment_uploader_.get(); 313 return attachment_uploader_.get();
313 } 314 }
314 315
315 const std::vector<AttachmentId>& on_attachment_uploaded_list() const { 316 const std::vector<AttachmentId>& on_attachment_uploaded_list() const {
316 return on_attachment_uploaded_list_; 317 return on_attachment_uploaded_list_;
317 } 318 }
318 319
319 private: 320 private:
320 base::MessageLoop message_loop_; 321 base::MessageLoop message_loop_;
321 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; 322 std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier_;
322 base::WeakPtr<MockAttachmentStoreBackend> attachment_store_backend_; 323 base::WeakPtr<MockAttachmentStoreBackend> attachment_store_backend_;
323 base::WeakPtr<MockAttachmentDownloader> attachment_downloader_; 324 base::WeakPtr<MockAttachmentDownloader> attachment_downloader_;
324 base::WeakPtr<MockAttachmentUploader> attachment_uploader_; 325 base::WeakPtr<MockAttachmentUploader> attachment_uploader_;
325 scoped_ptr<AttachmentServiceImpl> attachment_service_; 326 std::unique_ptr<AttachmentServiceImpl> attachment_service_;
326 base::MockTimer* mock_timer_; // not owned 327 base::MockTimer* mock_timer_; // not owned
327 328
328 std::vector<AttachmentService::GetOrDownloadResult> download_results_; 329 std::vector<AttachmentService::GetOrDownloadResult> download_results_;
329 scoped_ptr<AttachmentMap> last_download_attachments_; 330 std::unique_ptr<AttachmentMap> last_download_attachments_;
330 std::vector<AttachmentId> on_attachment_uploaded_list_; 331 std::vector<AttachmentId> on_attachment_uploaded_list_;
331 }; 332 };
332 333
333 TEST_F(AttachmentServiceImplTest, GetOrDownload_EmptyAttachmentList) { 334 TEST_F(AttachmentServiceImplTest, GetOrDownload_EmptyAttachmentList) {
334 AttachmentIdList attachment_ids; 335 AttachmentIdList attachment_ids;
335 attachment_service()->GetOrDownloadAttachments(attachment_ids, 336 attachment_service()->GetOrDownloadAttachments(attachment_ids,
336 download_callback()); 337 download_callback());
337 RunLoop(); 338 RunLoop();
338 store()->RespondToRead(AttachmentIdSet()); 339 store()->RespondToRead(AttachmentIdSet());
339 340
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 last_download_attachments().end()); 423 last_download_attachments().end());
423 EXPECT_TRUE(last_download_attachments().find(attachment_ids[2]) == 424 EXPECT_TRUE(last_download_attachments().find(attachment_ids[2]) ==
424 last_download_attachments().end()); 425 last_download_attachments().end());
425 EXPECT_TRUE(last_download_attachments().find(attachment_ids[3]) == 426 EXPECT_TRUE(last_download_attachments().find(attachment_ids[3]) ==
426 last_download_attachments().end()); 427 last_download_attachments().end());
427 } 428 }
428 429
429 TEST_F(AttachmentServiceImplTest, GetOrDownload_NoDownloader) { 430 TEST_F(AttachmentServiceImplTest, GetOrDownload_NoDownloader) {
430 // No downloader. 431 // No downloader.
431 InitializeAttachmentService( 432 InitializeAttachmentService(
432 make_scoped_ptr<MockAttachmentUploader>(new MockAttachmentUploader()), 433 base::WrapUnique<MockAttachmentUploader>(new MockAttachmentUploader()),
433 make_scoped_ptr<MockAttachmentDownloader>(NULL), 434 base::WrapUnique<MockAttachmentDownloader>(NULL), this);
434 this);
435 435
436 AttachmentIdList attachment_ids; 436 AttachmentIdList attachment_ids;
437 attachment_ids.push_back(AttachmentId::Create(0, 0)); 437 attachment_ids.push_back(AttachmentId::Create(0, 0));
438 attachment_service()->GetOrDownloadAttachments(attachment_ids, 438 attachment_service()->GetOrDownloadAttachments(attachment_ids,
439 download_callback()); 439 download_callback());
440 RunLoop(); 440 RunLoop();
441 EXPECT_FALSE(store()->read_ids.empty()); 441 EXPECT_FALSE(store()->read_ids.empty());
442 442
443 AttachmentIdSet local_attachments; 443 AttachmentIdSet local_attachments;
444 store()->RespondToRead(local_attachments); 444 store()->RespondToRead(local_attachments);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 // See that all the attachments were uploaded. 476 // See that all the attachments were uploaded.
477 ASSERT_EQ(attachment_ids.size(), on_attachment_uploaded_list().size()); 477 ASSERT_EQ(attachment_ids.size(), on_attachment_uploaded_list().size());
478 for (auto iter = attachment_ids.begin(); iter != attachment_ids.end(); 478 for (auto iter = attachment_ids.begin(); iter != attachment_ids.end();
479 ++iter) { 479 ++iter) {
480 EXPECT_THAT(on_attachment_uploaded_list(), testing::Contains(*iter)); 480 EXPECT_THAT(on_attachment_uploaded_list(), testing::Contains(*iter));
481 } 481 }
482 EXPECT_EQ(num_attachments, store()->drop_ids.size()); 482 EXPECT_EQ(num_attachments, store()->drop_ids.size());
483 } 483 }
484 484
485 TEST_F(AttachmentServiceImplTest, UploadAttachments_Success_NoDelegate) { 485 TEST_F(AttachmentServiceImplTest, UploadAttachments_Success_NoDelegate) {
486 InitializeAttachmentService(make_scoped_ptr(new MockAttachmentUploader()), 486 InitializeAttachmentService(base::WrapUnique(new MockAttachmentUploader()),
487 make_scoped_ptr(new MockAttachmentDownloader()), 487 base::WrapUnique(new MockAttachmentDownloader()),
488 NULL); // No delegate. 488 NULL); // No delegate.
489 489
490 AttachmentIdList attachment_ids; 490 AttachmentIdList attachment_ids;
491 attachment_ids.push_back(AttachmentId::Create(0, 0)); 491 attachment_ids.push_back(AttachmentId::Create(0, 0));
492 attachment_service()->UploadAttachments(attachment_ids); 492 attachment_service()->UploadAttachments(attachment_ids);
493 RunLoopAndFireTimer(); 493 RunLoopAndFireTimer();
494 ASSERT_EQ(1U, store()->read_ids.size()); 494 ASSERT_EQ(1U, store()->read_ids.size());
495 ASSERT_EQ(0U, uploader()->upload_requests.size()); 495 ASSERT_EQ(0U, uploader()->upload_requests.size());
496 store()->RespondToRead(AttachmentIdSetFromList(attachment_ids)); 496 store()->RespondToRead(AttachmentIdSetFromList(attachment_ids));
497 RunLoop(); 497 RunLoop();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 RunLoop(); 546 RunLoop();
547 547
548 // Nothing uploaded. 548 // Nothing uploaded.
549 EXPECT_EQ(0U, uploader()->upload_requests.size()); 549 EXPECT_EQ(0U, uploader()->upload_requests.size());
550 // See that the delegate was never called. 550 // See that the delegate was never called.
551 ASSERT_EQ(0U, on_attachment_uploaded_list().size()); 551 ASSERT_EQ(0U, on_attachment_uploaded_list().size());
552 EXPECT_EQ(num_attachments, store()->drop_ids.size()); 552 EXPECT_EQ(num_attachments, store()->drop_ids.size());
553 } 553 }
554 554
555 TEST_F(AttachmentServiceImplTest, UploadAttachments_NoUploader) { 555 TEST_F(AttachmentServiceImplTest, UploadAttachments_NoUploader) {
556 InitializeAttachmentService(make_scoped_ptr<MockAttachmentUploader>(NULL), 556 InitializeAttachmentService(base::WrapUnique<MockAttachmentUploader>(NULL),
557 make_scoped_ptr(new MockAttachmentDownloader()), 557 base::WrapUnique(new MockAttachmentDownloader()),
558 this); 558 this);
559 559
560 AttachmentIdList attachment_ids; 560 AttachmentIdList attachment_ids;
561 attachment_ids.push_back(AttachmentId::Create(0, 0)); 561 attachment_ids.push_back(AttachmentId::Create(0, 0));
562 attachment_service()->UploadAttachments(attachment_ids); 562 attachment_service()->UploadAttachments(attachment_ids);
563 RunLoop(); 563 RunLoop();
564 EXPECT_EQ(0U, store()->read_ids.size()); 564 EXPECT_EQ(0U, store()->read_ids.size());
565 ASSERT_EQ(0U, on_attachment_uploaded_list().size()); 565 ASSERT_EQ(0U, on_attachment_uploaded_list().size());
566 EXPECT_EQ(0U, store()->drop_ids.size()); 566 EXPECT_EQ(0U, store()->drop_ids.size());
567 } 567 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( 632 net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
633 net::NetworkChangeNotifier::CONNECTION_WIFI); 633 net::NetworkChangeNotifier::CONNECTION_WIFI);
634 RunLoop(); 634 RunLoop();
635 635
636 // No longer in backoff. 636 // No longer in backoff.
637 ASSERT_TRUE(mock_timer()->IsRunning()); 637 ASSERT_TRUE(mock_timer()->IsRunning());
638 ASSERT_EQ(base::TimeDelta(), mock_timer()->GetCurrentDelay()); 638 ASSERT_EQ(base::TimeDelta(), mock_timer()->GetCurrentDelay());
639 } 639 }
640 640
641 } // namespace syncer 641 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698