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 21 matching lines...) Expand all Loading... | |
32 } | 32 } |
33 | 33 |
34 // A class that performs file operations and injects errors. | 34 // A class that performs file operations and injects errors. |
35 class DownloadFileWithErrors: public DownloadFileImpl { | 35 class DownloadFileWithErrors: public DownloadFileImpl { |
36 public: | 36 public: |
37 typedef base::Callback<void(const GURL& url, content::DownloadId id)> | 37 typedef base::Callback<void(const GURL& url, content::DownloadId id)> |
38 ConstructionCallback; | 38 ConstructionCallback; |
39 typedef base::Callback<void(const GURL& url)> DestructionCallback; | 39 typedef base::Callback<void(const GURL& url)> DestructionCallback; |
40 | 40 |
41 DownloadFileWithErrors( | 41 DownloadFileWithErrors( |
42 const DownloadCreateInfo* info, | 42 scoped_ptr<DownloadCreateInfo> info, |
43 scoped_ptr<content::ByteStreamReader> stream, | 43 scoped_ptr<content::ByteStreamReader> stream, |
44 DownloadRequestHandleInterface* request_handle, | 44 DownloadRequestHandleInterface* request_handle, |
45 content::DownloadManager* download_manager, | 45 content::DownloadManager* download_manager, |
46 bool calculate_hash, | 46 bool calculate_hash, |
47 const net::BoundNetLog& bound_net_log, | 47 const net::BoundNetLog& bound_net_log, |
48 const GURL& source_url, | |
48 const content::TestFileErrorInjector::FileErrorInfo& error_info, | 49 const content::TestFileErrorInjector::FileErrorInfo& error_info, |
49 const ConstructionCallback& ctor_callback, | 50 const ConstructionCallback& ctor_callback, |
50 const DestructionCallback& dtor_callback); | 51 const DestructionCallback& dtor_callback); |
51 | 52 |
52 ~DownloadFileWithErrors(); | 53 ~DownloadFileWithErrors(); |
53 | 54 |
54 // DownloadFile interface. | 55 // DownloadFile interface. |
55 virtual content::DownloadInterruptReason Initialize() OVERRIDE; | 56 virtual content::DownloadInterruptReason Initialize() OVERRIDE; |
56 virtual content::DownloadInterruptReason AppendDataToFile( | 57 virtual content::DownloadInterruptReason AppendDataToFile( |
57 const char* data, size_t data_len) OVERRIDE; | 58 const char* data, size_t data_len) OVERRIDE; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
95 content::DownloadInterruptReason original_error, | 96 content::DownloadInterruptReason original_error, |
96 const FilePath& path_result) { | 97 const FilePath& path_result) { |
97 original_callback.Run( | 98 original_callback.Run( |
98 overwrite_error, | 99 overwrite_error, |
99 overwrite_error == content::DOWNLOAD_INTERRUPT_REASON_NONE ? | 100 overwrite_error == content::DOWNLOAD_INTERRUPT_REASON_NONE ? |
100 path_result : FilePath()); | 101 path_result : FilePath()); |
101 } | 102 } |
102 | 103 |
103 | 104 |
104 DownloadFileWithErrors::DownloadFileWithErrors( | 105 DownloadFileWithErrors::DownloadFileWithErrors( |
105 const DownloadCreateInfo* info, | 106 scoped_ptr<DownloadCreateInfo> info, |
106 scoped_ptr<content::ByteStreamReader> stream, | 107 scoped_ptr<content::ByteStreamReader> stream, |
107 DownloadRequestHandleInterface* request_handle, | 108 DownloadRequestHandleInterface* request_handle, |
108 content::DownloadManager* download_manager, | 109 content::DownloadManager* download_manager, |
109 bool calculate_hash, | 110 bool calculate_hash, |
110 const net::BoundNetLog& bound_net_log, | 111 const net::BoundNetLog& bound_net_log, |
112 const GURL& source_url, | |
111 const content::TestFileErrorInjector::FileErrorInfo& error_info, | 113 const content::TestFileErrorInjector::FileErrorInfo& error_info, |
112 const ConstructionCallback& ctor_callback, | 114 const ConstructionCallback& ctor_callback, |
113 const DestructionCallback& dtor_callback) | 115 const DestructionCallback& dtor_callback) |
114 : DownloadFileImpl(info, | 116 : DownloadFileImpl(info.Pass(), |
115 stream.Pass(), | 117 stream.Pass(), |
116 request_handle, | 118 request_handle, |
117 download_manager, | 119 download_manager, |
118 calculate_hash, | 120 calculate_hash, |
119 scoped_ptr<content::PowerSaveBlocker>(NULL).Pass(), | 121 scoped_ptr<content::PowerSaveBlocker>(NULL).Pass(), |
120 bound_net_log), | 122 bound_net_log), |
121 source_url_(info->url()), | 123 source_url_(source_url), |
122 error_info_(error_info), | 124 error_info_(error_info), |
123 destruction_callback_(dtor_callback) { | 125 destruction_callback_(dtor_callback) { |
124 ctor_callback.Run(source_url_, info->download_id); | 126 ctor_callback.Run(source_url_, info->download_id); |
125 } | 127 } |
126 | 128 |
127 DownloadFileWithErrors::~DownloadFileWithErrors() { | 129 DownloadFileWithErrors::~DownloadFileWithErrors() { |
128 destruction_callback_.Run(source_url_); | 130 destruction_callback_.Run(source_url_); |
129 } | 131 } |
130 | 132 |
131 content::DownloadInterruptReason DownloadFileWithErrors::Initialize() { | 133 content::DownloadInterruptReason DownloadFileWithErrors::Initialize() { |
132 return ShouldReturnError( | 134 return ShouldReturnError( |
133 content::TestFileErrorInjector::FILE_OPERATION_INITIALIZE, | 135 content::TestFileErrorInjector::FILE_OPERATION_INITIALIZE, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
191 class DownloadFileWithErrorsFactory : public content::DownloadFileFactory { | 193 class DownloadFileWithErrorsFactory : public content::DownloadFileFactory { |
192 public: | 194 public: |
193 | 195 |
194 DownloadFileWithErrorsFactory( | 196 DownloadFileWithErrorsFactory( |
195 const DownloadFileWithErrors::ConstructionCallback& ctor_callback, | 197 const DownloadFileWithErrors::ConstructionCallback& ctor_callback, |
196 const DownloadFileWithErrors::DestructionCallback& dtor_callback); | 198 const DownloadFileWithErrors::DestructionCallback& dtor_callback); |
197 virtual ~DownloadFileWithErrorsFactory(); | 199 virtual ~DownloadFileWithErrorsFactory(); |
198 | 200 |
199 // DownloadFileFactory interface. | 201 // DownloadFileFactory interface. |
200 virtual DownloadFile* CreateFile( | 202 virtual DownloadFile* CreateFile( |
201 DownloadCreateInfo* info, | 203 scoped_ptr<DownloadCreateInfo> info, |
202 scoped_ptr<content::ByteStreamReader> stream, | 204 scoped_ptr<content::ByteStreamReader> stream, |
203 content::DownloadManager* download_manager, | 205 content::DownloadManager* download_manager, |
204 bool calculate_hash, | 206 bool calculate_hash, |
205 const net::BoundNetLog& bound_net_log); | 207 const net::BoundNetLog& bound_net_log); |
206 | 208 |
207 bool AddError( | 209 bool AddError( |
208 const TestFileErrorInjector::FileErrorInfo& error_info); | 210 const TestFileErrorInjector::FileErrorInfo& error_info); |
209 | 211 |
210 void ClearErrors(); | 212 void ClearErrors(); |
211 | 213 |
(...skipping 10 matching lines...) Expand all Loading... | |
222 const DownloadFileWithErrors::ConstructionCallback& ctor_callback, | 224 const DownloadFileWithErrors::ConstructionCallback& ctor_callback, |
223 const DownloadFileWithErrors::DestructionCallback& dtor_callback) | 225 const DownloadFileWithErrors::DestructionCallback& dtor_callback) |
224 : construction_callback_(ctor_callback), | 226 : construction_callback_(ctor_callback), |
225 destruction_callback_(dtor_callback) { | 227 destruction_callback_(dtor_callback) { |
226 } | 228 } |
227 | 229 |
228 DownloadFileWithErrorsFactory::~DownloadFileWithErrorsFactory() { | 230 DownloadFileWithErrorsFactory::~DownloadFileWithErrorsFactory() { |
229 } | 231 } |
230 | 232 |
231 content::DownloadFile* DownloadFileWithErrorsFactory::CreateFile( | 233 content::DownloadFile* DownloadFileWithErrorsFactory::CreateFile( |
232 DownloadCreateInfo* info, | 234 scoped_ptr<DownloadCreateInfo> info, |
233 scoped_ptr<content::ByteStreamReader> stream, | 235 scoped_ptr<content::ByteStreamReader> stream, |
234 content::DownloadManager* download_manager, | 236 content::DownloadManager* download_manager, |
235 bool calculate_hash, | 237 bool calculate_hash, |
236 const net::BoundNetLog& bound_net_log) { | 238 const net::BoundNetLog& bound_net_log) { |
237 std::string url = info->url().spec(); | 239 GURL url = info->url(); |
238 | 240 |
239 if (injected_errors_.find(url) == injected_errors_.end()) { | 241 if (injected_errors_.find(url.spec()) == injected_errors_.end()) { |
240 // Have to create entry, because FileErrorInfo is not a POD type. | 242 // Have to create entry, because FileErrorInfo is not a POD type. |
241 TestFileErrorInjector::FileErrorInfo err_info = { | 243 TestFileErrorInjector::FileErrorInfo err_info = { |
242 url, | 244 url.spec(), |
243 TestFileErrorInjector::FILE_OPERATION_INITIALIZE, | 245 TestFileErrorInjector::FILE_OPERATION_INITIALIZE, |
244 -1, | 246 -1, |
245 content::DOWNLOAD_INTERRUPT_REASON_NONE | 247 content::DOWNLOAD_INTERRUPT_REASON_NONE |
246 }; | 248 }; |
247 injected_errors_[url] = err_info; | 249 injected_errors_[url.spec()] = err_info; |
248 } | 250 } |
249 | 251 |
252 DownloadRequestHandle* request_handle( | |
253 new DownloadRequestHandle(info->request_handle)); | |
254 | |
250 return new DownloadFileWithErrors( | 255 return new DownloadFileWithErrors( |
251 info, | 256 info.Pass(), |
252 stream.Pass(), | 257 stream.Pass(), |
253 new DownloadRequestHandle(info->request_handle), | 258 request_handle, // Takes ownership. |
benjhayden
2012/10/11 19:41:12
Again, this comment belongs in DFWE, not here.
Randy Smith (Not in Mondays)
2012/10/15 18:56:32
Moot because of your other suggestion, but if I we
| |
254 download_manager, | 259 download_manager, |
255 calculate_hash, | 260 calculate_hash, |
256 bound_net_log, | 261 bound_net_log, |
257 injected_errors_[url], | 262 url, |
263 injected_errors_[url.spec()], | |
258 construction_callback_, | 264 construction_callback_, |
259 destruction_callback_); | 265 destruction_callback_); |
260 } | 266 } |
261 | 267 |
262 bool DownloadFileWithErrorsFactory::AddError( | 268 bool DownloadFileWithErrorsFactory::AddError( |
263 const TestFileErrorInjector::FileErrorInfo& error_info) { | 269 const TestFileErrorInjector::FileErrorInfo& error_info) { |
264 // Creates an empty entry if necessary. Duplicate entries overwrite. | 270 // Creates an empty entry if necessary. Duplicate entries overwrite. |
265 injected_errors_[error_info.url] = error_info; | 271 injected_errors_[error_info.url] = error_info; |
266 | 272 |
267 return true; | 273 return true; |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
456 case FILE_OPERATION_RENAME: | 462 case FILE_OPERATION_RENAME: |
457 return "RENAME"; | 463 return "RENAME"; |
458 default: | 464 default: |
459 break; | 465 break; |
460 } | 466 } |
461 | 467 |
462 return "Unknown"; | 468 return "Unknown"; |
463 } | 469 } |
464 | 470 |
465 } // namespace content | 471 } // namespace content |
OLD | NEW |