OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/browser/cache_storage/cache_storage_cache.h" | 5 #include "content/browser/cache_storage/cache_storage_cache.h" |
6 | 6 |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
9 #include "base/message_loop/message_loop_proxy.h" | 9 #include "base/message_loop/message_loop_proxy.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 bool delay_backend_creation_; | 168 bool delay_backend_creation_; |
169 ErrorCallback backend_creation_callback_; | 169 ErrorCallback backend_creation_callback_; |
170 | 170 |
171 DISALLOW_COPY_AND_ASSIGN(TestCacheStorageCache); | 171 DISALLOW_COPY_AND_ASSIGN(TestCacheStorageCache); |
172 }; | 172 }; |
173 | 173 |
174 class CacheStorageCacheTest : public testing::Test { | 174 class CacheStorageCacheTest : public testing::Test { |
175 public: | 175 public: |
176 CacheStorageCacheTest() | 176 CacheStorageCacheTest() |
177 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), | 177 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), |
178 callback_error_(CacheStorageCache::ERROR_TYPE_OK), | 178 callback_error_(CACHE_STORAGE_OK), |
179 callback_closed_(false) {} | 179 callback_closed_(false) {} |
180 | 180 |
181 void SetUp() override { | 181 void SetUp() override { |
182 ChromeBlobStorageContext* blob_storage_context = | 182 ChromeBlobStorageContext* blob_storage_context = |
183 ChromeBlobStorageContext::GetFor(&browser_context_); | 183 ChromeBlobStorageContext::GetFor(&browser_context_); |
184 // Wait for chrome_blob_storage_context to finish initializing. | 184 // Wait for chrome_blob_storage_context to finish initializing. |
185 base::RunLoop().RunUntilIdle(); | 185 base::RunLoop().RunUntilIdle(); |
186 blob_storage_context_ = blob_storage_context->context(); | 186 blob_storage_context_ = blob_storage_context->context(); |
187 | 187 |
188 quota_manager_proxy_ = new MockQuotaManagerProxy( | 188 quota_manager_proxy_ = new MockQuotaManagerProxy( |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 | 267 |
268 cache_->Put( | 268 cache_->Put( |
269 CopyFetchRequest(request), CopyFetchResponse(response), | 269 CopyFetchRequest(request), CopyFetchResponse(response), |
270 base::Bind(&CacheStorageCacheTest::ErrorTypeCallback, | 270 base::Bind(&CacheStorageCacheTest::ErrorTypeCallback, |
271 base::Unretained(this), base::Unretained(loop.get()))); | 271 base::Unretained(this), base::Unretained(loop.get()))); |
272 // TODO(jkarlin): These functions should use base::RunLoop().RunUntilIdle() | 272 // TODO(jkarlin): These functions should use base::RunLoop().RunUntilIdle() |
273 // once the cache uses a passed in MessageLoopProxy instead of the CACHE | 273 // once the cache uses a passed in MessageLoopProxy instead of the CACHE |
274 // thread. | 274 // thread. |
275 loop->Run(); | 275 loop->Run(); |
276 | 276 |
277 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK; | 277 return callback_error_ == CACHE_STORAGE_OK; |
278 } | 278 } |
279 | 279 |
280 bool Match(const ServiceWorkerFetchRequest& request) { | 280 bool Match(const ServiceWorkerFetchRequest& request) { |
281 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); | 281 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); |
282 | 282 |
283 cache_->Match( | 283 cache_->Match( |
284 CopyFetchRequest(request), | 284 CopyFetchRequest(request), |
285 base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback, | 285 base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback, |
286 base::Unretained(this), base::Unretained(loop.get()))); | 286 base::Unretained(this), base::Unretained(loop.get()))); |
287 loop->Run(); | 287 loop->Run(); |
288 | 288 |
289 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK; | 289 return callback_error_ == CACHE_STORAGE_OK; |
290 } | 290 } |
291 | 291 |
292 bool Delete(const ServiceWorkerFetchRequest& request) { | 292 bool Delete(const ServiceWorkerFetchRequest& request) { |
293 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); | 293 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); |
294 | 294 |
295 cache_->Delete( | 295 cache_->Delete( |
296 CopyFetchRequest(request), | 296 CopyFetchRequest(request), |
297 base::Bind(&CacheStorageCacheTest::ErrorTypeCallback, | 297 base::Bind(&CacheStorageCacheTest::ErrorTypeCallback, |
298 base::Unretained(this), base::Unretained(loop.get()))); | 298 base::Unretained(this), base::Unretained(loop.get()))); |
299 loop->Run(); | 299 loop->Run(); |
300 | 300 |
301 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK; | 301 return callback_error_ == CACHE_STORAGE_OK; |
302 } | 302 } |
303 | 303 |
304 bool Keys() { | 304 bool Keys() { |
305 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); | 305 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); |
306 | 306 |
307 cache_->Keys(base::Bind(&CacheStorageCacheTest::RequestsCallback, | 307 cache_->Keys(base::Bind(&CacheStorageCacheTest::RequestsCallback, |
308 base::Unretained(this), | 308 base::Unretained(this), |
309 base::Unretained(loop.get()))); | 309 base::Unretained(loop.get()))); |
310 loop->Run(); | 310 loop->Run(); |
311 | 311 |
312 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK; | 312 return callback_error_ == CACHE_STORAGE_OK; |
313 } | 313 } |
314 | 314 |
315 bool Close() { | 315 bool Close() { |
316 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); | 316 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); |
317 | 317 |
318 cache_->Close(base::Bind(&CacheStorageCacheTest::CloseCallback, | 318 cache_->Close(base::Bind(&CacheStorageCacheTest::CloseCallback, |
319 base::Unretained(this), | 319 base::Unretained(this), |
320 base::Unretained(loop.get()))); | 320 base::Unretained(loop.get()))); |
321 loop->Run(); | 321 loop->Run(); |
322 return callback_closed_; | 322 return callback_closed_; |
323 } | 323 } |
324 | 324 |
325 void RequestsCallback(base::RunLoop* run_loop, | 325 void RequestsCallback(base::RunLoop* run_loop, |
326 CacheStorageCache::ErrorType error, | 326 CacheStorageError error, |
327 scoped_ptr<CacheStorageCache::Requests> requests) { | 327 scoped_ptr<CacheStorageCache::Requests> requests) { |
328 callback_error_ = error; | 328 callback_error_ = error; |
329 callback_strings_.clear(); | 329 callback_strings_.clear(); |
330 if (requests) { | 330 if (requests) { |
331 for (size_t i = 0u; i < requests->size(); ++i) | 331 for (size_t i = 0u; i < requests->size(); ++i) |
332 callback_strings_.push_back(requests->at(i).url.spec()); | 332 callback_strings_.push_back(requests->at(i).url.spec()); |
333 } | 333 } |
334 if (run_loop) | 334 if (run_loop) |
335 run_loop->Quit(); | 335 run_loop->Quit(); |
336 } | 336 } |
337 | 337 |
338 void ErrorTypeCallback(base::RunLoop* run_loop, | 338 void ErrorTypeCallback(base::RunLoop* run_loop, CacheStorageError error) { |
339 CacheStorageCache::ErrorType error) { | |
340 callback_error_ = error; | 339 callback_error_ = error; |
341 if (run_loop) | 340 if (run_loop) |
342 run_loop->Quit(); | 341 run_loop->Quit(); |
343 } | 342 } |
344 | 343 |
345 void SequenceCallback(int sequence, | 344 void SequenceCallback(int sequence, |
346 int* sequence_out, | 345 int* sequence_out, |
347 base::RunLoop* run_loop, | 346 base::RunLoop* run_loop, |
348 CacheStorageCache::ErrorType error) { | 347 CacheStorageError error) { |
349 *sequence_out = sequence; | 348 *sequence_out = sequence; |
350 callback_error_ = error; | 349 callback_error_ = error; |
351 if (run_loop) | 350 if (run_loop) |
352 run_loop->Quit(); | 351 run_loop->Quit(); |
353 } | 352 } |
354 | 353 |
355 void ResponseAndErrorCallback( | 354 void ResponseAndErrorCallback( |
356 base::RunLoop* run_loop, | 355 base::RunLoop* run_loop, |
357 CacheStorageCache::ErrorType error, | 356 CacheStorageError error, |
358 scoped_ptr<ServiceWorkerResponse> response, | 357 scoped_ptr<ServiceWorkerResponse> response, |
359 scoped_ptr<storage::BlobDataHandle> body_handle) { | 358 scoped_ptr<storage::BlobDataHandle> body_handle) { |
360 callback_error_ = error; | 359 callback_error_ = error; |
361 callback_response_ = response.Pass(); | 360 callback_response_ = response.Pass(); |
362 callback_response_data_.reset(); | 361 callback_response_data_.reset(); |
363 if (error == CacheStorageCache::ERROR_TYPE_OK && | 362 if (error == CACHE_STORAGE_OK && !callback_response_->blob_uuid.empty()) |
364 !callback_response_->blob_uuid.empty()) { | |
365 callback_response_data_ = body_handle.Pass(); | 363 callback_response_data_ = body_handle.Pass(); |
366 } | |
367 | 364 |
368 if (run_loop) | 365 if (run_loop) |
369 run_loop->Quit(); | 366 run_loop->Quit(); |
370 } | 367 } |
371 | 368 |
372 void CloseCallback(base::RunLoop* run_loop) { | 369 void CloseCallback(base::RunLoop* run_loop) { |
373 EXPECT_FALSE(callback_closed_); | 370 EXPECT_FALSE(callback_closed_); |
374 callback_closed_ = true; | 371 callback_closed_ = true; |
375 if (run_loop) | 372 if (run_loop) |
376 run_loop->Quit(); | 373 run_loop->Quit(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 base::ScopedTempDir temp_dir_; | 423 base::ScopedTempDir temp_dir_; |
427 scoped_refptr<TestCacheStorageCache> cache_; | 424 scoped_refptr<TestCacheStorageCache> cache_; |
428 | 425 |
429 ServiceWorkerFetchRequest body_request_; | 426 ServiceWorkerFetchRequest body_request_; |
430 ServiceWorkerResponse body_response_; | 427 ServiceWorkerResponse body_response_; |
431 ServiceWorkerFetchRequest no_body_request_; | 428 ServiceWorkerFetchRequest no_body_request_; |
432 ServiceWorkerResponse no_body_response_; | 429 ServiceWorkerResponse no_body_response_; |
433 scoped_ptr<storage::BlobDataHandle> blob_handle_; | 430 scoped_ptr<storage::BlobDataHandle> blob_handle_; |
434 std::string expected_blob_data_; | 431 std::string expected_blob_data_; |
435 | 432 |
436 CacheStorageCache::ErrorType callback_error_; | 433 CacheStorageError callback_error_; |
437 scoped_ptr<ServiceWorkerResponse> callback_response_; | 434 scoped_ptr<ServiceWorkerResponse> callback_response_; |
438 scoped_ptr<storage::BlobDataHandle> callback_response_data_; | 435 scoped_ptr<storage::BlobDataHandle> callback_response_data_; |
439 std::vector<std::string> callback_strings_; | 436 std::vector<std::string> callback_strings_; |
440 bool callback_closed_; | 437 bool callback_closed_; |
441 }; | 438 }; |
442 | 439 |
443 class CacheStorageCacheTestP : public CacheStorageCacheTest, | 440 class CacheStorageCacheTestP : public CacheStorageCacheTest, |
444 public testing::WithParamInterface<bool> { | 441 public testing::WithParamInterface<bool> { |
445 bool MemoryOnly() override { return !GetParam(); } | 442 bool MemoryOnly() override { return !GetParam(); } |
446 }; | 443 }; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); | 478 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); |
482 cache_->Put(CopyFetchRequest(body_request_), | 479 cache_->Put(CopyFetchRequest(body_request_), |
483 CopyFetchResponse(body_response_), | 480 CopyFetchResponse(body_response_), |
484 base::Bind(&CacheStorageCacheTestP::ErrorTypeCallback, | 481 base::Bind(&CacheStorageCacheTestP::ErrorTypeCallback, |
485 base::Unretained(this), base::Unretained(loop.get()))); | 482 base::Unretained(this), base::Unretained(loop.get()))); |
486 // The handle should be held by the cache now so the deref here should be | 483 // The handle should be held by the cache now so the deref here should be |
487 // okay. | 484 // okay. |
488 blob_handle_.reset(); | 485 blob_handle_.reset(); |
489 loop->Run(); | 486 loop->Run(); |
490 | 487 |
491 EXPECT_EQ(CacheStorageCache::ERROR_TYPE_OK, callback_error_); | 488 EXPECT_EQ(CACHE_STORAGE_OK, callback_error_); |
492 } | 489 } |
493 | 490 |
494 TEST_P(CacheStorageCacheTestP, PutReplace) { | 491 TEST_P(CacheStorageCacheTestP, PutReplace) { |
495 EXPECT_TRUE(Put(body_request_, no_body_response_)); | 492 EXPECT_TRUE(Put(body_request_, no_body_response_)); |
496 EXPECT_TRUE(Match(body_request_)); | 493 EXPECT_TRUE(Match(body_request_)); |
497 EXPECT_FALSE(callback_response_data_); | 494 EXPECT_FALSE(callback_response_data_); |
498 | 495 |
499 EXPECT_TRUE(Put(body_request_, body_response_)); | 496 EXPECT_TRUE(Put(body_request_, body_response_)); |
500 EXPECT_TRUE(Match(body_request_)); | 497 EXPECT_TRUE(Match(body_request_)); |
501 EXPECT_TRUE(callback_response_data_); | 498 EXPECT_TRUE(callback_response_data_); |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
793 EXPECT_EQ(1, sequence_out); | 790 EXPECT_EQ(1, sequence_out); |
794 close_loop2->Run(); | 791 close_loop2->Run(); |
795 EXPECT_EQ(2, sequence_out); | 792 EXPECT_EQ(2, sequence_out); |
796 } | 793 } |
797 | 794 |
798 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest, | 795 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest, |
799 CacheStorageCacheTestP, | 796 CacheStorageCacheTestP, |
800 ::testing::Values(false, true)); | 797 ::testing::Values(false, true)); |
801 | 798 |
802 } // namespace content | 799 } // namespace content |
OLD | NEW |