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

Side by Side Diff: chrome/browser/safe_browsing/incident_reporting/download_metadata_manager_unittest.cc

Issue 1870003002: Convert //chrome/browser/safe_browsing from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and address comments 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 "chrome/browser/safe_browsing/incident_reporting/download_metadata_mana ger.h" 5 #include "chrome/browser/safe_browsing/incident_reporting/download_metadata_mana ger.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory>
9 #include <string> 10 #include <string>
10 11
11 #include "base/bind.h" 12 #include "base/bind.h"
12 #include "base/callback.h" 13 #include "base/callback.h"
13 #include "base/files/file_path.h" 14 #include "base/files/file_path.h"
14 #include "base/files/file_util.h" 15 #include "base/files/file_util.h"
15 #include "base/memory/scoped_ptr.h"
16 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "base/thread_task_runner_handle.h" 17 #include "base/thread_task_runner_handle.h"
18 #include "chrome/common/safe_browsing/csd.pb.h" 18 #include "chrome/common/safe_browsing/csd.pb.h"
19 #include "chrome/test/base/testing_profile.h" 19 #include "chrome/test/base/testing_profile.h"
20 #include "content/public/browser/browser_thread.h" 20 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/download_manager.h" 21 #include "content/public/browser/download_manager.h"
22 #include "content/public/test/mock_download_item.h" 22 #include "content/public/test/mock_download_item.h"
23 #include "content/public/test/mock_download_manager.h" 23 #include "content/public/test/mock_download_manager.h"
24 #include "content/public/test/test_browser_thread_bundle.h" 24 #include "content/public/test/test_browser_thread_bundle.h"
25 #include "testing/gmock/include/gmock/gmock.h" 25 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 30 matching lines...) Expand all
56 virtual ~DownloadDetailsGetter() {} 56 virtual ~DownloadDetailsGetter() {}
57 virtual void OnDownloadDetails( 57 virtual void OnDownloadDetails(
58 ClientIncidentReport_DownloadDetails* details) = 0; 58 ClientIncidentReport_DownloadDetails* details) = 0;
59 DownloadMetadataManager::GetDownloadDetailsCallback GetCallback() { 59 DownloadMetadataManager::GetDownloadDetailsCallback GetCallback() {
60 return base::Bind(&DownloadDetailsGetter::DownloadDetailsCallback, 60 return base::Bind(&DownloadDetailsGetter::DownloadDetailsCallback,
61 base::Unretained(this)); 61 base::Unretained(this));
62 } 62 }
63 63
64 private: 64 private:
65 void DownloadDetailsCallback( 65 void DownloadDetailsCallback(
66 scoped_ptr<ClientIncidentReport_DownloadDetails> details) { 66 std::unique_ptr<ClientIncidentReport_DownloadDetails> details) {
67 OnDownloadDetails(details.get()); 67 OnDownloadDetails(details.get());
68 } 68 }
69 }; 69 };
70 70
71 // A mock DownloadDetailsGetter. 71 // A mock DownloadDetailsGetter.
72 class MockDownloadDetailsGetter : public DownloadDetailsGetter { 72 class MockDownloadDetailsGetter : public DownloadDetailsGetter {
73 public: 73 public:
74 MOCK_METHOD1(OnDownloadDetails, void(ClientIncidentReport_DownloadDetails*)); 74 MOCK_METHOD1(OnDownloadDetails, void(ClientIncidentReport_DownloadDetails*));
75 }; 75 };
76 76
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 base::ThreadTaskRunnerHandle::Get())), 110 base::ThreadTaskRunnerHandle::Get())),
111 download_manager_(), 111 download_manager_(),
112 dm_observer_() {} 112 dm_observer_() {}
113 113
114 // Returns the path to the test profile's DownloadMetadata file. 114 // Returns the path to the test profile's DownloadMetadata file.
115 base::FilePath GetMetadataPath() const { 115 base::FilePath GetMetadataPath() const {
116 return profile_.GetPath().Append(FILE_PATH_LITERAL("DownloadMetadata")); 116 return profile_.GetPath().Append(FILE_PATH_LITERAL("DownloadMetadata"));
117 } 117 }
118 118
119 // Returns a new ClientDownloadRequest for the given download URL. 119 // Returns a new ClientDownloadRequest for the given download URL.
120 static scoped_ptr<ClientDownloadRequest> MakeTestRequest(const char* url) { 120 static std::unique_ptr<ClientDownloadRequest> MakeTestRequest(
121 scoped_ptr<ClientDownloadRequest> request(new ClientDownloadRequest()); 121 const char* url) {
122 std::unique_ptr<ClientDownloadRequest> request(new ClientDownloadRequest());
122 request->set_url(url); 123 request->set_url(url);
123 request->mutable_digests(); 124 request->mutable_digests();
124 request->set_length(kTestDownloadLength); 125 request->set_length(kTestDownloadLength);
125 return request; 126 return request;
126 } 127 }
127 128
128 // Returns a new DownloadMetdata for the given download id. 129 // Returns a new DownloadMetdata for the given download id.
129 static scoped_ptr<DownloadMetadata> GetTestMetadata(uint32_t download_id) { 130 static std::unique_ptr<DownloadMetadata> GetTestMetadata(
130 scoped_ptr<DownloadMetadata> metadata(new DownloadMetadata()); 131 uint32_t download_id) {
132 std::unique_ptr<DownloadMetadata> metadata(new DownloadMetadata());
131 metadata->set_download_id(download_id); 133 metadata->set_download_id(download_id);
132 ClientIncidentReport_DownloadDetails* details = 134 ClientIncidentReport_DownloadDetails* details =
133 metadata->mutable_download(); 135 metadata->mutable_download();
134 details->set_download_time_msec(kTestDownloadTimeMsec); 136 details->set_download_time_msec(kTestDownloadTimeMsec);
135 details->set_allocated_download(MakeTestRequest(kTestUrl).release()); 137 details->set_allocated_download(MakeTestRequest(kTestUrl).release());
136 return metadata; 138 return metadata;
137 } 139 }
138 140
139 // Writes a test DownloadMetadata file for the given download id to the 141 // Writes a test DownloadMetadata file for the given download id to the
140 // test profile directory. 142 // test profile directory.
141 void WriteTestMetadataFileForItem(uint32_t download_id) { 143 void WriteTestMetadataFileForItem(uint32_t download_id) {
142 std::string data; 144 std::string data;
143 ASSERT_TRUE(GetTestMetadata(download_id)->SerializeToString(&data)); 145 ASSERT_TRUE(GetTestMetadata(download_id)->SerializeToString(&data));
144 ASSERT_TRUE(base::WriteFile(GetMetadataPath(), data.data(), data.size())); 146 ASSERT_TRUE(base::WriteFile(GetMetadataPath(), data.data(), data.size()));
145 } 147 }
146 148
147 // Writes a test DownloadMetadata file for kTestDownloadId to the test profile 149 // Writes a test DownloadMetadata file for kTestDownloadId to the test profile
148 // directory. 150 // directory.
149 void WriteTestMetadataFile() { 151 void WriteTestMetadataFile() {
150 WriteTestMetadataFileForItem(kTestDownloadId); 152 WriteTestMetadataFileForItem(kTestDownloadId);
151 } 153 }
152 154
153 // Returns the DownloadMetadata read from the test profile's directory. 155 // Returns the DownloadMetadata read from the test profile's directory.
154 scoped_ptr<DownloadMetadata> ReadTestMetadataFile() const { 156 std::unique_ptr<DownloadMetadata> ReadTestMetadataFile() const {
155 std::string data; 157 std::string data;
156 if (!base::ReadFileToString(GetMetadataPath(), &data)) 158 if (!base::ReadFileToString(GetMetadataPath(), &data))
157 return scoped_ptr<DownloadMetadata>(); 159 return std::unique_ptr<DownloadMetadata>();
158 scoped_ptr<DownloadMetadata> result(new DownloadMetadata); 160 std::unique_ptr<DownloadMetadata> result(new DownloadMetadata);
159 EXPECT_TRUE(result->ParseFromString(data)); 161 EXPECT_TRUE(result->ParseFromString(data));
160 return result; 162 return result;
161 } 163 }
162 164
163 // Runs all tasks posted to the test thread's message loop. 165 // Runs all tasks posted to the test thread's message loop.
164 void RunAllTasks() { base::MessageLoop::current()->RunUntilIdle(); } 166 void RunAllTasks() { base::MessageLoop::current()->RunUntilIdle(); }
165 167
166 // Adds a DownloadManager for the test profile. The DownloadMetadataManager's 168 // Adds a DownloadManager for the test profile. The DownloadMetadataManager's
167 // observer is stashed for later use. Only call once per call to 169 // observer is stashed for later use. Only call once per call to
168 // ShutdownDownloadManager. 170 // ShutdownDownloadManager.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 if (other_item_) 249 if (other_item_)
248 downloads->push_back(other_item_.get()); 250 downloads->push_back(other_item_.get());
249 if (zero_item_) 251 if (zero_item_)
250 downloads->push_back(zero_item_.get()); 252 downloads->push_back(zero_item_.get());
251 } 253 }
252 254
253 content::TestBrowserThreadBundle thread_bundle_; 255 content::TestBrowserThreadBundle thread_bundle_;
254 NiceMock<MockDownloadMetadataManager> manager_; 256 NiceMock<MockDownloadMetadataManager> manager_;
255 TestingProfile profile_; 257 TestingProfile profile_;
256 NiceMock<content::MockDownloadManager> download_manager_; 258 NiceMock<content::MockDownloadManager> download_manager_;
257 scoped_ptr<content::MockDownloadItem> test_item_; 259 std::unique_ptr<content::MockDownloadItem> test_item_;
258 scoped_ptr<content::MockDownloadItem> other_item_; 260 std::unique_ptr<content::MockDownloadItem> other_item_;
259 scoped_ptr<content::MockDownloadItem> zero_item_; 261 std::unique_ptr<content::MockDownloadItem> zero_item_;
260 262
261 // The DownloadMetadataManager's content::DownloadManager::Observer. Captured 263 // The DownloadMetadataManager's content::DownloadManager::Observer. Captured
262 // by download_manager_'s AddObserver action. 264 // by download_manager_'s AddObserver action.
263 content::DownloadManager::Observer* dm_observer_; 265 content::DownloadManager::Observer* dm_observer_;
264 }; 266 };
265 267
266 // A parameterized test that exercises GetDownloadDetails. The parameters 268 // A parameterized test that exercises GetDownloadDetails. The parameters
267 // dictate the exact state of affairs leading up to the call as follows: 269 // dictate the exact state of affairs leading up to the call as follows:
268 // 0: if "present", the profile has a pre-existing DownloadMetadata file. 270 // 0: if "present", the profile has a pre-existing DownloadMetadata file.
269 // 1: if "managed", the profile's DownloadManager has been created. 271 // 1: if "managed", the profile's DownloadManager has been created.
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 details_getter, 497 details_getter,
496 OnDownloadDetails(ResultOf(GetDetailsDownloadUrl, StrEq(kNewUrl)))); 498 OnDownloadDetails(ResultOf(GetDetailsDownloadUrl, StrEq(kNewUrl))));
497 manager_.GetDownloadDetails(&profile_, details_getter.GetCallback()); 499 manager_.GetDownloadDetails(&profile_, details_getter.GetCallback());
498 } 500 }
499 501
500 // In http://crbug.com/433928, open after SetRequest(nullpr) caused a crash. 502 // In http://crbug.com/433928, open after SetRequest(nullpr) caused a crash.
501 test_item_->NotifyObserversDownloadOpened(); 503 test_item_->NotifyObserversDownloadOpened();
502 504
503 ShutdownDownloadManager(); 505 ShutdownDownloadManager();
504 506
505 scoped_ptr<DownloadMetadata> metadata(ReadTestMetadataFile()); 507 std::unique_ptr<DownloadMetadata> metadata(ReadTestMetadataFile());
506 if (set_request_) { 508 if (set_request_) {
507 // Expect that the file contains metadata for the download. 509 // Expect that the file contains metadata for the download.
508 ASSERT_TRUE(metadata); 510 ASSERT_TRUE(metadata);
509 EXPECT_EQ(kTestDownloadId, metadata->download_id()); 511 EXPECT_EQ(kTestDownloadId, metadata->download_id());
510 EXPECT_STREQ(kNewUrl, metadata->download().download().url().c_str()); 512 EXPECT_STREQ(kNewUrl, metadata->download().download().url().c_str());
511 } else if (metadata_file_present_) { 513 } else if (metadata_file_present_) {
512 // Expect that the metadata file has not been overwritten. 514 // Expect that the metadata file has not been overwritten.
513 ASSERT_TRUE(metadata); 515 ASSERT_TRUE(metadata);
514 } else { 516 } else {
515 // Expect that the file is not present. 517 // Expect that the file is not present.
(...skipping 28 matching lines...) Expand all
544 546
545 // The test item completes. 547 // The test item completes.
546 ON_CALL(*test_item_, GetState()) 548 ON_CALL(*test_item_, GetState())
547 .WillByDefault(Return(content::DownloadItem::COMPLETE)); 549 .WillByDefault(Return(content::DownloadItem::COMPLETE));
548 test_item_->NotifyObserversDownloadUpdated(); 550 test_item_->NotifyObserversDownloadUpdated();
549 551
550 RunAllTasks(); 552 RunAllTasks();
551 ShutdownDownloadManager(); 553 ShutdownDownloadManager();
552 554
553 // Expect that the metadata file is still present. 555 // Expect that the metadata file is still present.
554 scoped_ptr<DownloadMetadata> metadata(ReadTestMetadataFile()); 556 std::unique_ptr<DownloadMetadata> metadata(ReadTestMetadataFile());
555 ASSERT_TRUE(metadata); 557 ASSERT_TRUE(metadata);
556 EXPECT_EQ(kOtherDownloadId, metadata->download_id()); 558 EXPECT_EQ(kOtherDownloadId, metadata->download_id());
557 } 559 }
558 560
559 TEST_F(DownloadMetadataManagerTestBase, ActiveDownloadWithRequest) { 561 TEST_F(DownloadMetadataManagerTestBase, ActiveDownloadWithRequest) {
560 // Put some metadata on disk from a previous download. 562 // Put some metadata on disk from a previous download.
561 WriteTestMetadataFileForItem(kOtherDownloadId); 563 WriteTestMetadataFileForItem(kOtherDownloadId);
562 564
563 AddDownloadManager(); 565 AddDownloadManager();
564 AddDownloadItems(); 566 AddDownloadItems();
(...skipping 22 matching lines...) Expand all
587 MockDownloadDetailsGetter details_getter; 589 MockDownloadDetailsGetter details_getter;
588 // Expect that the callback is invoked with details for this item. 590 // Expect that the callback is invoked with details for this item.
589 EXPECT_CALL( 591 EXPECT_CALL(
590 details_getter, 592 details_getter,
591 OnDownloadDetails(ResultOf(GetDetailsDownloadUrl, StrEq(kNewUrl)))); 593 OnDownloadDetails(ResultOf(GetDetailsDownloadUrl, StrEq(kNewUrl))));
592 manager_.GetDownloadDetails(&profile_, details_getter.GetCallback()); 594 manager_.GetDownloadDetails(&profile_, details_getter.GetCallback());
593 595
594 ShutdownDownloadManager(); 596 ShutdownDownloadManager();
595 597
596 // Expect that the file contains metadata for the download. 598 // Expect that the file contains metadata for the download.
597 scoped_ptr<DownloadMetadata> metadata(ReadTestMetadataFile()); 599 std::unique_ptr<DownloadMetadata> metadata(ReadTestMetadataFile());
598 ASSERT_TRUE(metadata); 600 ASSERT_TRUE(metadata);
599 EXPECT_EQ(kTestDownloadId, metadata->download_id()); 601 EXPECT_EQ(kTestDownloadId, metadata->download_id());
600 EXPECT_STREQ(kNewUrl, metadata->download().download().url().c_str()); 602 EXPECT_STREQ(kNewUrl, metadata->download().download().url().c_str());
601 } 603 }
602 604
603 // Regression test for http://crbug.com/504092: open an item with id==0 when 605 // Regression test for http://crbug.com/504092: open an item with id==0 when
604 // there is no metadata loaded. 606 // there is no metadata loaded.
605 TEST_F(DownloadMetadataManagerTestBase, OpenItemWithZeroId) { 607 TEST_F(DownloadMetadataManagerTestBase, OpenItemWithZeroId) {
606 AddDownloadManager(); 608 AddDownloadManager();
607 AddDownloadItems(); 609 AddDownloadItems();
608 610
609 // Allow everything to load into steady-state. 611 // Allow everything to load into steady-state.
610 RunAllTasks(); 612 RunAllTasks();
611 613
612 // Open the zero-id item. 614 // Open the zero-id item.
613 zero_item_->NotifyObserversDownloadOpened(); 615 zero_item_->NotifyObserversDownloadOpened();
614 616
615 ShutdownDownloadManager(); 617 ShutdownDownloadManager();
616 } 618 }
617 619
618 } // namespace safe_browsing 620 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698