| 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 <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 const TestFileErrorInjector::FileErrorInfo& error_info, | 116 const TestFileErrorInjector::FileErrorInfo& error_info, |
| 117 const ConstructionCallback& ctor_callback, | 117 const ConstructionCallback& ctor_callback, |
| 118 const DestructionCallback& dtor_callback) | 118 const DestructionCallback& dtor_callback) |
| 119 : DownloadFileImpl( | 119 : DownloadFileImpl( |
| 120 save_info.Pass(), default_download_directory, url, referrer_url, | 120 save_info.Pass(), default_download_directory, url, referrer_url, |
| 121 calculate_hash, stream.Pass(), bound_net_log, | 121 calculate_hash, stream.Pass(), bound_net_log, |
| 122 power_save_blocker.Pass(), observer), | 122 power_save_blocker.Pass(), observer), |
| 123 source_url_(url), | 123 source_url_(url), |
| 124 error_info_(error_info), | 124 error_info_(error_info), |
| 125 destruction_callback_(dtor_callback) { | 125 destruction_callback_(dtor_callback) { |
| 126 ctor_callback.Run(source_url_); | 126 // DownloadFiles are created on the UI thread and are destroyed on the FILE |
| 127 // thread. Schedule the ConstructionCallback on the FILE thread so that if a |
| 128 // DownloadItem schedules a DownloadFile to be destroyed and creates another |
| 129 // one (as happens during download resumption), then the DestructionCallback |
| 130 // for the old DownloadFile is run before the ConstructionCallback for the |
| 131 // next DownloadFile. |
| 132 BrowserThread::PostTask( |
| 133 BrowserThread::FILE, |
| 134 FROM_HERE, |
| 135 base::Bind(ctor_callback, source_url_)); |
| 127 } | 136 } |
| 128 | 137 |
| 129 DownloadFileWithErrors::~DownloadFileWithErrors() { | 138 DownloadFileWithErrors::~DownloadFileWithErrors() { |
| 139 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 130 destruction_callback_.Run(source_url_); | 140 destruction_callback_.Run(source_url_); |
| 131 } | 141 } |
| 132 | 142 |
| 133 void DownloadFileWithErrors::Initialize( | 143 void DownloadFileWithErrors::Initialize( |
| 134 const InitializeCallback& callback) { | 144 const InitializeCallback& callback) { |
| 135 DownloadInterruptReason error_to_return = DOWNLOAD_INTERRUPT_REASON_NONE; | 145 DownloadInterruptReason error_to_return = DOWNLOAD_INTERRUPT_REASON_NONE; |
| 136 InitializeCallback callback_to_use = callback; | 146 InitializeCallback callback_to_use = callback; |
| 137 | 147 |
| 138 // Replace callback if the error needs to be overwritten. | 148 // Replace callback if the error needs to be overwritten. |
| 139 if (OverwriteError( | 149 if (OverwriteError( |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 case FILE_OPERATION_RENAME_ANNOTATE: | 478 case FILE_OPERATION_RENAME_ANNOTATE: |
| 469 return "RENAME_ANNOTATE"; | 479 return "RENAME_ANNOTATE"; |
| 470 default: | 480 default: |
| 471 break; | 481 break; |
| 472 } | 482 } |
| 473 | 483 |
| 474 return "Unknown"; | 484 return "Unknown"; |
| 475 } | 485 } |
| 476 | 486 |
| 477 } // namespace content | 487 } // namespace content |
| OLD | NEW |