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 <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/guid.h" | 10 #include "base/guid.h" |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 return weak_ptr_factory_.GetWeakPtr(); | 401 return weak_ptr_factory_.GetWeakPtr(); |
402 } | 402 } |
403 | 403 |
404 void CacheStorageCache::Put(scoped_ptr<ServiceWorkerFetchRequest> request, | 404 void CacheStorageCache::Put(scoped_ptr<ServiceWorkerFetchRequest> request, |
405 scoped_ptr<ServiceWorkerResponse> response, | 405 scoped_ptr<ServiceWorkerResponse> response, |
406 const ErrorCallback& callback) { | 406 const ErrorCallback& callback) { |
407 scoped_ptr<storage::BlobDataHandle> blob_data_handle; | 407 scoped_ptr<storage::BlobDataHandle> blob_data_handle; |
408 | 408 |
409 if (!response->blob_uuid.empty()) { | 409 if (!response->blob_uuid.empty()) { |
410 if (!blob_storage_context_) { | 410 if (!blob_storage_context_) { |
411 callback.Run(ERROR_TYPE_STORAGE); | 411 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
412 return; | 412 return; |
413 } | 413 } |
414 blob_data_handle = | 414 blob_data_handle = |
415 blob_storage_context_->GetBlobDataFromUUID(response->blob_uuid); | 415 blob_storage_context_->GetBlobDataFromUUID(response->blob_uuid); |
416 if (!blob_data_handle) { | 416 if (!blob_data_handle) { |
417 callback.Run(ERROR_TYPE_STORAGE); | 417 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
418 return; | 418 return; |
419 } | 419 } |
420 } | 420 } |
421 | 421 |
422 ErrorCallback pending_callback = | 422 ErrorCallback pending_callback = |
423 base::Bind(&CacheStorageCache::PendingErrorCallback, | 423 base::Bind(&CacheStorageCache::PendingErrorCallback, |
424 weak_ptr_factory_.GetWeakPtr(), callback); | 424 weak_ptr_factory_.GetWeakPtr(), callback); |
425 | 425 |
426 scoped_ptr<PutContext> put_context(new PutContext( | 426 scoped_ptr<PutContext> put_context(new PutContext( |
427 origin_, request.Pass(), response.Pass(), blob_data_handle.Pass(), | 427 origin_, request.Pass(), response.Pass(), blob_data_handle.Pass(), |
428 pending_callback, request_context_, quota_manager_proxy_)); | 428 pending_callback, request_context_, quota_manager_proxy_)); |
429 | 429 |
430 if (backend_state_ == BACKEND_UNINITIALIZED) | 430 if (backend_state_ == BACKEND_UNINITIALIZED) |
431 InitBackend(); | 431 InitBackend(); |
432 | 432 |
433 scheduler_->ScheduleOperation(base::Bind(&CacheStorageCache::PutImpl, | 433 scheduler_->ScheduleOperation(base::Bind(&CacheStorageCache::PutImpl, |
434 weak_ptr_factory_.GetWeakPtr(), | 434 weak_ptr_factory_.GetWeakPtr(), |
435 base::Passed(put_context.Pass()))); | 435 base::Passed(put_context.Pass()))); |
436 } | 436 } |
437 | 437 |
438 void CacheStorageCache::Match(scoped_ptr<ServiceWorkerFetchRequest> request, | 438 void CacheStorageCache::Match(scoped_ptr<ServiceWorkerFetchRequest> request, |
439 const ResponseCallback& callback) { | 439 const ResponseCallback& callback) { |
440 switch (backend_state_) { | 440 switch (backend_state_) { |
441 case BACKEND_UNINITIALIZED: | 441 case BACKEND_UNINITIALIZED: |
442 InitBackend(); | 442 InitBackend(); |
443 break; | 443 break; |
444 case BACKEND_CLOSED: | 444 case BACKEND_CLOSED: |
445 callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<ServiceWorkerResponse>(), | 445 callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
| 446 scoped_ptr<ServiceWorkerResponse>(), |
446 scoped_ptr<storage::BlobDataHandle>()); | 447 scoped_ptr<storage::BlobDataHandle>()); |
447 return; | 448 return; |
448 case BACKEND_OPEN: | 449 case BACKEND_OPEN: |
449 DCHECK(backend_); | 450 DCHECK(backend_); |
450 break; | 451 break; |
451 } | 452 } |
452 | 453 |
453 ResponseCallback pending_callback = | 454 ResponseCallback pending_callback = |
454 base::Bind(&CacheStorageCache::PendingResponseCallback, | 455 base::Bind(&CacheStorageCache::PendingResponseCallback, |
455 weak_ptr_factory_.GetWeakPtr(), callback); | 456 weak_ptr_factory_.GetWeakPtr(), callback); |
456 scheduler_->ScheduleOperation( | 457 scheduler_->ScheduleOperation( |
457 base::Bind(&CacheStorageCache::MatchImpl, weak_ptr_factory_.GetWeakPtr(), | 458 base::Bind(&CacheStorageCache::MatchImpl, weak_ptr_factory_.GetWeakPtr(), |
458 base::Passed(request.Pass()), pending_callback)); | 459 base::Passed(request.Pass()), pending_callback)); |
459 } | 460 } |
460 | 461 |
461 void CacheStorageCache::Delete(scoped_ptr<ServiceWorkerFetchRequest> request, | 462 void CacheStorageCache::Delete(scoped_ptr<ServiceWorkerFetchRequest> request, |
462 const ErrorCallback& callback) { | 463 const ErrorCallback& callback) { |
463 switch (backend_state_) { | 464 switch (backend_state_) { |
464 case BACKEND_UNINITIALIZED: | 465 case BACKEND_UNINITIALIZED: |
465 InitBackend(); | 466 InitBackend(); |
466 break; | 467 break; |
467 case BACKEND_CLOSED: | 468 case BACKEND_CLOSED: |
468 callback.Run(ERROR_TYPE_STORAGE); | 469 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
469 return; | 470 return; |
470 case BACKEND_OPEN: | 471 case BACKEND_OPEN: |
471 DCHECK(backend_); | 472 DCHECK(backend_); |
472 break; | 473 break; |
473 } | 474 } |
474 ErrorCallback pending_callback = | 475 ErrorCallback pending_callback = |
475 base::Bind(&CacheStorageCache::PendingErrorCallback, | 476 base::Bind(&CacheStorageCache::PendingErrorCallback, |
476 weak_ptr_factory_.GetWeakPtr(), callback); | 477 weak_ptr_factory_.GetWeakPtr(), callback); |
477 scheduler_->ScheduleOperation( | 478 scheduler_->ScheduleOperation( |
478 base::Bind(&CacheStorageCache::DeleteImpl, weak_ptr_factory_.GetWeakPtr(), | 479 base::Bind(&CacheStorageCache::DeleteImpl, weak_ptr_factory_.GetWeakPtr(), |
479 base::Passed(request.Pass()), pending_callback)); | 480 base::Passed(request.Pass()), pending_callback)); |
480 } | 481 } |
481 | 482 |
482 void CacheStorageCache::Keys(const RequestsCallback& callback) { | 483 void CacheStorageCache::Keys(const RequestsCallback& callback) { |
483 switch (backend_state_) { | 484 switch (backend_state_) { |
484 case BACKEND_UNINITIALIZED: | 485 case BACKEND_UNINITIALIZED: |
485 InitBackend(); | 486 InitBackend(); |
486 break; | 487 break; |
487 case BACKEND_CLOSED: | 488 case BACKEND_CLOSED: |
488 callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<Requests>()); | 489 callback.Run(CACHE_STORAGE_ERROR_STORAGE, scoped_ptr<Requests>()); |
489 return; | 490 return; |
490 case BACKEND_OPEN: | 491 case BACKEND_OPEN: |
491 DCHECK(backend_); | 492 DCHECK(backend_); |
492 break; | 493 break; |
493 } | 494 } |
494 | 495 |
495 RequestsCallback pending_callback = | 496 RequestsCallback pending_callback = |
496 base::Bind(&CacheStorageCache::PendingRequestsCallback, | 497 base::Bind(&CacheStorageCache::PendingRequestsCallback, |
497 weak_ptr_factory_.GetWeakPtr(), callback); | 498 weak_ptr_factory_.GetWeakPtr(), callback); |
498 scheduler_->ScheduleOperation(base::Bind(&CacheStorageCache::KeysImpl, | 499 scheduler_->ScheduleOperation(base::Bind(&CacheStorageCache::KeysImpl, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 scheduler_(new CacheStorageScheduler()), | 557 scheduler_(new CacheStorageScheduler()), |
557 initializing_(false), | 558 initializing_(false), |
558 memory_only_(path.empty()), | 559 memory_only_(path.empty()), |
559 weak_ptr_factory_(this) { | 560 weak_ptr_factory_(this) { |
560 } | 561 } |
561 | 562 |
562 void CacheStorageCache::MatchImpl(scoped_ptr<ServiceWorkerFetchRequest> request, | 563 void CacheStorageCache::MatchImpl(scoped_ptr<ServiceWorkerFetchRequest> request, |
563 const ResponseCallback& callback) { | 564 const ResponseCallback& callback) { |
564 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); | 565 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
565 if (backend_state_ != BACKEND_OPEN) { | 566 if (backend_state_ != BACKEND_OPEN) { |
566 callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<ServiceWorkerResponse>(), | 567 callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
| 568 scoped_ptr<ServiceWorkerResponse>(), |
567 scoped_ptr<storage::BlobDataHandle>()); | 569 scoped_ptr<storage::BlobDataHandle>()); |
568 return; | 570 return; |
569 } | 571 } |
570 | 572 |
571 scoped_ptr<MatchContext> match_context( | 573 scoped_ptr<MatchContext> match_context( |
572 new MatchContext(request.Pass(), callback, blob_storage_context_)); | 574 new MatchContext(request.Pass(), callback, blob_storage_context_)); |
573 | 575 |
574 disk_cache::Entry** entry_ptr = &match_context->entry; | 576 disk_cache::Entry** entry_ptr = &match_context->entry; |
575 ServiceWorkerFetchRequest* request_ptr = match_context->request.get(); | 577 ServiceWorkerFetchRequest* request_ptr = match_context->request.get(); |
576 | 578 |
577 net::CompletionCallback open_entry_callback = base::Bind( | 579 net::CompletionCallback open_entry_callback = base::Bind( |
578 &CacheStorageCache::MatchDidOpenEntry, weak_ptr_factory_.GetWeakPtr(), | 580 &CacheStorageCache::MatchDidOpenEntry, weak_ptr_factory_.GetWeakPtr(), |
579 base::Passed(match_context.Pass())); | 581 base::Passed(match_context.Pass())); |
580 | 582 |
581 int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr, | 583 int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr, |
582 open_entry_callback); | 584 open_entry_callback); |
583 if (rv != net::ERR_IO_PENDING) | 585 if (rv != net::ERR_IO_PENDING) |
584 open_entry_callback.Run(rv); | 586 open_entry_callback.Run(rv); |
585 } | 587 } |
586 | 588 |
587 void CacheStorageCache::MatchDidOpenEntry( | 589 void CacheStorageCache::MatchDidOpenEntry( |
588 scoped_ptr<MatchContext> match_context, | 590 scoped_ptr<MatchContext> match_context, |
589 int rv) { | 591 int rv) { |
590 if (rv != net::OK) { | 592 if (rv != net::OK) { |
591 match_context->original_callback.Run( | 593 match_context->original_callback.Run(CACHE_STORAGE_ERROR_NOT_FOUND, |
592 CacheStorageCache::ERROR_TYPE_NOT_FOUND, | 594 scoped_ptr<ServiceWorkerResponse>(), |
593 scoped_ptr<ServiceWorkerResponse>(), | 595 scoped_ptr<storage::BlobDataHandle>()); |
594 scoped_ptr<storage::BlobDataHandle>()); | |
595 return; | 596 return; |
596 } | 597 } |
597 | 598 |
598 // Copy the entry pointer before passing it in base::Bind. | 599 // Copy the entry pointer before passing it in base::Bind. |
599 disk_cache::Entry* tmp_entry_ptr = match_context->entry; | 600 disk_cache::Entry* tmp_entry_ptr = match_context->entry; |
600 DCHECK(tmp_entry_ptr); | 601 DCHECK(tmp_entry_ptr); |
601 | 602 |
602 MetadataCallback headers_callback = base::Bind( | 603 MetadataCallback headers_callback = base::Bind( |
603 &CacheStorageCache::MatchDidReadMetadata, weak_ptr_factory_.GetWeakPtr(), | 604 &CacheStorageCache::MatchDidReadMetadata, weak_ptr_factory_.GetWeakPtr(), |
604 base::Passed(match_context.Pass())); | 605 base::Passed(match_context.Pass())); |
605 | 606 |
606 ReadMetadata(tmp_entry_ptr, headers_callback); | 607 ReadMetadata(tmp_entry_ptr, headers_callback); |
607 } | 608 } |
608 | 609 |
609 void CacheStorageCache::MatchDidReadMetadata( | 610 void CacheStorageCache::MatchDidReadMetadata( |
610 scoped_ptr<MatchContext> match_context, | 611 scoped_ptr<MatchContext> match_context, |
611 scoped_ptr<CacheMetadata> metadata) { | 612 scoped_ptr<CacheMetadata> metadata) { |
612 if (!metadata) { | 613 if (!metadata) { |
613 match_context->original_callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE, | 614 match_context->original_callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
614 scoped_ptr<ServiceWorkerResponse>(), | 615 scoped_ptr<ServiceWorkerResponse>(), |
615 scoped_ptr<storage::BlobDataHandle>()); | 616 scoped_ptr<storage::BlobDataHandle>()); |
616 return; | 617 return; |
617 } | 618 } |
618 | 619 |
619 match_context->response.reset(new ServiceWorkerResponse( | 620 match_context->response.reset(new ServiceWorkerResponse( |
620 match_context->request->url, metadata->response().status_code(), | 621 match_context->request->url, metadata->response().status_code(), |
621 metadata->response().status_text(), | 622 metadata->response().status_text(), |
622 ProtoResponseTypeToWebResponseType(metadata->response().response_type()), | 623 ProtoResponseTypeToWebResponseType(metadata->response().response_type()), |
623 ServiceWorkerHeaderMap(), "", 0, GURL())); | 624 ServiceWorkerHeaderMap(), "", 0, GURL())); |
(...skipping 13 matching lines...) Expand all Loading... |
637 ServiceWorkerHeaderMap cached_request_headers; | 638 ServiceWorkerHeaderMap cached_request_headers; |
638 for (int i = 0; i < metadata->request().headers_size(); ++i) { | 639 for (int i = 0; i < metadata->request().headers_size(); ++i) { |
639 const CacheHeaderMap header = metadata->request().headers(i); | 640 const CacheHeaderMap header = metadata->request().headers(i); |
640 DCHECK(header.name().find('\0') == std::string::npos); | 641 DCHECK(header.name().find('\0') == std::string::npos); |
641 DCHECK(header.value().find('\0') == std::string::npos); | 642 DCHECK(header.value().find('\0') == std::string::npos); |
642 cached_request_headers[header.name()] = header.value(); | 643 cached_request_headers[header.name()] = header.value(); |
643 } | 644 } |
644 | 645 |
645 if (!VaryMatches(match_context->request->headers, cached_request_headers, | 646 if (!VaryMatches(match_context->request->headers, cached_request_headers, |
646 response->headers)) { | 647 response->headers)) { |
647 match_context->original_callback.Run( | 648 match_context->original_callback.Run(CACHE_STORAGE_ERROR_NOT_FOUND, |
648 CacheStorageCache::ERROR_TYPE_NOT_FOUND, | 649 scoped_ptr<ServiceWorkerResponse>(), |
649 scoped_ptr<ServiceWorkerResponse>(), | 650 scoped_ptr<storage::BlobDataHandle>()); |
650 scoped_ptr<storage::BlobDataHandle>()); | |
651 return; | 651 return; |
652 } | 652 } |
653 | 653 |
654 if (match_context->entry->GetDataSize(INDEX_RESPONSE_BODY) == 0) { | 654 if (match_context->entry->GetDataSize(INDEX_RESPONSE_BODY) == 0) { |
655 match_context->original_callback.Run(CacheStorageCache::ERROR_TYPE_OK, | 655 match_context->original_callback.Run(CACHE_STORAGE_OK, |
656 match_context->response.Pass(), | 656 match_context->response.Pass(), |
657 scoped_ptr<storage::BlobDataHandle>()); | 657 scoped_ptr<storage::BlobDataHandle>()); |
658 return; | 658 return; |
659 } | 659 } |
660 | 660 |
661 // Stream the response body into a blob. | 661 // Stream the response body into a blob. |
662 if (!match_context->blob_storage_context) { | 662 if (!match_context->blob_storage_context) { |
663 match_context->original_callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE, | 663 match_context->original_callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
664 scoped_ptr<ServiceWorkerResponse>(), | 664 scoped_ptr<ServiceWorkerResponse>(), |
665 scoped_ptr<storage::BlobDataHandle>()); | 665 scoped_ptr<storage::BlobDataHandle>()); |
666 return; | 666 return; |
667 } | 667 } |
668 | 668 |
669 response->blob_uuid = base::GenerateGUID(); | 669 response->blob_uuid = base::GenerateGUID(); |
670 | 670 |
671 match_context->blob_data.reset( | 671 match_context->blob_data.reset( |
672 new storage::BlobDataBuilder(response->blob_uuid)); | 672 new storage::BlobDataBuilder(response->blob_uuid)); |
673 match_context->response_body_buffer = new net::IOBufferWithSize(kBufferSize); | 673 match_context->response_body_buffer = new net::IOBufferWithSize(kBufferSize); |
(...skipping 11 matching lines...) Expand all Loading... |
685 response_body_buffer->size(), read_callback); | 685 response_body_buffer->size(), read_callback); |
686 | 686 |
687 if (read_rv != net::ERR_IO_PENDING) | 687 if (read_rv != net::ERR_IO_PENDING) |
688 read_callback.Run(read_rv); | 688 read_callback.Run(read_rv); |
689 } | 689 } |
690 | 690 |
691 void CacheStorageCache::MatchDidReadResponseBodyData( | 691 void CacheStorageCache::MatchDidReadResponseBodyData( |
692 scoped_ptr<MatchContext> match_context, | 692 scoped_ptr<MatchContext> match_context, |
693 int rv) { | 693 int rv) { |
694 if (rv < 0) { | 694 if (rv < 0) { |
695 match_context->original_callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE, | 695 match_context->original_callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
696 scoped_ptr<ServiceWorkerResponse>(), | 696 scoped_ptr<ServiceWorkerResponse>(), |
697 scoped_ptr<storage::BlobDataHandle>()); | 697 scoped_ptr<storage::BlobDataHandle>()); |
698 return; | 698 return; |
699 } | 699 } |
700 | 700 |
701 if (rv == 0) { | 701 if (rv == 0) { |
702 match_context->response->blob_uuid = match_context->blob_data->uuid(); | 702 match_context->response->blob_uuid = match_context->blob_data->uuid(); |
703 match_context->response->blob_size = match_context->total_bytes_read; | 703 match_context->response->blob_size = match_context->total_bytes_read; |
704 MatchDoneWithBody(match_context.Pass()); | 704 MatchDoneWithBody(match_context.Pass()); |
705 return; | 705 return; |
(...skipping 18 matching lines...) Expand all Loading... |
724 int read_rv = tmp_entry_ptr->ReadData(INDEX_RESPONSE_BODY, total_bytes_read, | 724 int read_rv = tmp_entry_ptr->ReadData(INDEX_RESPONSE_BODY, total_bytes_read, |
725 buffer, buffer->size(), read_callback); | 725 buffer, buffer->size(), read_callback); |
726 | 726 |
727 if (read_rv != net::ERR_IO_PENDING) | 727 if (read_rv != net::ERR_IO_PENDING) |
728 read_callback.Run(read_rv); | 728 read_callback.Run(read_rv); |
729 } | 729 } |
730 | 730 |
731 void CacheStorageCache::MatchDoneWithBody( | 731 void CacheStorageCache::MatchDoneWithBody( |
732 scoped_ptr<MatchContext> match_context) { | 732 scoped_ptr<MatchContext> match_context) { |
733 if (!match_context->blob_storage_context) { | 733 if (!match_context->blob_storage_context) { |
734 match_context->original_callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE, | 734 match_context->original_callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
735 scoped_ptr<ServiceWorkerResponse>(), | 735 scoped_ptr<ServiceWorkerResponse>(), |
736 scoped_ptr<storage::BlobDataHandle>()); | 736 scoped_ptr<storage::BlobDataHandle>()); |
737 return; | 737 return; |
738 } | 738 } |
739 | 739 |
740 scoped_ptr<storage::BlobDataHandle> blob_data_handle( | 740 scoped_ptr<storage::BlobDataHandle> blob_data_handle( |
741 match_context->blob_storage_context->AddFinishedBlob( | 741 match_context->blob_storage_context->AddFinishedBlob( |
742 match_context->blob_data.get())); | 742 match_context->blob_data.get())); |
743 | 743 |
744 match_context->original_callback.Run(CacheStorageCache::ERROR_TYPE_OK, | 744 match_context->original_callback.Run(CACHE_STORAGE_OK, |
745 match_context->response.Pass(), | 745 match_context->response.Pass(), |
746 blob_data_handle.Pass()); | 746 blob_data_handle.Pass()); |
747 } | 747 } |
748 | 748 |
749 void CacheStorageCache::PutImpl(scoped_ptr<PutContext> put_context) { | 749 void CacheStorageCache::PutImpl(scoped_ptr<PutContext> put_context) { |
750 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); | 750 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
751 if (backend_state_ != BACKEND_OPEN) { | 751 if (backend_state_ != BACKEND_OPEN) { |
752 put_context->callback.Run(ERROR_TYPE_STORAGE); | 752 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
753 return; | 753 return; |
754 } | 754 } |
755 | 755 |
756 scoped_ptr<ServiceWorkerFetchRequest> request_copy( | 756 scoped_ptr<ServiceWorkerFetchRequest> request_copy( |
757 new ServiceWorkerFetchRequest(*put_context->request)); | 757 new ServiceWorkerFetchRequest(*put_context->request)); |
758 | 758 |
759 DeleteImpl(request_copy.Pass(), base::Bind(&CacheStorageCache::PutDidDelete, | 759 DeleteImpl(request_copy.Pass(), base::Bind(&CacheStorageCache::PutDidDelete, |
760 weak_ptr_factory_.GetWeakPtr(), | 760 weak_ptr_factory_.GetWeakPtr(), |
761 base::Passed(put_context.Pass()))); | 761 base::Passed(put_context.Pass()))); |
762 } | 762 } |
763 | 763 |
764 void CacheStorageCache::PutDidDelete(scoped_ptr<PutContext> put_context, | 764 void CacheStorageCache::PutDidDelete(scoped_ptr<PutContext> put_context, |
765 ErrorType delete_error) { | 765 CacheStorageError delete_error) { |
766 if (backend_state_ != BACKEND_OPEN) { | 766 if (backend_state_ != BACKEND_OPEN) { |
767 put_context->callback.Run(ERROR_TYPE_STORAGE); | 767 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
768 return; | 768 return; |
769 } | 769 } |
770 | 770 |
771 disk_cache::Entry** entry_ptr = &put_context->cache_entry; | 771 disk_cache::Entry** entry_ptr = &put_context->cache_entry; |
772 ServiceWorkerFetchRequest* request_ptr = put_context->request.get(); | 772 ServiceWorkerFetchRequest* request_ptr = put_context->request.get(); |
773 disk_cache::Backend* backend_ptr = backend_.get(); | 773 disk_cache::Backend* backend_ptr = backend_.get(); |
774 | 774 |
775 net::CompletionCallback create_entry_callback = base::Bind( | 775 net::CompletionCallback create_entry_callback = base::Bind( |
776 &CacheStorageCache::PutDidCreateEntry, weak_ptr_factory_.GetWeakPtr(), | 776 &CacheStorageCache::PutDidCreateEntry, weak_ptr_factory_.GetWeakPtr(), |
777 base::Passed(put_context.Pass())); | 777 base::Passed(put_context.Pass())); |
778 | 778 |
779 int create_rv = backend_ptr->CreateEntry(request_ptr->url.spec(), entry_ptr, | 779 int create_rv = backend_ptr->CreateEntry(request_ptr->url.spec(), entry_ptr, |
780 create_entry_callback); | 780 create_entry_callback); |
781 | 781 |
782 if (create_rv != net::ERR_IO_PENDING) | 782 if (create_rv != net::ERR_IO_PENDING) |
783 create_entry_callback.Run(create_rv); | 783 create_entry_callback.Run(create_rv); |
784 } | 784 } |
785 | 785 |
786 void CacheStorageCache::PutDidCreateEntry(scoped_ptr<PutContext> put_context, | 786 void CacheStorageCache::PutDidCreateEntry(scoped_ptr<PutContext> put_context, |
787 int rv) { | 787 int rv) { |
788 if (rv != net::OK) { | 788 if (rv != net::OK) { |
789 put_context->callback.Run(CacheStorageCache::ERROR_TYPE_EXISTS); | 789 put_context->callback.Run(CACHE_STORAGE_ERROR_EXISTS); |
790 return; | 790 return; |
791 } | 791 } |
792 | 792 |
793 DCHECK(put_context->cache_entry); | 793 DCHECK(put_context->cache_entry); |
794 | 794 |
795 CacheMetadata metadata; | 795 CacheMetadata metadata; |
796 CacheRequest* request_metadata = metadata.mutable_request(); | 796 CacheRequest* request_metadata = metadata.mutable_request(); |
797 request_metadata->set_method(put_context->request->method); | 797 request_metadata->set_method(put_context->request->method); |
798 for (ServiceWorkerHeaderMap::const_iterator it = | 798 for (ServiceWorkerHeaderMap::const_iterator it = |
799 put_context->request->headers.begin(); | 799 put_context->request->headers.begin(); |
(...skipping 16 matching lines...) Expand all Loading... |
816 it != put_context->response->headers.end(); ++it) { | 816 it != put_context->response->headers.end(); ++it) { |
817 DCHECK(it->first.find('\0') == std::string::npos); | 817 DCHECK(it->first.find('\0') == std::string::npos); |
818 DCHECK(it->second.find('\0') == std::string::npos); | 818 DCHECK(it->second.find('\0') == std::string::npos); |
819 CacheHeaderMap* header_map = response_metadata->add_headers(); | 819 CacheHeaderMap* header_map = response_metadata->add_headers(); |
820 header_map->set_name(it->first); | 820 header_map->set_name(it->first); |
821 header_map->set_value(it->second); | 821 header_map->set_value(it->second); |
822 } | 822 } |
823 | 823 |
824 scoped_ptr<std::string> serialized(new std::string()); | 824 scoped_ptr<std::string> serialized(new std::string()); |
825 if (!metadata.SerializeToString(serialized.get())) { | 825 if (!metadata.SerializeToString(serialized.get())) { |
826 put_context->callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE); | 826 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
827 return; | 827 return; |
828 } | 828 } |
829 | 829 |
830 scoped_refptr<net::StringIOBuffer> buffer( | 830 scoped_refptr<net::StringIOBuffer> buffer( |
831 new net::StringIOBuffer(serialized.Pass())); | 831 new net::StringIOBuffer(serialized.Pass())); |
832 | 832 |
833 // Get a temporary copy of the entry pointer before passing it in base::Bind. | 833 // Get a temporary copy of the entry pointer before passing it in base::Bind. |
834 disk_cache::Entry* tmp_entry_ptr = put_context->cache_entry; | 834 disk_cache::Entry* tmp_entry_ptr = put_context->cache_entry; |
835 | 835 |
836 net::CompletionCallback write_headers_callback = base::Bind( | 836 net::CompletionCallback write_headers_callback = base::Bind( |
837 &CacheStorageCache::PutDidWriteHeaders, weak_ptr_factory_.GetWeakPtr(), | 837 &CacheStorageCache::PutDidWriteHeaders, weak_ptr_factory_.GetWeakPtr(), |
838 base::Passed(put_context.Pass()), buffer->size()); | 838 base::Passed(put_context.Pass()), buffer->size()); |
839 | 839 |
840 rv = tmp_entry_ptr->WriteData(INDEX_HEADERS, 0 /* offset */, buffer.get(), | 840 rv = tmp_entry_ptr->WriteData(INDEX_HEADERS, 0 /* offset */, buffer.get(), |
841 buffer->size(), write_headers_callback, | 841 buffer->size(), write_headers_callback, |
842 true /* truncate */); | 842 true /* truncate */); |
843 | 843 |
844 if (rv != net::ERR_IO_PENDING) | 844 if (rv != net::ERR_IO_PENDING) |
845 write_headers_callback.Run(rv); | 845 write_headers_callback.Run(rv); |
846 } | 846 } |
847 | 847 |
848 void CacheStorageCache::PutDidWriteHeaders(scoped_ptr<PutContext> put_context, | 848 void CacheStorageCache::PutDidWriteHeaders(scoped_ptr<PutContext> put_context, |
849 int expected_bytes, | 849 int expected_bytes, |
850 int rv) { | 850 int rv) { |
851 if (rv != expected_bytes) { | 851 if (rv != expected_bytes) { |
852 put_context->cache_entry->Doom(); | 852 put_context->cache_entry->Doom(); |
853 put_context->callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE); | 853 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
854 return; | 854 return; |
855 } | 855 } |
856 | 856 |
857 // The metadata is written, now for the response content. The data is streamed | 857 // The metadata is written, now for the response content. The data is streamed |
858 // from the blob into the cache entry. | 858 // from the blob into the cache entry. |
859 | 859 |
860 if (put_context->response->blob_uuid.empty()) { | 860 if (put_context->response->blob_uuid.empty()) { |
861 if (put_context->quota_manager_proxy.get()) { | 861 if (put_context->quota_manager_proxy.get()) { |
862 put_context->quota_manager_proxy->NotifyStorageModified( | 862 put_context->quota_manager_proxy->NotifyStorageModified( |
863 storage::QuotaClient::kServiceWorkerCache, put_context->origin, | 863 storage::QuotaClient::kServiceWorkerCache, put_context->origin, |
864 storage::kStorageTypeTemporary, | 864 storage::kStorageTypeTemporary, |
865 put_context->cache_entry->GetDataSize(INDEX_HEADERS)); | 865 put_context->cache_entry->GetDataSize(INDEX_HEADERS)); |
866 } | 866 } |
867 | 867 |
868 put_context->callback.Run(CacheStorageCache::ERROR_TYPE_OK); | 868 put_context->callback.Run(CACHE_STORAGE_OK); |
869 return; | 869 return; |
870 } | 870 } |
871 | 871 |
872 DCHECK(put_context->blob_data_handle); | 872 DCHECK(put_context->blob_data_handle); |
873 | 873 |
874 disk_cache::ScopedEntryPtr entry(put_context->cache_entry); | 874 disk_cache::ScopedEntryPtr entry(put_context->cache_entry); |
875 put_context->cache_entry = NULL; | 875 put_context->cache_entry = NULL; |
876 scoped_ptr<BlobReader> reader(new BlobReader()); | 876 scoped_ptr<BlobReader> reader(new BlobReader()); |
877 BlobReader* reader_ptr = reader.get(); | 877 BlobReader* reader_ptr = reader.get(); |
878 | 878 |
(...skipping 13 matching lines...) Expand all Loading... |
892 void CacheStorageCache::PutDidWriteBlobToCache( | 892 void CacheStorageCache::PutDidWriteBlobToCache( |
893 scoped_ptr<PutContext> put_context, | 893 scoped_ptr<PutContext> put_context, |
894 scoped_ptr<BlobReader> blob_reader, | 894 scoped_ptr<BlobReader> blob_reader, |
895 disk_cache::ScopedEntryPtr entry, | 895 disk_cache::ScopedEntryPtr entry, |
896 bool success) { | 896 bool success) { |
897 DCHECK(entry); | 897 DCHECK(entry); |
898 put_context->cache_entry = entry.release(); | 898 put_context->cache_entry = entry.release(); |
899 | 899 |
900 if (!success) { | 900 if (!success) { |
901 put_context->cache_entry->Doom(); | 901 put_context->cache_entry->Doom(); |
902 put_context->callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE); | 902 put_context->callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
903 return; | 903 return; |
904 } | 904 } |
905 | 905 |
906 if (put_context->quota_manager_proxy.get()) { | 906 if (put_context->quota_manager_proxy.get()) { |
907 put_context->quota_manager_proxy->NotifyStorageModified( | 907 put_context->quota_manager_proxy->NotifyStorageModified( |
908 storage::QuotaClient::kServiceWorkerCache, put_context->origin, | 908 storage::QuotaClient::kServiceWorkerCache, put_context->origin, |
909 storage::kStorageTypeTemporary, | 909 storage::kStorageTypeTemporary, |
910 put_context->cache_entry->GetDataSize(INDEX_HEADERS) + | 910 put_context->cache_entry->GetDataSize(INDEX_HEADERS) + |
911 put_context->cache_entry->GetDataSize(INDEX_RESPONSE_BODY)); | 911 put_context->cache_entry->GetDataSize(INDEX_RESPONSE_BODY)); |
912 } | 912 } |
913 | 913 |
914 put_context->callback.Run(CacheStorageCache::ERROR_TYPE_OK); | 914 put_context->callback.Run(CACHE_STORAGE_OK); |
915 } | 915 } |
916 | 916 |
917 void CacheStorageCache::DeleteImpl( | 917 void CacheStorageCache::DeleteImpl( |
918 scoped_ptr<ServiceWorkerFetchRequest> request, | 918 scoped_ptr<ServiceWorkerFetchRequest> request, |
919 const ErrorCallback& callback) { | 919 const ErrorCallback& callback) { |
920 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); | 920 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
921 if (backend_state_ != BACKEND_OPEN) { | 921 if (backend_state_ != BACKEND_OPEN) { |
922 callback.Run(ERROR_TYPE_STORAGE); | 922 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
923 return; | 923 return; |
924 } | 924 } |
925 scoped_ptr<disk_cache::Entry*> entry(new disk_cache::Entry*); | 925 scoped_ptr<disk_cache::Entry*> entry(new disk_cache::Entry*); |
926 | 926 |
927 disk_cache::Entry** entry_ptr = entry.get(); | 927 disk_cache::Entry** entry_ptr = entry.get(); |
928 | 928 |
929 ServiceWorkerFetchRequest* request_ptr = request.get(); | 929 ServiceWorkerFetchRequest* request_ptr = request.get(); |
930 | 930 |
931 net::CompletionCallback open_entry_callback = base::Bind( | 931 net::CompletionCallback open_entry_callback = base::Bind( |
932 &CacheStorageCache::DeleteDidOpenEntry, weak_ptr_factory_.GetWeakPtr(), | 932 &CacheStorageCache::DeleteDidOpenEntry, weak_ptr_factory_.GetWeakPtr(), |
933 origin_, base::Passed(request.Pass()), callback, | 933 origin_, base::Passed(request.Pass()), callback, |
934 base::Passed(entry.Pass()), quota_manager_proxy_); | 934 base::Passed(entry.Pass()), quota_manager_proxy_); |
935 | 935 |
936 int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr, | 936 int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr, |
937 open_entry_callback); | 937 open_entry_callback); |
938 if (rv != net::ERR_IO_PENDING) | 938 if (rv != net::ERR_IO_PENDING) |
939 open_entry_callback.Run(rv); | 939 open_entry_callback.Run(rv); |
940 } | 940 } |
941 | 941 |
942 void CacheStorageCache::DeleteDidOpenEntry( | 942 void CacheStorageCache::DeleteDidOpenEntry( |
943 const GURL& origin, | 943 const GURL& origin, |
944 scoped_ptr<ServiceWorkerFetchRequest> request, | 944 scoped_ptr<ServiceWorkerFetchRequest> request, |
945 const CacheStorageCache::ErrorCallback& callback, | 945 const CacheStorageCache::ErrorCallback& callback, |
946 scoped_ptr<disk_cache::Entry*> entry_ptr, | 946 scoped_ptr<disk_cache::Entry*> entry_ptr, |
947 const scoped_refptr<storage::QuotaManagerProxy>& quota_manager_proxy, | 947 const scoped_refptr<storage::QuotaManagerProxy>& quota_manager_proxy, |
948 int rv) { | 948 int rv) { |
949 if (rv != net::OK) { | 949 if (rv != net::OK) { |
950 callback.Run(CacheStorageCache::ERROR_TYPE_NOT_FOUND); | 950 callback.Run(CACHE_STORAGE_ERROR_NOT_FOUND); |
951 return; | 951 return; |
952 } | 952 } |
953 | 953 |
954 DCHECK(entry_ptr); | 954 DCHECK(entry_ptr); |
955 disk_cache::ScopedEntryPtr entry(*entry_ptr); | 955 disk_cache::ScopedEntryPtr entry(*entry_ptr); |
956 | 956 |
957 if (quota_manager_proxy.get()) { | 957 if (quota_manager_proxy.get()) { |
958 quota_manager_proxy->NotifyStorageModified( | 958 quota_manager_proxy->NotifyStorageModified( |
959 storage::QuotaClient::kServiceWorkerCache, origin, | 959 storage::QuotaClient::kServiceWorkerCache, origin, |
960 storage::kStorageTypeTemporary, | 960 storage::kStorageTypeTemporary, |
961 -1 * (entry->GetDataSize(INDEX_HEADERS) + | 961 -1 * (entry->GetDataSize(INDEX_HEADERS) + |
962 entry->GetDataSize(INDEX_RESPONSE_BODY))); | 962 entry->GetDataSize(INDEX_RESPONSE_BODY))); |
963 } | 963 } |
964 | 964 |
965 entry->Doom(); | 965 entry->Doom(); |
966 callback.Run(CacheStorageCache::ERROR_TYPE_OK); | 966 callback.Run(CACHE_STORAGE_OK); |
967 } | 967 } |
968 | 968 |
969 void CacheStorageCache::KeysImpl(const RequestsCallback& callback) { | 969 void CacheStorageCache::KeysImpl(const RequestsCallback& callback) { |
970 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); | 970 DCHECK(backend_state_ != BACKEND_UNINITIALIZED); |
971 if (backend_state_ != BACKEND_OPEN) { | 971 if (backend_state_ != BACKEND_OPEN) { |
972 callback.Run(ERROR_TYPE_STORAGE, scoped_ptr<Requests>()); | 972 callback.Run(CACHE_STORAGE_ERROR_STORAGE, scoped_ptr<Requests>()); |
973 return; | 973 return; |
974 } | 974 } |
975 | 975 |
976 // 1. Iterate through all of the entries, open them, and add them to a vector. | 976 // 1. Iterate through all of the entries, open them, and add them to a vector. |
977 // 2. For each open entry: | 977 // 2. For each open entry: |
978 // 2.1. Read the headers into a protobuf. | 978 // 2.1. Read the headers into a protobuf. |
979 // 2.2. Copy the protobuf into a ServiceWorkerFetchRequest (a "key"). | 979 // 2.2. Copy the protobuf into a ServiceWorkerFetchRequest (a "key"). |
980 // 2.3. Push the response into a vector of requests to be returned. | 980 // 2.3. Push the response into a vector of requests to be returned. |
981 // 3. Return the vector of requests (keys). | 981 // 3. Return the vector of requests (keys). |
982 | 982 |
(...skipping 21 matching lines...) Expand all Loading... |
1004 int rv) { | 1004 int rv) { |
1005 if (rv == net::ERR_FAILED) { | 1005 if (rv == net::ERR_FAILED) { |
1006 DCHECK(!keys_context->enumerated_entry); | 1006 DCHECK(!keys_context->enumerated_entry); |
1007 // Enumeration is complete, extract the requests from the entries. | 1007 // Enumeration is complete, extract the requests from the entries. |
1008 Entries::iterator iter = keys_context->entries.begin(); | 1008 Entries::iterator iter = keys_context->entries.begin(); |
1009 KeysProcessNextEntry(keys_context.Pass(), iter); | 1009 KeysProcessNextEntry(keys_context.Pass(), iter); |
1010 return; | 1010 return; |
1011 } | 1011 } |
1012 | 1012 |
1013 if (rv < 0) { | 1013 if (rv < 0) { |
1014 keys_context->original_callback.Run(ERROR_TYPE_STORAGE, | 1014 keys_context->original_callback.Run(CACHE_STORAGE_ERROR_STORAGE, |
1015 scoped_ptr<Requests>()); | 1015 scoped_ptr<Requests>()); |
1016 return; | 1016 return; |
1017 } | 1017 } |
1018 | 1018 |
1019 if (backend_state_ != BACKEND_OPEN) { | 1019 if (backend_state_ != BACKEND_OPEN) { |
1020 keys_context->original_callback.Run(ERROR_TYPE_NOT_FOUND, | 1020 keys_context->original_callback.Run(CACHE_STORAGE_ERROR_NOT_FOUND, |
1021 scoped_ptr<Requests>()); | 1021 scoped_ptr<Requests>()); |
1022 return; | 1022 return; |
1023 } | 1023 } |
1024 | 1024 |
1025 // Store the entry. | 1025 // Store the entry. |
1026 keys_context->entries.push_back(keys_context->enumerated_entry); | 1026 keys_context->entries.push_back(keys_context->enumerated_entry); |
1027 keys_context->enumerated_entry = NULL; | 1027 keys_context->enumerated_entry = NULL; |
1028 | 1028 |
1029 // Enumerate the next entry. | 1029 // Enumerate the next entry. |
1030 disk_cache::Backend::Iterator& iterator = *keys_context->backend_iterator; | 1030 disk_cache::Backend::Iterator& iterator = *keys_context->backend_iterator; |
1031 disk_cache::Entry** enumerated_entry = &keys_context->enumerated_entry; | 1031 disk_cache::Entry** enumerated_entry = &keys_context->enumerated_entry; |
1032 net::CompletionCallback open_entry_callback = base::Bind( | 1032 net::CompletionCallback open_entry_callback = base::Bind( |
1033 &CacheStorageCache::KeysDidOpenNextEntry, weak_ptr_factory_.GetWeakPtr(), | 1033 &CacheStorageCache::KeysDidOpenNextEntry, weak_ptr_factory_.GetWeakPtr(), |
1034 base::Passed(keys_context.Pass())); | 1034 base::Passed(keys_context.Pass())); |
1035 | 1035 |
1036 rv = iterator.OpenNextEntry(enumerated_entry, open_entry_callback); | 1036 rv = iterator.OpenNextEntry(enumerated_entry, open_entry_callback); |
1037 | 1037 |
1038 if (rv != net::ERR_IO_PENDING) | 1038 if (rv != net::ERR_IO_PENDING) |
1039 open_entry_callback.Run(rv); | 1039 open_entry_callback.Run(rv); |
1040 } | 1040 } |
1041 | 1041 |
1042 void CacheStorageCache::KeysProcessNextEntry( | 1042 void CacheStorageCache::KeysProcessNextEntry( |
1043 scoped_ptr<KeysContext> keys_context, | 1043 scoped_ptr<KeysContext> keys_context, |
1044 const Entries::iterator& iter) { | 1044 const Entries::iterator& iter) { |
1045 if (iter == keys_context->entries.end()) { | 1045 if (iter == keys_context->entries.end()) { |
1046 // All done. Return all of the keys. | 1046 // All done. Return all of the keys. |
1047 keys_context->original_callback.Run(ERROR_TYPE_OK, | 1047 keys_context->original_callback.Run(CACHE_STORAGE_OK, |
1048 keys_context->out_keys.Pass()); | 1048 keys_context->out_keys.Pass()); |
1049 return; | 1049 return; |
1050 } | 1050 } |
1051 | 1051 |
1052 ReadMetadata(*iter, base::Bind(&CacheStorageCache::KeysDidReadMetadata, | 1052 ReadMetadata(*iter, base::Bind(&CacheStorageCache::KeysDidReadMetadata, |
1053 weak_ptr_factory_.GetWeakPtr(), | 1053 weak_ptr_factory_.GetWeakPtr(), |
1054 base::Passed(keys_context.Pass()), iter)); | 1054 base::Passed(keys_context.Pass()), iter)); |
1055 } | 1055 } |
1056 | 1056 |
1057 void CacheStorageCache::KeysDidReadMetadata( | 1057 void CacheStorageCache::KeysDidReadMetadata( |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1114 NULL, backend, create_cache_callback); | 1114 NULL, backend, create_cache_callback); |
1115 if (rv != net::ERR_IO_PENDING) | 1115 if (rv != net::ERR_IO_PENDING) |
1116 create_cache_callback.Run(rv); | 1116 create_cache_callback.Run(rv); |
1117 } | 1117 } |
1118 | 1118 |
1119 void CacheStorageCache::CreateBackendDidCreate( | 1119 void CacheStorageCache::CreateBackendDidCreate( |
1120 const CacheStorageCache::ErrorCallback& callback, | 1120 const CacheStorageCache::ErrorCallback& callback, |
1121 scoped_ptr<ScopedBackendPtr> backend_ptr, | 1121 scoped_ptr<ScopedBackendPtr> backend_ptr, |
1122 int rv) { | 1122 int rv) { |
1123 if (rv != net::OK) { | 1123 if (rv != net::OK) { |
1124 callback.Run(CacheStorageCache::ERROR_TYPE_STORAGE); | 1124 callback.Run(CACHE_STORAGE_ERROR_STORAGE); |
1125 return; | 1125 return; |
1126 } | 1126 } |
1127 | 1127 |
1128 backend_ = backend_ptr->Pass(); | 1128 backend_ = backend_ptr->Pass(); |
1129 callback.Run(CacheStorageCache::ERROR_TYPE_OK); | 1129 callback.Run(CACHE_STORAGE_OK); |
1130 } | 1130 } |
1131 | 1131 |
1132 void CacheStorageCache::InitBackend() { | 1132 void CacheStorageCache::InitBackend() { |
1133 DCHECK(backend_state_ == BACKEND_UNINITIALIZED); | 1133 DCHECK(backend_state_ == BACKEND_UNINITIALIZED); |
1134 | 1134 |
1135 if (initializing_) | 1135 if (initializing_) |
1136 return; | 1136 return; |
1137 | 1137 |
1138 DCHECK(!scheduler_->ScheduledOperations()); | 1138 DCHECK(!scheduler_->ScheduledOperations()); |
1139 initializing_ = true; | 1139 initializing_ = true; |
1140 | 1140 |
1141 scheduler_->ScheduleOperation(base::Bind( | 1141 scheduler_->ScheduleOperation(base::Bind( |
1142 &CacheStorageCache::CreateBackend, weak_ptr_factory_.GetWeakPtr(), | 1142 &CacheStorageCache::CreateBackend, weak_ptr_factory_.GetWeakPtr(), |
1143 base::Bind(&CacheStorageCache::InitDone, | 1143 base::Bind(&CacheStorageCache::InitDone, |
1144 weak_ptr_factory_.GetWeakPtr()))); | 1144 weak_ptr_factory_.GetWeakPtr()))); |
1145 } | 1145 } |
1146 | 1146 |
1147 void CacheStorageCache::InitDone(ErrorType error) { | 1147 void CacheStorageCache::InitDone(CacheStorageError error) { |
1148 initializing_ = false; | 1148 initializing_ = false; |
1149 backend_state_ = (error == ERROR_TYPE_OK && backend_ && | 1149 backend_state_ = (error == CACHE_STORAGE_OK && backend_ && |
1150 backend_state_ == BACKEND_UNINITIALIZED) | 1150 backend_state_ == BACKEND_UNINITIALIZED) |
1151 ? BACKEND_OPEN | 1151 ? BACKEND_OPEN |
1152 : BACKEND_CLOSED; | 1152 : BACKEND_CLOSED; |
1153 | 1153 |
1154 UMA_HISTOGRAM_ENUMERATION("ServiceWorkerCache.InitBackendResult", error, | 1154 UMA_HISTOGRAM_ENUMERATION("ServiceWorkerCache.InitBackendResult", error, |
1155 ErrorType::ERROR_TYPE_LAST + 1); | 1155 CACHE_STORAGE_ERROR_LAST + 1); |
1156 | 1156 |
1157 scheduler_->CompleteOperationAndRunNext(); | 1157 scheduler_->CompleteOperationAndRunNext(); |
1158 } | 1158 } |
1159 | 1159 |
1160 void CacheStorageCache::PendingClosure(const base::Closure& callback) { | 1160 void CacheStorageCache::PendingClosure(const base::Closure& callback) { |
1161 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); | 1161 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); |
1162 | 1162 |
1163 callback.Run(); | 1163 callback.Run(); |
1164 if (cache) | 1164 if (cache) |
1165 scheduler_->CompleteOperationAndRunNext(); | 1165 scheduler_->CompleteOperationAndRunNext(); |
1166 } | 1166 } |
1167 | 1167 |
1168 void CacheStorageCache::PendingErrorCallback(const ErrorCallback& callback, | 1168 void CacheStorageCache::PendingErrorCallback(const ErrorCallback& callback, |
1169 ErrorType error) { | 1169 CacheStorageError error) { |
1170 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); | 1170 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); |
1171 | 1171 |
1172 callback.Run(error); | 1172 callback.Run(error); |
1173 if (cache) | 1173 if (cache) |
1174 scheduler_->CompleteOperationAndRunNext(); | 1174 scheduler_->CompleteOperationAndRunNext(); |
1175 } | 1175 } |
1176 | 1176 |
1177 void CacheStorageCache::PendingResponseCallback( | 1177 void CacheStorageCache::PendingResponseCallback( |
1178 const ResponseCallback& callback, | 1178 const ResponseCallback& callback, |
1179 ErrorType error, | 1179 CacheStorageError error, |
1180 scoped_ptr<ServiceWorkerResponse> response, | 1180 scoped_ptr<ServiceWorkerResponse> response, |
1181 scoped_ptr<storage::BlobDataHandle> blob_data_handle) { | 1181 scoped_ptr<storage::BlobDataHandle> blob_data_handle) { |
1182 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); | 1182 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); |
1183 | 1183 |
1184 callback.Run(error, response.Pass(), blob_data_handle.Pass()); | 1184 callback.Run(error, response.Pass(), blob_data_handle.Pass()); |
1185 if (cache) | 1185 if (cache) |
1186 scheduler_->CompleteOperationAndRunNext(); | 1186 scheduler_->CompleteOperationAndRunNext(); |
1187 } | 1187 } |
1188 | 1188 |
1189 void CacheStorageCache::PendingRequestsCallback( | 1189 void CacheStorageCache::PendingRequestsCallback( |
1190 const RequestsCallback& callback, | 1190 const RequestsCallback& callback, |
1191 ErrorType error, | 1191 CacheStorageError error, |
1192 scoped_ptr<Requests> requests) { | 1192 scoped_ptr<Requests> requests) { |
1193 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); | 1193 base::WeakPtr<CacheStorageCache> cache = weak_ptr_factory_.GetWeakPtr(); |
1194 | 1194 |
1195 callback.Run(error, requests.Pass()); | 1195 callback.Run(error, requests.Pass()); |
1196 if (cache) | 1196 if (cache) |
1197 scheduler_->CompleteOperationAndRunNext(); | 1197 scheduler_->CompleteOperationAndRunNext(); |
1198 } | 1198 } |
1199 | 1199 |
1200 } // namespace content | 1200 } // namespace content |
OLD | NEW |