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

Side by Side Diff: chrome/browser/safe_browsing/incident_reporting/last_download_finder_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/last_download_finder.h " 5 #include "chrome/browser/safe_browsing/incident_reporting/last_download_finder.h "
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8
9 #include <memory>
8 #include <string> 10 #include <string>
9 #include <utility> 11 #include <utility>
10 #include <vector> 12 #include <vector>
11 13
12 #include "base/bind.h" 14 #include "base/bind.h"
13 #include "base/callback.h" 15 #include "base/callback.h"
14 #include "base/files/file_path.h" 16 #include "base/files/file_path.h"
15 #include "base/files/file_util.h" 17 #include "base/files/file_util.h"
16 #include "base/guid.h" 18 #include "base/guid.h"
17 #include "base/location.h" 19 #include "base/location.h"
18 #include "base/memory/scoped_ptr.h" 20 #include "base/memory/ptr_util.h"
19 #include "base/metrics/field_trial.h" 21 #include "base/metrics/field_trial.h"
20 #include "base/run_loop.h" 22 #include "base/run_loop.h"
21 #include "base/single_thread_task_runner.h" 23 #include "base/single_thread_task_runner.h"
22 #include "base/strings/string_number_conversions.h" 24 #include "base/strings/string_number_conversions.h"
23 #include "base/strings/utf_string_conversions.h" 25 #include "base/strings/utf_string_conversions.h"
24 #include "base/test/mock_entropy_provider.h" 26 #include "base/test/mock_entropy_provider.h"
25 #include "base/thread_task_runner_handle.h" 27 #include "base/thread_task_runner_handle.h"
26 #include "build/build_config.h" 28 #include "build/build_config.h"
27 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 29 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
28 #include "chrome/browser/history/chrome_history_client.h" 30 #include "chrome/browser/history/chrome_history_client.h"
(...skipping 17 matching lines...) Expand all
46 #include "components/history/core/browser/history_service.h" 48 #include "components/history/core/browser/history_service.h"
47 #include "components/syncable_prefs/testing_pref_service_syncable.h" 49 #include "components/syncable_prefs/testing_pref_service_syncable.h"
48 #include "content/public/test/test_browser_thread_bundle.h" 50 #include "content/public/test/test_browser_thread_bundle.h"
49 #include "content/public/test/test_utils.h" 51 #include "content/public/test/test_utils.h"
50 #include "testing/gtest/include/gtest/gtest.h" 52 #include "testing/gtest/include/gtest/gtest.h"
51 53
52 namespace { 54 namespace {
53 55
54 // A BrowserContextKeyedServiceFactory::TestingFactoryFunction that creates a 56 // A BrowserContextKeyedServiceFactory::TestingFactoryFunction that creates a
55 // HistoryService for a TestingProfile. 57 // HistoryService for a TestingProfile.
56 scoped_ptr<KeyedService> BuildHistoryService(content::BrowserContext* context) { 58 std::unique_ptr<KeyedService> BuildHistoryService(
59 content::BrowserContext* context) {
57 TestingProfile* profile = static_cast<TestingProfile*>(context); 60 TestingProfile* profile = static_cast<TestingProfile*>(context);
58 61
59 // Delete the file before creating the service. 62 // Delete the file before creating the service.
60 base::FilePath history_path( 63 base::FilePath history_path(
61 profile->GetPath().Append(history::kHistoryFilename)); 64 profile->GetPath().Append(history::kHistoryFilename));
62 if (!base::DeleteFile(history_path, false) || 65 if (!base::DeleteFile(history_path, false) ||
63 base::PathExists(history_path)) { 66 base::PathExists(history_path)) {
64 ADD_FAILURE() << "failed to delete history db file " 67 ADD_FAILURE() << "failed to delete history db file "
65 << history_path.value(); 68 << history_path.value();
66 return nullptr; 69 return nullptr;
67 } 70 }
68 71
69 scoped_ptr<history::HistoryService> history_service( 72 std::unique_ptr<history::HistoryService> history_service(
70 new history::HistoryService( 73 new history::HistoryService(
71 make_scoped_ptr(new ChromeHistoryClient( 74 base::WrapUnique(new ChromeHistoryClient(
72 BookmarkModelFactory::GetForProfile(profile))), 75 BookmarkModelFactory::GetForProfile(profile))),
73 scoped_ptr<history::VisitDelegate>())); 76 std::unique_ptr<history::VisitDelegate>()));
74 if (history_service->Init( 77 if (history_service->Init(
75 history::HistoryDatabaseParamsForPath(profile->GetPath()))) { 78 history::HistoryDatabaseParamsForPath(profile->GetPath()))) {
76 return std::move(history_service); 79 return std::move(history_service);
77 } 80 }
78 81
79 ADD_FAILURE() << "failed to initialize history service"; 82 ADD_FAILURE() << "failed to initialize history service";
80 return nullptr; 83 return nullptr;
81 } 84 }
82 85
83 #if defined(OS_WIN) 86 #if defined(OS_WIN)
(...skipping 18 matching lines...) Expand all
102 105
103 static const base::FilePath::CharType kPDFFileName[] = 106 static const base::FilePath::CharType kPDFFileName[] =
104 FILE_PATH_LITERAL("download.pdf"); 107 FILE_PATH_LITERAL("download.pdf");
105 108
106 } // namespace 109 } // namespace
107 110
108 namespace safe_browsing { 111 namespace safe_browsing {
109 112
110 class LastDownloadFinderTest : public testing::Test { 113 class LastDownloadFinderTest : public testing::Test {
111 public: 114 public:
112 void NeverCalled(scoped_ptr<ClientIncidentReport_DownloadDetails> download, 115 void NeverCalled(
113 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 116 std::unique_ptr<ClientIncidentReport_DownloadDetails> download,
114 non_binary_download) { 117 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
118 non_binary_download) {
115 FAIL(); 119 FAIL();
116 } 120 }
117 121
118 // Creates a new profile that participates in safe browsing and adds a 122 // Creates a new profile that participates in safe browsing and adds a
119 // download to its history. 123 // download to its history.
120 void CreateProfileWithDownload() { 124 void CreateProfileWithDownload() {
121 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN); 125 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN);
122 history::HistoryService* history_service = 126 history::HistoryService* history_service =
123 HistoryServiceFactory::GetForProfile( 127 HistoryServiceFactory::GetForProfile(
124 profile, ServiceAccessType::EXPLICIT_ACCESS); 128 profile, ServiceAccessType::EXPLICIT_ACCESS);
125 history_service->CreateDownload( 129 history_service->CreateDownload(
126 CreateTestDownloadRow(kBinaryFileName), 130 CreateTestDownloadRow(kBinaryFileName),
127 base::Bind(&LastDownloadFinderTest::OnDownloadCreated, 131 base::Bind(&LastDownloadFinderTest::OnDownloadCreated,
128 base::Unretained(this))); 132 base::Unretained(this)));
129 } 133 }
130 134
131 // LastDownloadFinder::LastDownloadCallback implementation that 135 // LastDownloadFinder::LastDownloadCallback implementation that
132 // passes the found download to |result| and then runs a closure. 136 // passes the found download to |result| and then runs a closure.
133 void OnLastDownload(scoped_ptr<ClientIncidentReport_DownloadDetails>* result, 137 void OnLastDownload(
134 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails>* 138 std::unique_ptr<ClientIncidentReport_DownloadDetails>* result,
135 non_binary_result, 139 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>*
136 const base::Closure& quit_closure, 140 non_binary_result,
137 scoped_ptr<ClientIncidentReport_DownloadDetails> download, 141 const base::Closure& quit_closure,
138 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 142 std::unique_ptr<ClientIncidentReport_DownloadDetails> download,
139 non_binary_download) { 143 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
144 non_binary_download) {
140 *result = std::move(download); 145 *result = std::move(download);
141 *non_binary_result = std::move(non_binary_download); 146 *non_binary_result = std::move(non_binary_download);
142 quit_closure.Run(); 147 quit_closure.Run();
143 } 148 }
144 149
145 protected: 150 protected:
146 // A type for specifying whether or not a profile created by CreateProfile 151 // A type for specifying whether or not a profile created by CreateProfile
147 // participates in safe browsing. 152 // participates in safe browsing.
148 enum SafeBrowsingDisposition { 153 enum SafeBrowsingDisposition {
149 SAFE_BROWSING_OPT_OUT, 154 SAFE_BROWSING_OPT_OUT,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 // Build up a custom history service. 186 // Build up a custom history service.
182 factories.push_back(std::make_pair(HistoryServiceFactory::GetInstance(), 187 factories.push_back(std::make_pair(HistoryServiceFactory::GetInstance(),
183 &BuildHistoryService)); 188 &BuildHistoryService));
184 // Suppress WebHistoryService since it makes network requests. 189 // Suppress WebHistoryService since it makes network requests.
185 factories.push_back(std::make_pair( 190 factories.push_back(std::make_pair(
186 WebHistoryServiceFactory::GetInstance(), 191 WebHistoryServiceFactory::GetInstance(),
187 static_cast<BrowserContextKeyedServiceFactory::TestingFactoryFunction>( 192 static_cast<BrowserContextKeyedServiceFactory::TestingFactoryFunction>(
188 NULL))); 193 NULL)));
189 194
190 // Create prefs for the profile with safe browsing enabled or not. 195 // Create prefs for the profile with safe browsing enabled or not.
191 scoped_ptr<syncable_prefs::TestingPrefServiceSyncable> prefs( 196 std::unique_ptr<syncable_prefs::TestingPrefServiceSyncable> prefs(
192 new syncable_prefs::TestingPrefServiceSyncable); 197 new syncable_prefs::TestingPrefServiceSyncable);
193 chrome::RegisterUserProfilePrefs(prefs->registry()); 198 chrome::RegisterUserProfilePrefs(prefs->registry());
194 prefs->SetBoolean(prefs::kSafeBrowsingEnabled, 199 prefs->SetBoolean(prefs::kSafeBrowsingEnabled,
195 safe_browsing_opt_in != SAFE_BROWSING_OPT_OUT); 200 safe_browsing_opt_in != SAFE_BROWSING_OPT_OUT);
196 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, 201 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled,
197 safe_browsing_opt_in == EXTENDED_REPORTING_OPT_IN); 202 safe_browsing_opt_in == EXTENDED_REPORTING_OPT_IN);
198 203
199 TestingProfile* profile = profile_manager_->CreateTestingProfile( 204 TestingProfile* profile = profile_manager_->CreateTestingProfile(
200 profile_name, std::move(prefs), 205 profile_name, std::move(prefs),
201 base::UTF8ToUTF16(profile_name), // user_name 206 base::UTF8ToUTF16(profile_name), // user_name
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 HistoryServiceFactory::GetForProfile(profile, 244 HistoryServiceFactory::GetForProfile(profile,
240 ServiceAccessType::EXPLICIT_ACCESS) 245 ServiceAccessType::EXPLICIT_ACCESS)
241 ->FlushForTest(run_loop.QuitClosure()); 246 ->FlushForTest(run_loop.QuitClosure());
242 run_loop.Run(); 247 run_loop.Run();
243 // Then make sure anything bounced back to the main thread has been handled. 248 // Then make sure anything bounced back to the main thread has been handled.
244 base::RunLoop().RunUntilIdle(); 249 base::RunLoop().RunUntilIdle();
245 } 250 }
246 251
247 // Runs the last download finder on all loaded profiles. 252 // Runs the last download finder on all loaded profiles.
248 void RunLastDownloadFinder( 253 void RunLastDownloadFinder(
249 scoped_ptr<ClientIncidentReport_DownloadDetails>* last_binary_download, 254 std::unique_ptr<ClientIncidentReport_DownloadDetails>*
250 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails>* 255 last_binary_download,
256 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>*
251 last_non_binary_download) { 257 last_non_binary_download) {
252 base::RunLoop run_loop; 258 base::RunLoop run_loop;
253 259
254 scoped_ptr<LastDownloadFinder> finder(LastDownloadFinder::Create( 260 std::unique_ptr<LastDownloadFinder> finder(LastDownloadFinder::Create(
255 GetDownloadDetailsGetter(), 261 GetDownloadDetailsGetter(),
256 base::Bind(&LastDownloadFinderTest::OnLastDownload, 262 base::Bind(&LastDownloadFinderTest::OnLastDownload,
257 base::Unretained(this), last_binary_download, 263 base::Unretained(this), last_binary_download,
258 last_non_binary_download, run_loop.QuitClosure()))); 264 last_non_binary_download, run_loop.QuitClosure())));
259 265
260 if (finder) 266 if (finder)
261 run_loop.Run(); 267 run_loop.Run();
262 } 268 }
263 269
264 history::DownloadRow CreateTestDownloadRow( 270 history::DownloadRow CreateTestDownloadRow(
(...skipping 19 matching lines...) Expand all
284 content::DOWNLOAD_INTERRUPT_REASON_NONE), // interrupt_reason, 290 content::DOWNLOAD_INTERRUPT_REASON_NONE), // interrupt_reason,
285 std::string(), // hash 291 std::string(), // hash
286 download_id_++, // id 292 download_id_++, // id
287 base::GenerateGUID(), 293 base::GenerateGUID(),
288 false, // download_opened 294 false, // download_opened
289 std::string(), // ext_id 295 std::string(), // ext_id
290 std::string()); // ext_name 296 std::string()); // ext_name
291 } 297 }
292 298
293 content::TestBrowserThreadBundle browser_thread_bundle_; 299 content::TestBrowserThreadBundle browser_thread_bundle_;
294 scoped_ptr<TestingProfileManager> profile_manager_; 300 std::unique_ptr<TestingProfileManager> profile_manager_;
295 301
296 private: 302 private:
297 // A HistoryService::DownloadCreateCallback that asserts that the download was 303 // A HistoryService::DownloadCreateCallback that asserts that the download was
298 // created and runs |closure|. 304 // created and runs |closure|.
299 void ContinueOnDownloadCreated(const base::Closure& closure, bool created) { 305 void ContinueOnDownloadCreated(const base::Closure& closure, bool created) {
300 ASSERT_TRUE(created); 306 ASSERT_TRUE(created);
301 closure.Run(); 307 closure.Run();
302 } 308 }
303 309
304 // A HistoryService::DownloadCreateCallback that asserts that the download was 310 // A HistoryService::DownloadCreateCallback that asserts that the download was
305 // created. 311 // created.
306 void OnDownloadCreated(bool created) { ASSERT_TRUE(created); } 312 void OnDownloadCreated(bool created) { ASSERT_TRUE(created); }
307 313
308 void GetDownloadDetails( 314 void GetDownloadDetails(
309 content::BrowserContext* context, 315 content::BrowserContext* context,
310 const DownloadMetadataManager::GetDownloadDetailsCallback& callback) { 316 const DownloadMetadataManager::GetDownloadDetailsCallback& callback) {
311 callback.Run(scoped_ptr<ClientIncidentReport_DownloadDetails>()); 317 callback.Run(std::unique_ptr<ClientIncidentReport_DownloadDetails>());
312 } 318 }
313 319
314 int profile_number_; 320 int profile_number_;
315 321
316 // Incremented on every download addition to avoid downloads with the same id. 322 // Incremented on every download addition to avoid downloads with the same id.
317 int download_id_; 323 int download_id_;
318 }; 324 };
319 325
320 // Tests that nothing happens if there are no profiles at all. 326 // Tests that nothing happens if there are no profiles at all.
321 TEST_F(LastDownloadFinderTest, NoProfiles) { 327 TEST_F(LastDownloadFinderTest, NoProfiles) {
322 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 328 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
323 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 329 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
324 last_non_binary_download; 330 last_non_binary_download;
325 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download); 331 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download);
326 EXPECT_FALSE(last_binary_download); 332 EXPECT_FALSE(last_binary_download);
327 EXPECT_FALSE(last_non_binary_download); 333 EXPECT_FALSE(last_non_binary_download);
328 } 334 }
329 335
330 // Tests that nothing happens other than the callback being invoked if there are 336 // Tests that nothing happens other than the callback being invoked if there are
331 // no profiles participating in safe browsing. 337 // no profiles participating in safe browsing.
332 TEST_F(LastDownloadFinderTest, NoParticipatingProfiles) { 338 TEST_F(LastDownloadFinderTest, NoParticipatingProfiles) {
333 // Create a profile with a history service that is opted-out 339 // Create a profile with a history service that is opted-out
334 TestingProfile* profile = CreateProfile(SAFE_BROWSING_OPT_OUT); 340 TestingProfile* profile = CreateProfile(SAFE_BROWSING_OPT_OUT);
335 341
336 // Add a download. 342 // Add a download.
337 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName)); 343 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName));
338 344
339 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 345 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
340 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 346 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
341 last_non_binary_download; 347 last_non_binary_download;
342 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download); 348 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download);
343 EXPECT_FALSE(last_binary_download); 349 EXPECT_FALSE(last_binary_download);
344 EXPECT_FALSE(last_non_binary_download); 350 EXPECT_FALSE(last_non_binary_download);
345 } 351 }
346 352
347 // Tests that a download is found from a single profile. 353 // Tests that a download is found from a single profile.
348 TEST_F(LastDownloadFinderTest, SimpleEndToEnd) { 354 TEST_F(LastDownloadFinderTest, SimpleEndToEnd) {
349 // Create a profile with a history service that is opted-in. 355 // Create a profile with a history service that is opted-in.
350 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN); 356 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN);
351 357
352 // Add a binary and non-binary download. 358 // Add a binary and non-binary download.
353 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName)); 359 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName));
354 AddDownload(profile, CreateTestDownloadRow(kPDFFileName)); 360 AddDownload(profile, CreateTestDownloadRow(kPDFFileName));
355 361
356 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 362 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
357 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 363 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
358 last_non_binary_download; 364 last_non_binary_download;
359 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download); 365 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download);
360 EXPECT_TRUE(last_binary_download); 366 EXPECT_TRUE(last_binary_download);
361 EXPECT_TRUE(last_non_binary_download); 367 EXPECT_TRUE(last_non_binary_download);
362 } 368 }
363 369
364 // Tests that a non-binary download is found 370 // Tests that a non-binary download is found
365 TEST_F(LastDownloadFinderTest, NonBinaryOnly) { 371 TEST_F(LastDownloadFinderTest, NonBinaryOnly) {
366 // Create a profile with a history service that is opted-in. 372 // Create a profile with a history service that is opted-in.
367 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN); 373 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN);
368 374
369 // Add a non-binary download. 375 // Add a non-binary download.
370 AddDownload(profile, CreateTestDownloadRow(kPDFFileName)); 376 AddDownload(profile, CreateTestDownloadRow(kPDFFileName));
371 377
372 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 378 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
373 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 379 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
374 last_non_binary_download; 380 last_non_binary_download;
375 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download); 381 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download);
376 EXPECT_FALSE(last_binary_download); 382 EXPECT_FALSE(last_binary_download);
377 EXPECT_TRUE(last_non_binary_download); 383 EXPECT_TRUE(last_non_binary_download);
378 } 384 }
379 385
380 // Tests that a download is found from a single profile when the field trial is 386 // Tests that a download is found from a single profile when the field trial is
381 // enabled. 387 // enabled.
382 TEST_F(LastDownloadFinderTest, SimpleEndToEndFieldTrial) { 388 TEST_F(LastDownloadFinderTest, SimpleEndToEndFieldTrial) {
383 // Set up a field trial 389 // Set up a field trial
384 base::FieldTrialList field_trial_list(new base::MockEntropyProvider()); 390 base::FieldTrialList field_trial_list(new base::MockEntropyProvider());
385 base::FieldTrialList::CreateFieldTrial("SafeBrowsingIncidentReportingService", 391 base::FieldTrialList::CreateFieldTrial("SafeBrowsingIncidentReportingService",
386 "Enabled"); 392 "Enabled");
387 // Create a profile with a history service that is opted-in to Safe Browsing 393 // Create a profile with a history service that is opted-in to Safe Browsing
388 // only. 394 // only.
389 TestingProfile* profile = CreateProfile(SAFE_BROWSING_OPT_IN); 395 TestingProfile* profile = CreateProfile(SAFE_BROWSING_OPT_IN);
390 396
391 // Add a download. 397 // Add a download.
392 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName)); 398 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName));
393 399
394 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 400 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
395 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 401 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
396 last_non_binary_download; 402 last_non_binary_download;
397 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download); 403 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download);
398 EXPECT_FALSE(last_non_binary_download); 404 EXPECT_FALSE(last_non_binary_download);
399 EXPECT_TRUE(last_binary_download); 405 EXPECT_TRUE(last_binary_download);
400 } 406 }
401 407
402 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_ANDROID) 408 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_ANDROID)
403 // Tests that nothing happens if the binary is an executable for a different OS. 409 // Tests that nothing happens if the binary is an executable for a different OS.
404 TEST_F(LastDownloadFinderTest, DownloadForDifferentOs) { 410 TEST_F(LastDownloadFinderTest, DownloadForDifferentOs) {
405 // Create a profile with a history service that is opted-in. 411 // Create a profile with a history service that is opted-in.
406 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN); 412 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN);
407 413
408 // Add a download. 414 // Add a download.
409 AddDownload(profile, CreateTestDownloadRow(kBinaryFileNameForOtherOS)); 415 AddDownload(profile, CreateTestDownloadRow(kBinaryFileNameForOtherOS));
410 416
411 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 417 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
412 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 418 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
413 last_non_binary_download; 419 last_non_binary_download;
414 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download); 420 RunLastDownloadFinder(&last_binary_download, &last_non_binary_download);
415 EXPECT_FALSE(last_binary_download); 421 EXPECT_FALSE(last_binary_download);
416 EXPECT_FALSE(last_non_binary_download); 422 EXPECT_FALSE(last_non_binary_download);
417 } 423 }
418 #endif 424 #endif
419 425
420 // Tests that there is no crash if the finder is deleted before results arrive. 426 // Tests that there is no crash if the finder is deleted before results arrive.
421 TEST_F(LastDownloadFinderTest, DeleteBeforeResults) { 427 TEST_F(LastDownloadFinderTest, DeleteBeforeResults) {
422 // Create a profile with a history service that is opted-in. 428 // Create a profile with a history service that is opted-in.
423 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN); 429 TestingProfile* profile = CreateProfile(EXTENDED_REPORTING_OPT_IN);
424 430
425 // Add a download. 431 // Add a download.
426 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName)); 432 AddDownload(profile, CreateTestDownloadRow(kBinaryFileName));
427 433
428 // Start a finder and kill it before the search completes. 434 // Start a finder and kill it before the search completes.
429 LastDownloadFinder::Create(GetDownloadDetailsGetter(), 435 LastDownloadFinder::Create(GetDownloadDetailsGetter(),
430 base::Bind(&LastDownloadFinderTest::NeverCalled, 436 base::Bind(&LastDownloadFinderTest::NeverCalled,
431 base::Unretained(this))).reset(); 437 base::Unretained(this))).reset();
432 438
433 // Flush tasks on the history backend thread. 439 // Flush tasks on the history backend thread.
434 FlushHistoryBackend(profile); 440 FlushHistoryBackend(profile);
435 } 441 }
436 442
437 // Tests that a download in profile added after the search is begun is found. 443 // Tests that a download in profile added after the search is begun is found.
438 TEST_F(LastDownloadFinderTest, AddProfileAfterStarting) { 444 TEST_F(LastDownloadFinderTest, AddProfileAfterStarting) {
439 // Create a profile with a history service that is opted-in. 445 // Create a profile with a history service that is opted-in.
440 CreateProfile(EXTENDED_REPORTING_OPT_IN); 446 CreateProfile(EXTENDED_REPORTING_OPT_IN);
441 447
442 scoped_ptr<ClientIncidentReport_DownloadDetails> last_binary_download; 448 std::unique_ptr<ClientIncidentReport_DownloadDetails> last_binary_download;
443 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> 449 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
444 last_non_binary_download; 450 last_non_binary_download;
445 base::RunLoop run_loop; 451 base::RunLoop run_loop;
446 452
447 // Post a task that will create a second profile once the main loop is run. 453 // Post a task that will create a second profile once the main loop is run.
448 base::ThreadTaskRunnerHandle::Get()->PostTask( 454 base::ThreadTaskRunnerHandle::Get()->PostTask(
449 FROM_HERE, base::Bind(&LastDownloadFinderTest::CreateProfileWithDownload, 455 FROM_HERE, base::Bind(&LastDownloadFinderTest::CreateProfileWithDownload,
450 base::Unretained(this))); 456 base::Unretained(this)));
451 457
452 // Create a finder that we expect will find a download in the second profile. 458 // Create a finder that we expect will find a download in the second profile.
453 scoped_ptr<LastDownloadFinder> finder(LastDownloadFinder::Create( 459 std::unique_ptr<LastDownloadFinder> finder(LastDownloadFinder::Create(
454 GetDownloadDetailsGetter(), 460 GetDownloadDetailsGetter(),
455 base::Bind(&LastDownloadFinderTest::OnLastDownload, 461 base::Bind(&LastDownloadFinderTest::OnLastDownload,
456 base::Unretained(this), &last_binary_download, 462 base::Unretained(this), &last_binary_download,
457 &last_non_binary_download, run_loop.QuitClosure()))); 463 &last_non_binary_download, run_loop.QuitClosure())));
458 464
459 run_loop.Run(); 465 run_loop.Run();
460 466
461 ASSERT_TRUE(last_binary_download); 467 ASSERT_TRUE(last_binary_download);
462 } 468 }
463 469
464 } // namespace safe_browsing 470 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698