| 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 <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "content/browser/download/download_file_factory.h" | 13 #include "content/browser/download/download_file_factory.h" |
| 14 #include "content/browser/download/download_file_impl.h" | 14 #include "content/browser/download/download_file_impl.h" |
| 15 #include "content/browser/download/download_interrupt_reasons_impl.h" | 15 #include "content/browser/download/download_interrupt_reasons_impl.h" |
| 16 #include "content/browser/download/download_manager_impl.h" | 16 #include "content/browser/download/download_manager_impl.h" |
| 17 #include "content/browser/download/download_task_runner.h" |
| 17 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 18 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 18 #include "content/public/browser/browser_thread.h" | 19 #include "content/public/browser/browser_thread.h" |
| 19 #include "url/gurl.h" | 20 #include "url/gurl.h" |
| 20 | 21 |
| 21 namespace net { | 22 namespace net { |
| 22 class NetLogWithSource; | 23 class NetLogWithSource; |
| 23 } | 24 } |
| 24 | 25 |
| 25 namespace content { | 26 namespace content { |
| 26 class ByteStreamReader; | 27 class ByteStreamReader; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 const TestFileErrorInjector::FileErrorInfo& error_info, | 114 const TestFileErrorInjector::FileErrorInfo& error_info, |
| 114 const base::Closure& ctor_callback, | 115 const base::Closure& ctor_callback, |
| 115 const base::Closure& dtor_callback) | 116 const base::Closure& dtor_callback) |
| 116 : DownloadFileImpl(std::move(save_info), | 117 : DownloadFileImpl(std::move(save_info), |
| 117 default_download_directory, | 118 default_download_directory, |
| 118 std::move(byte_stream), | 119 std::move(byte_stream), |
| 119 net_log, | 120 net_log, |
| 120 observer), | 121 observer), |
| 121 error_info_(error_info), | 122 error_info_(error_info), |
| 122 destruction_callback_(dtor_callback) { | 123 destruction_callback_(dtor_callback) { |
| 123 // DownloadFiles are created on the UI thread and are destroyed on the FILE | 124 // DownloadFiles are created on the UI thread and are destroyed on the |
| 124 // thread. Schedule the ConstructionCallback on the FILE thread so that if a | 125 // download task runner. Schedule the ConstructionCallback on the |
| 125 // DownloadItem schedules a DownloadFile to be destroyed and creates another | 126 // download task runner, so that if a DownloadItem schedules a |
| 126 // one (as happens during download resumption), then the DestructionCallback | 127 // DownloadFile to be destroyed and creates another one (as happens during |
| 127 // for the old DownloadFile is run before the ConstructionCallback for the | 128 // download resumption), then the DestructionCallback for the old DownloadFile |
| 128 // next DownloadFile. | 129 // is run before the ConstructionCallback for the next DownloadFile. |
| 129 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, ctor_callback); | 130 GetDownloadTaskRunner()->PostTask(FROM_HERE, ctor_callback); |
| 130 } | 131 } |
| 131 | 132 |
| 132 DownloadFileWithError::~DownloadFileWithError() { | 133 DownloadFileWithError::~DownloadFileWithError() { |
| 133 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 134 DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence()); |
| 134 destruction_callback_.Run(); | 135 destruction_callback_.Run(); |
| 135 } | 136 } |
| 136 | 137 |
| 137 void DownloadFileWithError::Initialize( | 138 void DownloadFileWithError::Initialize( |
| 138 const InitializeCallback& initialize_callback, | 139 const InitializeCallback& initialize_callback, |
| 139 const CancelRequestCallback& cancel_request_callback, | 140 const CancelRequestCallback& cancel_request_callback, |
| 140 const DownloadItem::ReceivedSlices& received_slices, | 141 const DownloadItem::ReceivedSlices& received_slices, |
| 141 bool is_parallelizable) { | 142 bool is_parallelizable) { |
| 142 DownloadInterruptReason error_to_return = DOWNLOAD_INTERRUPT_REASON_NONE; | 143 DownloadInterruptReason error_to_return = DOWNLOAD_INTERRUPT_REASON_NONE; |
| 143 InitializeCallback callback_to_use = initialize_callback; | 144 InitializeCallback callback_to_use = initialize_callback; |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 } | 293 } |
| 293 | 294 |
| 294 DownloadFileWithErrorFactory::~DownloadFileWithErrorFactory() {} | 295 DownloadFileWithErrorFactory::~DownloadFileWithErrorFactory() {} |
| 295 | 296 |
| 296 DownloadFile* DownloadFileWithErrorFactory::CreateFile( | 297 DownloadFile* DownloadFileWithErrorFactory::CreateFile( |
| 297 std::unique_ptr<DownloadSaveInfo> save_info, | 298 std::unique_ptr<DownloadSaveInfo> save_info, |
| 298 const base::FilePath& default_download_directory, | 299 const base::FilePath& default_download_directory, |
| 299 std::unique_ptr<ByteStreamReader> byte_stream, | 300 std::unique_ptr<ByteStreamReader> byte_stream, |
| 300 const net::NetLogWithSource& net_log, | 301 const net::NetLogWithSource& net_log, |
| 301 base::WeakPtr<DownloadDestinationObserver> observer) { | 302 base::WeakPtr<DownloadDestinationObserver> observer) { |
| 302 return new DownloadFileWithError(std::move(save_info), | 303 return new DownloadFileWithError( |
| 303 default_download_directory, | 304 std::move(save_info), default_download_directory, std::move(byte_stream), |
| 304 std::move(byte_stream), | 305 net_log, observer, injected_error_, construction_callback_, |
| 305 net_log, | 306 destruction_callback_); |
| 306 observer, | |
| 307 injected_error_, | |
| 308 construction_callback_, | |
| 309 destruction_callback_); | |
| 310 } | 307 } |
| 311 | 308 |
| 312 bool DownloadFileWithErrorFactory::SetError( | 309 bool DownloadFileWithErrorFactory::SetError( |
| 313 TestFileErrorInjector::FileErrorInfo error) { | 310 TestFileErrorInjector::FileErrorInfo error) { |
| 314 injected_error_ = std::move(error); | 311 injected_error_ = std::move(error); |
| 315 return true; | 312 return true; |
| 316 } | 313 } |
| 317 | 314 |
| 318 TestFileErrorInjector::TestFileErrorInjector(DownloadManager* download_manager) | 315 TestFileErrorInjector::TestFileErrorInjector(DownloadManager* download_manager) |
| 319 : // This code is only used for browser_tests, so a | 316 : // This code is only used for browser_tests, so a |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 case FILE_OPERATION_RENAME_ANNOTATE: | 411 case FILE_OPERATION_RENAME_ANNOTATE: |
| 415 return "RENAME_ANNOTATE"; | 412 return "RENAME_ANNOTATE"; |
| 416 default: | 413 default: |
| 417 break; | 414 break; |
| 418 } | 415 } |
| 419 | 416 |
| 420 return "Unknown"; | 417 return "Unknown"; |
| 421 } | 418 } |
| 422 | 419 |
| 423 } // namespace content | 420 } // namespace content |
| OLD | NEW |