| OLD | NEW |
| 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 #include "content/public/test/test_file_error_injector.h" | 5 #include "content/public/test/test_file_error_injector.h" |
| 6 | 6 |
| 7 #include <utility> |
| 7 #include <vector> | 8 #include <vector> |
| 8 | 9 |
| 9 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 10 #include "base/logging.h" | 11 #include "base/logging.h" |
| 11 #include "content/browser/download/download_file_factory.h" | 12 #include "content/browser/download/download_file_factory.h" |
| 12 #include "content/browser/download/download_file_impl.h" | 13 #include "content/browser/download/download_file_impl.h" |
| 13 #include "content/browser/download/download_interrupt_reasons_impl.h" | 14 #include "content/browser/download/download_interrupt_reasons_impl.h" |
| 14 #include "content/browser/download/download_manager_impl.h" | 15 #include "content/browser/download/download_manager_impl.h" |
| 15 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 16 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 16 #include "content/public/browser/browser_thread.h" | 17 #include "content/public/browser/browser_thread.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 const base::FilePath& default_download_directory, | 105 const base::FilePath& default_download_directory, |
| 105 const GURL& url, | 106 const GURL& url, |
| 106 const GURL& referrer_url, | 107 const GURL& referrer_url, |
| 107 bool calculate_hash, | 108 bool calculate_hash, |
| 108 scoped_ptr<ByteStreamReader> stream, | 109 scoped_ptr<ByteStreamReader> stream, |
| 109 const net::BoundNetLog& bound_net_log, | 110 const net::BoundNetLog& bound_net_log, |
| 110 base::WeakPtr<DownloadDestinationObserver> observer, | 111 base::WeakPtr<DownloadDestinationObserver> observer, |
| 111 const TestFileErrorInjector::FileErrorInfo& error_info, | 112 const TestFileErrorInjector::FileErrorInfo& error_info, |
| 112 const ConstructionCallback& ctor_callback, | 113 const ConstructionCallback& ctor_callback, |
| 113 const DestructionCallback& dtor_callback) | 114 const DestructionCallback& dtor_callback) |
| 114 : DownloadFileImpl( | 115 : DownloadFileImpl(std::move(save_info), |
| 115 save_info.Pass(), default_download_directory, url, referrer_url, | 116 default_download_directory, |
| 116 calculate_hash, stream.Pass(), bound_net_log, observer), | 117 url, |
| 117 source_url_(url), | 118 referrer_url, |
| 118 error_info_(error_info), | 119 calculate_hash, |
| 119 destruction_callback_(dtor_callback) { | 120 std::move(stream), |
| 121 bound_net_log, |
| 122 observer), |
| 123 source_url_(url), |
| 124 error_info_(error_info), |
| 125 destruction_callback_(dtor_callback) { |
| 120 // DownloadFiles are created on the UI thread and are destroyed on the FILE | 126 // DownloadFiles are created on the UI thread and are destroyed on the FILE |
| 121 // thread. Schedule the ConstructionCallback on the FILE thread so that if a | 127 // thread. Schedule the ConstructionCallback on the FILE thread so that if a |
| 122 // DownloadItem schedules a DownloadFile to be destroyed and creates another | 128 // DownloadItem schedules a DownloadFile to be destroyed and creates another |
| 123 // one (as happens during download resumption), then the DestructionCallback | 129 // one (as happens during download resumption), then the DestructionCallback |
| 124 // for the old DownloadFile is run before the ConstructionCallback for the | 130 // for the old DownloadFile is run before the ConstructionCallback for the |
| 125 // next DownloadFile. | 131 // next DownloadFile. |
| 126 BrowserThread::PostTask( | 132 BrowserThread::PostTask( |
| 127 BrowserThread::FILE, | 133 BrowserThread::FILE, |
| 128 FROM_HERE, | 134 FROM_HERE, |
| 129 base::Bind(ctor_callback, source_url_)); | 135 base::Bind(ctor_callback, source_url_)); |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 TestFileErrorInjector::FileErrorInfo err_info = { | 309 TestFileErrorInjector::FileErrorInfo err_info = { |
| 304 url.spec(), | 310 url.spec(), |
| 305 TestFileErrorInjector::FILE_OPERATION_INITIALIZE, | 311 TestFileErrorInjector::FILE_OPERATION_INITIALIZE, |
| 306 -1, | 312 -1, |
| 307 DOWNLOAD_INTERRUPT_REASON_NONE | 313 DOWNLOAD_INTERRUPT_REASON_NONE |
| 308 }; | 314 }; |
| 309 injected_errors_[url.spec()] = err_info; | 315 injected_errors_[url.spec()] = err_info; |
| 310 } | 316 } |
| 311 | 317 |
| 312 return new DownloadFileWithErrors( | 318 return new DownloadFileWithErrors( |
| 313 save_info.Pass(), | 319 std::move(save_info), default_download_directory, url, referrer_url, |
| 314 default_download_directory, | 320 calculate_hash, std::move(stream), bound_net_log, observer, |
| 315 url, | 321 injected_errors_[url.spec()], construction_callback_, |
| 316 referrer_url, | |
| 317 calculate_hash, | |
| 318 stream.Pass(), | |
| 319 bound_net_log, | |
| 320 observer, | |
| 321 injected_errors_[url.spec()], | |
| 322 construction_callback_, | |
| 323 destruction_callback_); | 322 destruction_callback_); |
| 324 } | 323 } |
| 325 | 324 |
| 326 bool DownloadFileWithErrorsFactory::AddError( | 325 bool DownloadFileWithErrorsFactory::AddError( |
| 327 const TestFileErrorInjector::FileErrorInfo& error_info) { | 326 const TestFileErrorInjector::FileErrorInfo& error_info) { |
| 328 // Creates an empty entry if necessary. Duplicate entries overwrite. | 327 // Creates an empty entry if necessary. Duplicate entries overwrite. |
| 329 injected_errors_[error_info.url] = error_info; | 328 injected_errors_[error_info.url] = error_info; |
| 330 | 329 |
| 331 return true; | 330 return true; |
| 332 } | 331 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 347 base::Bind(&TestFileErrorInjector::RecordDownloadFileConstruction, | 346 base::Bind(&TestFileErrorInjector::RecordDownloadFileConstruction, |
| 348 this), | 347 this), |
| 349 base::Bind(&TestFileErrorInjector::RecordDownloadFileDestruction, | 348 base::Bind(&TestFileErrorInjector::RecordDownloadFileDestruction, |
| 350 this)); | 349 this)); |
| 351 | 350 |
| 352 // We will transfer ownership of the factory to the download manager. | 351 // We will transfer ownership of the factory to the download manager. |
| 353 scoped_ptr<DownloadFileFactory> download_file_factory( | 352 scoped_ptr<DownloadFileFactory> download_file_factory( |
| 354 created_factory_); | 353 created_factory_); |
| 355 | 354 |
| 356 download_manager_->SetDownloadFileFactoryForTesting( | 355 download_manager_->SetDownloadFileFactoryForTesting( |
| 357 download_file_factory.Pass()); | 356 std::move(download_file_factory)); |
| 358 } | 357 } |
| 359 | 358 |
| 360 TestFileErrorInjector::~TestFileErrorInjector() { | 359 TestFileErrorInjector::~TestFileErrorInjector() { |
| 361 } | 360 } |
| 362 | 361 |
| 363 bool TestFileErrorInjector::AddError(const FileErrorInfo& error_info) { | 362 bool TestFileErrorInjector::AddError(const FileErrorInfo& error_info) { |
| 364 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 363 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 365 DCHECK_LE(0, error_info.operation_instance); | 364 DCHECK_LE(0, error_info.operation_instance); |
| 366 DCHECK(injected_errors_.find(error_info.url) == injected_errors_.end()); | 365 DCHECK(injected_errors_.find(error_info.url) == injected_errors_.end()); |
| 367 | 366 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 case FILE_OPERATION_RENAME_ANNOTATE: | 465 case FILE_OPERATION_RENAME_ANNOTATE: |
| 467 return "RENAME_ANNOTATE"; | 466 return "RENAME_ANNOTATE"; |
| 468 default: | 467 default: |
| 469 break; | 468 break; |
| 470 } | 469 } |
| 471 | 470 |
| 472 return "Unknown"; | 471 return "Unknown"; |
| 473 } | 472 } |
| 474 | 473 |
| 475 } // namespace content | 474 } // namespace content |
| OLD | NEW |