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

Side by Side Diff: content/browser/download/download_browsertest.cc

Issue 667943003: Standardize usage of virtual/override/final in content/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // This file contains download browser tests that are known to be runnable 5 // This file contains download browser tests that are known to be runnable
6 // in a pure content context. Over time tests should be migrated here. 6 // in a pure content context. Over time tests should be migrated here.
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 const base::FilePath& default_download_directory, 115 const base::FilePath& default_download_directory,
116 const GURL& url, 116 const GURL& url,
117 const GURL& referrer_url, 117 const GURL& referrer_url,
118 bool calculate_hash, 118 bool calculate_hash,
119 scoped_ptr<ByteStreamReader> stream, 119 scoped_ptr<ByteStreamReader> stream,
120 const net::BoundNetLog& bound_net_log, 120 const net::BoundNetLog& bound_net_log,
121 scoped_ptr<PowerSaveBlocker> power_save_blocker, 121 scoped_ptr<PowerSaveBlocker> power_save_blocker,
122 base::WeakPtr<DownloadDestinationObserver> observer, 122 base::WeakPtr<DownloadDestinationObserver> observer,
123 base::WeakPtr<DownloadFileWithDelayFactory> owner); 123 base::WeakPtr<DownloadFileWithDelayFactory> owner);
124 124
125 virtual ~DownloadFileWithDelay(); 125 ~DownloadFileWithDelay() override;
126 126
127 // Wraps DownloadFileImpl::Rename* and intercepts the return callback, 127 // Wraps DownloadFileImpl::Rename* and intercepts the return callback,
128 // storing it in the factory that produced this object for later 128 // storing it in the factory that produced this object for later
129 // retrieval. 129 // retrieval.
130 virtual void RenameAndUniquify( 130 void RenameAndUniquify(const base::FilePath& full_path,
131 const base::FilePath& full_path, 131 const RenameCompletionCallback& callback) override;
132 const RenameCompletionCallback& callback) override; 132 void RenameAndAnnotate(const base::FilePath& full_path,
133 virtual void RenameAndAnnotate( 133 const RenameCompletionCallback& callback) override;
134 const base::FilePath& full_path,
135 const RenameCompletionCallback& callback) override;
136 134
137 private: 135 private:
138 static void RenameCallbackWrapper( 136 static void RenameCallbackWrapper(
139 const base::WeakPtr<DownloadFileWithDelayFactory>& factory, 137 const base::WeakPtr<DownloadFileWithDelayFactory>& factory,
140 const RenameCompletionCallback& original_callback, 138 const RenameCompletionCallback& original_callback,
141 DownloadInterruptReason reason, 139 DownloadInterruptReason reason,
142 const base::FilePath& path); 140 const base::FilePath& path);
143 141
144 // This variable may only be read on the FILE thread, and may only be 142 // This variable may only be read on the FILE thread, and may only be
145 // indirected through (e.g. methods on DownloadFileWithDelayFactory called) 143 // indirected through (e.g. methods on DownloadFileWithDelayFactory called)
146 // on the UI thread. This is because after construction, 144 // on the UI thread. This is because after construction,
147 // DownloadFileWithDelay lives on the file thread, but 145 // DownloadFileWithDelay lives on the file thread, but
148 // DownloadFileWithDelayFactory is purely a UI thread object. 146 // DownloadFileWithDelayFactory is purely a UI thread object.
149 base::WeakPtr<DownloadFileWithDelayFactory> owner_; 147 base::WeakPtr<DownloadFileWithDelayFactory> owner_;
150 148
151 DISALLOW_COPY_AND_ASSIGN(DownloadFileWithDelay); 149 DISALLOW_COPY_AND_ASSIGN(DownloadFileWithDelay);
152 }; 150 };
153 151
154 // All routines on this class must be called on the UI thread. 152 // All routines on this class must be called on the UI thread.
155 class DownloadFileWithDelayFactory : public DownloadFileFactory { 153 class DownloadFileWithDelayFactory : public DownloadFileFactory {
156 public: 154 public:
157 DownloadFileWithDelayFactory(); 155 DownloadFileWithDelayFactory();
158 virtual ~DownloadFileWithDelayFactory(); 156 ~DownloadFileWithDelayFactory() override;
159 157
160 // DownloadFileFactory interface. 158 // DownloadFileFactory interface.
161 virtual DownloadFile* CreateFile( 159 DownloadFile* CreateFile(
162 scoped_ptr<DownloadSaveInfo> save_info, 160 scoped_ptr<DownloadSaveInfo> save_info,
163 const base::FilePath& default_download_directory, 161 const base::FilePath& default_download_directory,
164 const GURL& url, 162 const GURL& url,
165 const GURL& referrer_url, 163 const GURL& referrer_url,
166 bool calculate_hash, 164 bool calculate_hash,
167 scoped_ptr<ByteStreamReader> stream, 165 scoped_ptr<ByteStreamReader> stream,
168 const net::BoundNetLog& bound_net_log, 166 const net::BoundNetLog& bound_net_log,
169 base::WeakPtr<DownloadDestinationObserver> observer) override; 167 base::WeakPtr<DownloadDestinationObserver> observer) override;
170 168
171 void AddRenameCallback(base::Closure callback); 169 void AddRenameCallback(base::Closure callback);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 const GURL& referrer_url, 283 const GURL& referrer_url,
286 bool calculate_hash, 284 bool calculate_hash,
287 scoped_ptr<ByteStreamReader> stream, 285 scoped_ptr<ByteStreamReader> stream,
288 const net::BoundNetLog& bound_net_log, 286 const net::BoundNetLog& bound_net_log,
289 scoped_ptr<PowerSaveBlocker> power_save_blocker, 287 scoped_ptr<PowerSaveBlocker> power_save_blocker,
290 base::WeakPtr<DownloadDestinationObserver> observer) 288 base::WeakPtr<DownloadDestinationObserver> observer)
291 : DownloadFileImpl(save_info.Pass(), default_downloads_directory, 289 : DownloadFileImpl(save_info.Pass(), default_downloads_directory,
292 url, referrer_url, calculate_hash, 290 url, referrer_url, calculate_hash,
293 stream.Pass(), bound_net_log, observer) {} 291 stream.Pass(), bound_net_log, observer) {}
294 292
295 virtual ~CountingDownloadFile() { 293 ~CountingDownloadFile() override {
296 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 294 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
297 active_files_--; 295 active_files_--;
298 } 296 }
299 297
300 virtual void Initialize(const InitializeCallback& callback) override { 298 void Initialize(const InitializeCallback& callback) override {
301 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 299 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
302 active_files_++; 300 active_files_++;
303 return DownloadFileImpl::Initialize(callback); 301 return DownloadFileImpl::Initialize(callback);
304 } 302 }
305 303
306 static void GetNumberActiveFiles(int* result) { 304 static void GetNumberActiveFiles(int* result) {
307 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 305 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
308 *result = active_files_; 306 *result = active_files_;
309 } 307 }
310 308
(...skipping 13 matching lines...) Expand all
324 322
325 private: 323 private:
326 static int active_files_; 324 static int active_files_;
327 }; 325 };
328 326
329 int CountingDownloadFile::active_files_ = 0; 327 int CountingDownloadFile::active_files_ = 0;
330 328
331 class CountingDownloadFileFactory : public DownloadFileFactory { 329 class CountingDownloadFileFactory : public DownloadFileFactory {
332 public: 330 public:
333 CountingDownloadFileFactory() {} 331 CountingDownloadFileFactory() {}
334 virtual ~CountingDownloadFileFactory() {} 332 ~CountingDownloadFileFactory() override {}
335 333
336 // DownloadFileFactory interface. 334 // DownloadFileFactory interface.
337 virtual DownloadFile* CreateFile( 335 DownloadFile* CreateFile(
338 scoped_ptr<DownloadSaveInfo> save_info, 336 scoped_ptr<DownloadSaveInfo> save_info,
339 const base::FilePath& default_downloads_directory, 337 const base::FilePath& default_downloads_directory,
340 const GURL& url, 338 const GURL& url,
341 const GURL& referrer_url, 339 const GURL& referrer_url,
342 bool calculate_hash, 340 bool calculate_hash,
343 scoped_ptr<ByteStreamReader> stream, 341 scoped_ptr<ByteStreamReader> stream,
344 const net::BoundNetLog& bound_net_log, 342 const net::BoundNetLog& bound_net_log,
345 base::WeakPtr<DownloadDestinationObserver> observer) override { 343 base::WeakPtr<DownloadDestinationObserver> observer) override {
346 scoped_ptr<PowerSaveBlocker> psb( 344 scoped_ptr<PowerSaveBlocker> psb(
347 PowerSaveBlocker::Create( 345 PowerSaveBlocker::Create(
348 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, 346 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension,
349 "Download in progress")); 347 "Download in progress"));
350 return new CountingDownloadFile( 348 return new CountingDownloadFile(
351 save_info.Pass(), default_downloads_directory, url, referrer_url, 349 save_info.Pass(), default_downloads_directory, url, referrer_url,
352 calculate_hash, stream.Pass(), bound_net_log, 350 calculate_hash, stream.Pass(), bound_net_log,
353 psb.Pass(), observer); 351 psb.Pass(), observer);
354 } 352 }
355 }; 353 };
356 354
357 class TestShellDownloadManagerDelegate : public ShellDownloadManagerDelegate { 355 class TestShellDownloadManagerDelegate : public ShellDownloadManagerDelegate {
358 public: 356 public:
359 TestShellDownloadManagerDelegate() 357 TestShellDownloadManagerDelegate()
360 : delay_download_open_(false) {} 358 : delay_download_open_(false) {}
361 virtual ~TestShellDownloadManagerDelegate() {} 359 ~TestShellDownloadManagerDelegate() override {}
362 360
363 virtual bool ShouldOpenDownload( 361 bool ShouldOpenDownload(
364 DownloadItem* item, 362 DownloadItem* item,
365 const DownloadOpenDelayedCallback& callback) override { 363 const DownloadOpenDelayedCallback& callback) override {
366 if (delay_download_open_) { 364 if (delay_download_open_) {
367 delayed_callbacks_.push_back(callback); 365 delayed_callbacks_.push_back(callback);
368 return false; 366 return false;
369 } 367 }
370 return true; 368 return true;
371 } 369 }
372 370
373 void SetDelayedOpen(bool delay) { 371 void SetDelayedOpen(bool delay) {
(...skipping 19 matching lines...) Expand all
393 391
394 typedef std::vector<RecordStruct> RecordVector; 392 typedef std::vector<RecordStruct> RecordVector;
395 393
396 RecordingDownloadObserver(DownloadItem* download) 394 RecordingDownloadObserver(DownloadItem* download)
397 : download_(download) { 395 : download_(download) {
398 last_state_.state = download->GetState(); 396 last_state_.state = download->GetState();
399 last_state_.bytes_received = download->GetReceivedBytes(); 397 last_state_.bytes_received = download->GetReceivedBytes();
400 download_->AddObserver(this); 398 download_->AddObserver(this);
401 } 399 }
402 400
403 virtual ~RecordingDownloadObserver() { 401 ~RecordingDownloadObserver() override { RemoveObserver(); }
404 RemoveObserver();
405 }
406 402
407 void CompareToExpectedRecord(const RecordStruct expected[], size_t size) { 403 void CompareToExpectedRecord(const RecordStruct expected[], size_t size) {
408 EXPECT_EQ(size, record_.size()); 404 EXPECT_EQ(size, record_.size());
409 int min = size > record_.size() ? record_.size() : size; 405 int min = size > record_.size() ? record_.size() : size;
410 for (int i = 0; i < min; ++i) { 406 for (int i = 0; i < min; ++i) {
411 EXPECT_EQ(expected[i].state, record_[i].state) << "Iteration " << i; 407 EXPECT_EQ(expected[i].state, record_[i].state) << "Iteration " << i;
412 EXPECT_EQ(expected[i].bytes_received, record_[i].bytes_received) 408 EXPECT_EQ(expected[i].bytes_received, record_[i].bytes_received)
413 << "Iteration " << i; 409 << "Iteration " << i;
414 } 410 }
415 } 411 }
416 412
417 private: 413 private:
418 virtual void OnDownloadUpdated(DownloadItem* download) override { 414 void OnDownloadUpdated(DownloadItem* download) override {
419 DCHECK_EQ(download_, download); 415 DCHECK_EQ(download_, download);
420 DownloadItem::DownloadState state = download->GetState(); 416 DownloadItem::DownloadState state = download->GetState();
421 int bytes = download->GetReceivedBytes(); 417 int bytes = download->GetReceivedBytes();
422 if (last_state_.state != state || last_state_.bytes_received > bytes) { 418 if (last_state_.state != state || last_state_.bytes_received > bytes) {
423 last_state_.state = state; 419 last_state_.state = state;
424 last_state_.bytes_received = bytes; 420 last_state_.bytes_received = bytes;
425 record_.push_back(last_state_); 421 record_.push_back(last_state_);
426 } 422 }
427 } 423 }
428 424
429 virtual void OnDownloadDestroyed(DownloadItem* download) override { 425 void OnDownloadDestroyed(DownloadItem* download) override {
430 DCHECK_EQ(download_, download); 426 DCHECK_EQ(download_, download);
431 RemoveObserver(); 427 RemoveObserver();
432 } 428 }
433 429
434 void RemoveObserver() { 430 void RemoveObserver() {
435 if (download_) { 431 if (download_) {
436 download_->RemoveObserver(this); 432 download_->RemoveObserver(this);
437 download_ = NULL; 433 download_ = NULL;
438 } 434 }
439 } 435 }
440 436
441 DownloadItem* download_; 437 DownloadItem* download_;
442 RecordStruct last_state_; 438 RecordStruct last_state_;
443 RecordVector record_; 439 RecordVector record_;
444 }; 440 };
445 441
446 // Get the next created download. 442 // Get the next created download.
447 class DownloadCreateObserver : DownloadManager::Observer { 443 class DownloadCreateObserver : DownloadManager::Observer {
448 public: 444 public:
449 DownloadCreateObserver(DownloadManager* manager) 445 DownloadCreateObserver(DownloadManager* manager)
450 : manager_(manager), 446 : manager_(manager),
451 item_(NULL), 447 item_(NULL),
452 waiting_(false) { 448 waiting_(false) {
453 manager_->AddObserver(this); 449 manager_->AddObserver(this);
454 } 450 }
455 451
456 virtual ~DownloadCreateObserver() { 452 ~DownloadCreateObserver() override {
457 if (manager_) 453 if (manager_)
458 manager_->RemoveObserver(this); 454 manager_->RemoveObserver(this);
459 manager_ = NULL; 455 manager_ = NULL;
460 } 456 }
461 457
462 virtual void ManagerGoingDown(DownloadManager* manager) override { 458 void ManagerGoingDown(DownloadManager* manager) override {
463 DCHECK_EQ(manager_, manager); 459 DCHECK_EQ(manager_, manager);
464 manager_->RemoveObserver(this); 460 manager_->RemoveObserver(this);
465 manager_ = NULL; 461 manager_ = NULL;
466 } 462 }
467 463
468 virtual void OnDownloadCreated(DownloadManager* manager, 464 void OnDownloadCreated(DownloadManager* manager,
469 DownloadItem* download) override { 465 DownloadItem* download) override {
470 if (!item_) 466 if (!item_)
471 item_ = download; 467 item_ = download;
472 468
473 if (waiting_) 469 if (waiting_)
474 base::MessageLoopForUI::current()->Quit(); 470 base::MessageLoopForUI::current()->Quit();
475 } 471 }
476 472
477 DownloadItem* WaitForFinished() { 473 DownloadItem* WaitForFinished() {
478 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 474 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
479 if (!item_) { 475 if (!item_) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 // help up by buffering in the underlying downloads ByteStream data 563 // help up by buffering in the underlying downloads ByteStream data
568 // transfer. This is important because on resumption tests we wait 564 // transfer. This is important because on resumption tests we wait
569 // until we've gotten the data we expect before allowing the test server 565 // until we've gotten the data we expect before allowing the test server
570 // to send its reset, to get around hard close semantics on the Windows 566 // to send its reset, to get around hard close semantics on the Windows
571 // socket layer implementation. 567 // socket layer implementation.
572 int GetSafeBufferChunk() const { 568 int GetSafeBufferChunk() const {
573 return (DownloadResourceHandler::kDownloadByteStreamSize / 569 return (DownloadResourceHandler::kDownloadByteStreamSize /
574 ByteStreamWriter::kFractionBufferBeforeSending) + 1; 570 ByteStreamWriter::kFractionBufferBeforeSending) + 1;
575 } 571 }
576 572
577 virtual void SetUpOnMainThread() override { 573 void SetUpOnMainThread() override {
578 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir()); 574 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir());
579 575
580 test_delegate_.reset(new TestShellDownloadManagerDelegate()); 576 test_delegate_.reset(new TestShellDownloadManagerDelegate());
581 test_delegate_->SetDownloadBehaviorForTesting(downloads_directory_.path()); 577 test_delegate_->SetDownloadBehaviorForTesting(downloads_directory_.path());
582 DownloadManager* manager = DownloadManagerForShell(shell()); 578 DownloadManager* manager = DownloadManagerForShell(shell());
583 manager->GetDelegate()->Shutdown(); 579 manager->GetDelegate()->Shutdown();
584 manager->SetDelegate(test_delegate_.get()); 580 manager->SetDelegate(test_delegate_.get());
585 test_delegate_->SetDownloadManager(manager); 581 test_delegate_->SetDownloadManager(manager);
586 582
587 BrowserThread::PostTask( 583 BrowserThread::PostTask(
(...skipping 1226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 ASSERT_TRUE(test_server.InitializeAndWaitUntilReady()); 1810 ASSERT_TRUE(test_server.InitializeAndWaitUntilReady());
1815 1811
1816 GURL url = test_server.GetURL("/empty.bin"); 1812 GURL url = test_server.GetURL("/empty.bin");
1817 test_server.ServeFilesFromDirectory(GetTestFilePath("download", "")); 1813 test_server.ServeFilesFromDirectory(GetTestFilePath("download", ""));
1818 1814
1819 NavigateToURLAndWaitForDownload(shell(), url, DownloadItem::COMPLETE); 1815 NavigateToURLAndWaitForDownload(shell(), url, DownloadItem::COMPLETE);
1820 // That's it. This should work without crashing. 1816 // That's it. This should work without crashing.
1821 } 1817 }
1822 1818
1823 } // namespace content 1819 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/dom_storage/session_storage_namespace_impl.h ('k') | content/browser/download/download_file_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698