OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/service_worker/service_worker_storage.h" | 5 #include "content/browser/service_worker/service_worker_storage.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "base/sequenced_task_runner.h" | 11 #include "base/sequenced_task_runner.h" |
12 #include "base/task_runner_util.h" | 12 #include "base/task_runner_util.h" |
13 #include "content/browser/service_worker/service_worker_context_core.h" | 13 #include "content/browser/service_worker/service_worker_context_core.h" |
14 #include "content/browser/service_worker/service_worker_disk_cache.h" | 14 #include "content/browser/service_worker/service_worker_disk_cache.h" |
15 #include "content/browser/service_worker/service_worker_info.h" | 15 #include "content/browser/service_worker/service_worker_info.h" |
16 #include "content/browser/service_worker/service_worker_registration.h" | 16 #include "content/browser/service_worker/service_worker_registration.h" |
17 #include "content/browser/service_worker/service_worker_utils.h" | 17 #include "content/browser/service_worker/service_worker_utils.h" |
18 #include "content/browser/service_worker/service_worker_version.h" | 18 #include "content/browser/service_worker/service_worker_version.h" |
19 #include "content/common/service_worker/service_worker_types.h" | 19 #include "content/common/service_worker/service_worker_types.h" |
20 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
21 #include "net/base/net_errors.h" | 21 #include "net/base/net_errors.h" |
22 #include "webkit/browser/quota/quota_manager_proxy.h" | 22 #include "webkit/browser/quota/quota_manager_proxy.h" |
23 | 23 |
24 namespace content { | 24 namespace content { |
25 | 25 |
26 namespace { | 26 namespace { |
27 | 27 |
28 typedef base::Callback<void( | 28 typedef base::Callback<void( |
29 ServiceWorkerStorage::InitialData* data, | 29 ServiceWorkerStorage::InitialData* data, |
30 ServiceWorkerStatusCode status)> InitializeCallback; | 30 ServiceWorkerDatabase::Status status)> InitializeCallback; |
31 typedef base::Callback<void( | 31 typedef base::Callback<void( |
32 const ServiceWorkerDatabase::RegistrationData& data, | 32 const ServiceWorkerDatabase::RegistrationData& data, |
33 const std::vector<ServiceWorkerDatabase::ResourceRecord>& resources, | 33 const std::vector<ServiceWorkerDatabase::ResourceRecord>& resources, |
34 ServiceWorkerStatusCode status)> ReadRegistrationCallback; | 34 ServiceWorkerDatabase::Status status)> ReadRegistrationCallback; |
35 typedef base::Callback<void( | 35 typedef base::Callback<void( |
36 bool origin_is_deletable, | 36 bool origin_is_deletable, |
37 ServiceWorkerStatusCode status)> DeleteRegistrationCallback; | 37 ServiceWorkerDatabase::Status status)> DeleteRegistrationCallback; |
38 | 38 |
39 void RunSoon(const tracked_objects::Location& from_here, | 39 void RunSoon(const tracked_objects::Location& from_here, |
40 const base::Closure& closure) { | 40 const base::Closure& closure) { |
41 base::MessageLoop::current()->PostTask(from_here, closure); | 41 base::MessageLoop::current()->PostTask(from_here, closure); |
42 } | 42 } |
43 | 43 |
44 void CompleteFindNow( | 44 void CompleteFindNow( |
45 const scoped_refptr<ServiceWorkerRegistration>& registration, | 45 const scoped_refptr<ServiceWorkerRegistration>& registration, |
46 ServiceWorkerStatusCode status, | 46 ServiceWorkerStatusCode status, |
47 const ServiceWorkerStorage::FindRegistrationCallback& callback) { | 47 const ServiceWorkerStorage::FindRegistrationCallback& callback) { |
(...skipping 10 matching lines...) Expand all Loading... |
58 | 58 |
59 const base::FilePath::CharType kServiceWorkerDirectory[] = | 59 const base::FilePath::CharType kServiceWorkerDirectory[] = |
60 FILE_PATH_LITERAL("Service Worker"); | 60 FILE_PATH_LITERAL("Service Worker"); |
61 const base::FilePath::CharType kDatabaseName[] = | 61 const base::FilePath::CharType kDatabaseName[] = |
62 FILE_PATH_LITERAL("Database"); | 62 FILE_PATH_LITERAL("Database"); |
63 | 63 |
64 const int kMaxMemDiskCacheSize = 10 * 1024 * 1024; | 64 const int kMaxMemDiskCacheSize = 10 * 1024 * 1024; |
65 | 65 |
66 void EmptyCompletionCallback(int) {} | 66 void EmptyCompletionCallback(int) {} |
67 | 67 |
| 68 ServiceWorkerStatusCode DatabaseStatusToStatusCode( |
| 69 ServiceWorkerDatabase::Status status) { |
| 70 switch (status) { |
| 71 case ServiceWorkerDatabase::STATUS_OK: |
| 72 return SERVICE_WORKER_OK; |
| 73 case ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND: |
| 74 return SERVICE_WORKER_ERROR_NOT_FOUND; |
| 75 default: |
| 76 return SERVICE_WORKER_ERROR_FAILED; |
| 77 } |
| 78 } |
| 79 |
68 void ReadInitialDataFromDB( | 80 void ReadInitialDataFromDB( |
69 ServiceWorkerDatabase* database, | 81 ServiceWorkerDatabase* database, |
70 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 82 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
71 const InitializeCallback& callback) { | 83 const InitializeCallback& callback) { |
72 DCHECK(database); | 84 DCHECK(database); |
73 scoped_ptr<ServiceWorkerStorage::InitialData> data( | 85 scoped_ptr<ServiceWorkerStorage::InitialData> data( |
74 new ServiceWorkerStorage::InitialData()); | 86 new ServiceWorkerStorage::InitialData()); |
75 | 87 |
76 ServiceWorkerStatusCode status = | 88 ServiceWorkerDatabase::Status status = |
77 database->GetNextAvailableIds(&data->next_registration_id, | 89 database->GetNextAvailableIds(&data->next_registration_id, |
78 &data->next_version_id, | 90 &data->next_version_id, |
79 &data->next_resource_id); | 91 &data->next_resource_id); |
80 if (status != SERVICE_WORKER_OK) { | 92 if (status != ServiceWorkerDatabase::STATUS_OK) { |
81 original_task_runner->PostTask( | 93 original_task_runner->PostTask( |
82 FROM_HERE, base::Bind(callback, base::Owned(data.release()), status)); | 94 FROM_HERE, base::Bind(callback, base::Owned(data.release()), status)); |
83 return; | 95 return; |
84 } | 96 } |
85 | 97 |
86 status = database->GetOriginsWithRegistrations(&data->origins); | 98 status = database->GetOriginsWithRegistrations(&data->origins); |
87 original_task_runner->PostTask( | 99 original_task_runner->PostTask( |
88 FROM_HERE, base::Bind(callback, base::Owned(data.release()), status)); | 100 FROM_HERE, base::Bind(callback, base::Owned(data.release()), status)); |
89 } | 101 } |
90 | 102 |
91 void ReadRegistrationFromDB( | 103 void ReadRegistrationFromDB( |
92 ServiceWorkerDatabase* database, | 104 ServiceWorkerDatabase* database, |
93 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 105 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
94 int64 registration_id, | 106 int64 registration_id, |
95 const GURL& origin, | 107 const GURL& origin, |
96 const ReadRegistrationCallback& callback) { | 108 const ReadRegistrationCallback& callback) { |
97 DCHECK(database); | 109 DCHECK(database); |
98 ServiceWorkerDatabase::RegistrationData data; | 110 ServiceWorkerDatabase::RegistrationData data; |
99 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 111 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
100 | 112 |
101 // TODO(nhiroki): The database should return more detailed status like | 113 // TODO(nhiroki): The database should return more detailed status like |
102 // ServiceWorkerStatusCode instead of bool value. | 114 // ServiceWorkerStatusCode instead of bool value. |
103 ServiceWorkerStatusCode status = SERVICE_WORKER_OK; | 115 ServiceWorkerDatabase::Status status = ServiceWorkerDatabase::STATUS_OK; |
104 if (!database->ReadRegistration(registration_id, origin, &data, &resources)) { | 116 if (!database->ReadRegistration(registration_id, origin, &data, &resources)) { |
105 status = database->is_disabled() ? SERVICE_WORKER_ERROR_FAILED | 117 status = database->is_disabled() |
106 : SERVICE_WORKER_ERROR_NOT_FOUND; | 118 ? ServiceWorkerDatabase::STATUS_ERROR_FAILED |
| 119 : ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND; |
107 } | 120 } |
108 original_task_runner->PostTask( | 121 original_task_runner->PostTask( |
109 FROM_HERE, base::Bind(callback, data, resources, status)); | 122 FROM_HERE, base::Bind(callback, data, resources, status)); |
110 } | 123 } |
111 | 124 |
112 void DeleteRegistrationFromDB( | 125 void DeleteRegistrationFromDB( |
113 ServiceWorkerDatabase* database, | 126 ServiceWorkerDatabase* database, |
114 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 127 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
115 int64 registration_id, | 128 int64 registration_id, |
116 const GURL& origin, | 129 const GURL& origin, |
117 const DeleteRegistrationCallback& callback) { | 130 const DeleteRegistrationCallback& callback) { |
118 DCHECK(database); | 131 DCHECK(database); |
119 if (!database->DeleteRegistration(registration_id, origin)) { | 132 if (!database->DeleteRegistration(registration_id, origin)) { |
120 original_task_runner->PostTask( | 133 original_task_runner->PostTask( |
121 FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED)); | 134 FROM_HERE, base::Bind(callback, false, |
| 135 ServiceWorkerDatabase::STATUS_ERROR_FAILED)); |
122 return; | 136 return; |
123 } | 137 } |
124 | 138 |
125 // TODO(nhiroki): Add convenient method to ServiceWorkerDatabase to check the | 139 // TODO(nhiroki): Add convenient method to ServiceWorkerDatabase to check the |
126 // unique origin list. | 140 // unique origin list. |
127 std::vector<ServiceWorkerDatabase::RegistrationData> registrations; | 141 std::vector<ServiceWorkerDatabase::RegistrationData> registrations; |
128 if (!database->GetRegistrationsForOrigin(origin, ®istrations)) { | 142 ServiceWorkerDatabase::Status status = |
| 143 database->GetRegistrationsForOrigin(origin, ®istrations); |
| 144 if (status != ServiceWorkerDatabase::STATUS_OK) { |
129 original_task_runner->PostTask( | 145 original_task_runner->PostTask( |
130 FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED)); | 146 FROM_HERE, base::Bind(callback, false, status)); |
131 return; | 147 return; |
132 } | 148 } |
133 | 149 |
134 bool deletable = registrations.empty(); | 150 bool deletable = registrations.empty(); |
135 original_task_runner->PostTask( | 151 original_task_runner->PostTask( |
136 FROM_HERE, base::Bind(callback, deletable, SERVICE_WORKER_OK)); | 152 FROM_HERE, base::Bind(callback, deletable, |
| 153 ServiceWorkerDatabase::STATUS_OK)); |
137 } | 154 } |
138 | 155 |
139 void UpdateToActiveStateInDB( | 156 void UpdateToActiveStateInDB( |
140 ServiceWorkerDatabase* database, | 157 ServiceWorkerDatabase* database, |
141 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 158 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
142 int64 registration_id, | 159 int64 registration_id, |
143 const GURL& origin, | 160 const GURL& origin, |
144 const ServiceWorkerStorage::StatusCallback& callback) { | 161 const ServiceWorkerStorage::StatusCallback& callback) { |
145 DCHECK(database); | 162 DCHECK(database); |
146 | 163 |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 base::Bind(&ReadInitialDataFromDB, | 509 base::Bind(&ReadInitialDataFromDB, |
493 database_.get(), | 510 database_.get(), |
494 base::MessageLoopProxy::current(), | 511 base::MessageLoopProxy::current(), |
495 base::Bind(&ServiceWorkerStorage::DidReadInitialData, | 512 base::Bind(&ServiceWorkerStorage::DidReadInitialData, |
496 weak_factory_.GetWeakPtr()))); | 513 weak_factory_.GetWeakPtr()))); |
497 return false; | 514 return false; |
498 } | 515 } |
499 | 516 |
500 void ServiceWorkerStorage::DidReadInitialData( | 517 void ServiceWorkerStorage::DidReadInitialData( |
501 InitialData* data, | 518 InitialData* data, |
502 ServiceWorkerStatusCode status) { | 519 ServiceWorkerDatabase::Status status) { |
503 DCHECK(data); | 520 DCHECK(data); |
504 DCHECK_EQ(INITIALIZING, state_); | 521 DCHECK_EQ(INITIALIZING, state_); |
505 | 522 |
506 if (status == SERVICE_WORKER_OK) { | 523 if (status == ServiceWorkerDatabase::STATUS_OK) { |
507 next_registration_id_ = data->next_registration_id; | 524 next_registration_id_ = data->next_registration_id; |
508 next_version_id_ = data->next_version_id; | 525 next_version_id_ = data->next_version_id; |
509 next_resource_id_ = data->next_resource_id; | 526 next_resource_id_ = data->next_resource_id; |
510 registered_origins_.swap(data->origins); | 527 registered_origins_.swap(data->origins); |
511 state_ = INITIALIZED; | 528 state_ = INITIALIZED; |
512 } else { | 529 } else { |
513 // TODO(nhiroki): If status==SERVICE_WORKER_ERROR_DB_CORRUPTED, do | 530 // TODO(nhiroki): If status==STATUS_ERROR_CORRUPTED, do corruption recovery |
514 // corruption recovery (http://crbug.com/371675). | 531 // (http://crbug.com/371675). |
515 DLOG(WARNING) << "Failed to initialize: " | 532 DLOG(WARNING) << "Failed to initialize: " << status; |
516 << ServiceWorkerStatusToString(status); | |
517 state_ = DISABLED; | 533 state_ = DISABLED; |
518 } | 534 } |
519 | 535 |
520 for (std::vector<base::Closure>::const_iterator it = pending_tasks_.begin(); | 536 for (std::vector<base::Closure>::const_iterator it = pending_tasks_.begin(); |
521 it != pending_tasks_.end(); ++it) { | 537 it != pending_tasks_.end(); ++it) { |
522 RunSoon(FROM_HERE, *it); | 538 RunSoon(FROM_HERE, *it); |
523 } | 539 } |
524 pending_tasks_.clear(); | 540 pending_tasks_.clear(); |
525 } | 541 } |
526 | 542 |
527 void ServiceWorkerStorage::DidGetRegistrationsForPattern( | 543 void ServiceWorkerStorage::DidGetRegistrationsForPattern( |
528 const GURL& scope, | 544 const GURL& scope, |
529 const FindRegistrationCallback& callback, | 545 const FindRegistrationCallback& callback, |
530 RegistrationList* registrations, | 546 RegistrationList* registrations, |
531 bool success) { | 547 ServiceWorkerDatabase::Status status) { |
532 DCHECK(registrations); | 548 DCHECK(registrations); |
533 if (!success) { | 549 if (status != ServiceWorkerDatabase::STATUS_OK) { |
| 550 // TODO(nhiroki): Handle database error (http://crbug.com/371675). |
534 callback.Run(SERVICE_WORKER_ERROR_FAILED, | 551 callback.Run(SERVICE_WORKER_ERROR_FAILED, |
535 scoped_refptr<ServiceWorkerRegistration>()); | 552 scoped_refptr<ServiceWorkerRegistration>()); |
536 return; | 553 return; |
537 } | 554 } |
538 | 555 |
539 // Find one with a matching scope. | 556 // Find one with a matching scope. |
540 for (RegistrationList::const_iterator it = registrations->begin(); | 557 for (RegistrationList::const_iterator it = registrations->begin(); |
541 it != registrations->end(); ++it) { | 558 it != registrations->end(); ++it) { |
542 if (scope == it->scope) { | 559 if (scope == it->scope) { |
543 scoped_refptr<ServiceWorkerRegistration> registration = | 560 scoped_refptr<ServiceWorkerRegistration> registration = |
(...skipping 14 matching lines...) Expand all Loading... |
558 } | 575 } |
559 | 576 |
560 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, | 577 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, |
561 scoped_refptr<ServiceWorkerRegistration>()); | 578 scoped_refptr<ServiceWorkerRegistration>()); |
562 } | 579 } |
563 | 580 |
564 void ServiceWorkerStorage::DidGetRegistrationsForDocument( | 581 void ServiceWorkerStorage::DidGetRegistrationsForDocument( |
565 const GURL& document_url, | 582 const GURL& document_url, |
566 const FindRegistrationCallback& callback, | 583 const FindRegistrationCallback& callback, |
567 RegistrationList* registrations, | 584 RegistrationList* registrations, |
568 bool success) { | 585 ServiceWorkerDatabase::Status status) { |
569 DCHECK(registrations); | 586 DCHECK(registrations); |
570 if (!success) { | 587 if (status != ServiceWorkerDatabase::STATUS_OK) { |
| 588 // TODO(nhiroki): Handle database error (http://crbug.com/371675). |
571 callback.Run(SERVICE_WORKER_ERROR_FAILED, | 589 callback.Run(SERVICE_WORKER_ERROR_FAILED, |
572 scoped_refptr<ServiceWorkerRegistration>()); | 590 scoped_refptr<ServiceWorkerRegistration>()); |
573 return; | 591 return; |
574 } | 592 } |
575 | 593 |
576 // Find one with a pattern match. | 594 // Find one with a pattern match. |
577 for (RegistrationList::const_iterator it = registrations->begin(); | 595 for (RegistrationList::const_iterator it = registrations->begin(); |
578 it != registrations->end(); ++it) { | 596 it != registrations->end(); ++it) { |
579 // TODO(michaeln): if there are multiple matches the one with | 597 // TODO(michaeln): if there are multiple matches the one with |
580 // the longest scope should win. | 598 // the longest scope should win. |
(...skipping 20 matching lines...) Expand all Loading... |
601 } | 619 } |
602 | 620 |
603 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, | 621 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, |
604 scoped_refptr<ServiceWorkerRegistration>()); | 622 scoped_refptr<ServiceWorkerRegistration>()); |
605 } | 623 } |
606 | 624 |
607 void ServiceWorkerStorage::DidReadRegistrationForId( | 625 void ServiceWorkerStorage::DidReadRegistrationForId( |
608 const FindRegistrationCallback& callback, | 626 const FindRegistrationCallback& callback, |
609 const ServiceWorkerDatabase::RegistrationData& registration, | 627 const ServiceWorkerDatabase::RegistrationData& registration, |
610 const ResourceList& resources, | 628 const ResourceList& resources, |
611 ServiceWorkerStatusCode status) { | 629 ServiceWorkerDatabase::Status status) { |
612 if (status == SERVICE_WORKER_OK) { | 630 if (status == ServiceWorkerDatabase::STATUS_OK) { |
613 callback.Run(status, CreateRegistration(registration)); | 631 callback.Run(SERVICE_WORKER_OK, CreateRegistration(registration)); |
614 return; | 632 return; |
615 } | 633 } |
616 | 634 |
617 if (status == SERVICE_WORKER_ERROR_NOT_FOUND) { | 635 if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { |
618 // Look for somthing currently being installed. | 636 // Look for somthing currently being installed. |
619 scoped_refptr<ServiceWorkerRegistration> installing_registration = | 637 scoped_refptr<ServiceWorkerRegistration> installing_registration = |
620 FindInstallingRegistrationForId(registration.registration_id); | 638 FindInstallingRegistrationForId(registration.registration_id); |
621 if (installing_registration) { | 639 if (installing_registration) { |
622 callback.Run(SERVICE_WORKER_OK, installing_registration); | 640 callback.Run(SERVICE_WORKER_OK, installing_registration); |
623 return; | 641 return; |
624 } | 642 } |
625 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, | 643 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, |
626 scoped_refptr<ServiceWorkerRegistration>()); | 644 scoped_refptr<ServiceWorkerRegistration>()); |
627 return; | 645 return; |
628 } | 646 } |
629 | 647 |
630 callback.Run(status, scoped_refptr<ServiceWorkerRegistration>()); | 648 callback.Run(DatabaseStatusToStatusCode(status), |
| 649 scoped_refptr<ServiceWorkerRegistration>()); |
631 return; | 650 return; |
632 } | 651 } |
633 | 652 |
634 void ServiceWorkerStorage::DidGetAllRegistrations( | 653 void ServiceWorkerStorage::DidGetAllRegistrations( |
635 const GetAllRegistrationInfosCallback& callback, | 654 const GetAllRegistrationInfosCallback& callback, |
636 RegistrationList* registrations, | 655 RegistrationList* registrations, |
637 bool success) { | 656 ServiceWorkerDatabase::Status status) { |
638 DCHECK(registrations); | 657 DCHECK(registrations); |
639 if (!success) { | 658 if (status != ServiceWorkerDatabase::STATUS_OK) { |
| 659 // TODO(nhiroki): Handle database error (http://crbug.com/371675). |
640 callback.Run(std::vector<ServiceWorkerRegistrationInfo>()); | 660 callback.Run(std::vector<ServiceWorkerRegistrationInfo>()); |
641 return; | 661 return; |
642 } | 662 } |
643 | 663 |
644 // Add all stored registrations. | 664 // Add all stored registrations. |
645 std::set<int64> pushed_registrations; | 665 std::set<int64> pushed_registrations; |
646 std::vector<ServiceWorkerRegistrationInfo> infos; | 666 std::vector<ServiceWorkerRegistrationInfo> infos; |
647 for (RegistrationList::const_iterator it = registrations->begin(); | 667 for (RegistrationList::const_iterator it = registrations->begin(); |
648 it != registrations->end(); ++it) { | 668 it != registrations->end(); ++it) { |
649 DCHECK(pushed_registrations.insert(it->registration_id).second); | 669 DCHECK(pushed_registrations.insert(it->registration_id).second); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 return; | 705 return; |
686 } | 706 } |
687 registered_origins_.insert(origin); | 707 registered_origins_.insert(origin); |
688 callback.Run(SERVICE_WORKER_OK); | 708 callback.Run(SERVICE_WORKER_OK); |
689 } | 709 } |
690 | 710 |
691 void ServiceWorkerStorage::DidDeleteRegistration( | 711 void ServiceWorkerStorage::DidDeleteRegistration( |
692 const GURL& origin, | 712 const GURL& origin, |
693 const StatusCallback& callback, | 713 const StatusCallback& callback, |
694 bool origin_is_deletable, | 714 bool origin_is_deletable, |
695 ServiceWorkerStatusCode status) { | 715 ServiceWorkerDatabase::Status status) { |
696 if (origin_is_deletable) | 716 if (origin_is_deletable) |
697 registered_origins_.erase(origin); | 717 registered_origins_.erase(origin); |
698 callback.Run(status); | 718 callback.Run(DatabaseStatusToStatusCode(status)); |
699 } | 719 } |
700 | 720 |
701 scoped_refptr<ServiceWorkerRegistration> | 721 scoped_refptr<ServiceWorkerRegistration> |
702 ServiceWorkerStorage::CreateRegistration( | 722 ServiceWorkerStorage::CreateRegistration( |
703 const ServiceWorkerDatabase::RegistrationData& data) { | 723 const ServiceWorkerDatabase::RegistrationData& data) { |
704 scoped_refptr<ServiceWorkerRegistration> registration( | 724 scoped_refptr<ServiceWorkerRegistration> registration( |
705 new ServiceWorkerRegistration( | 725 new ServiceWorkerRegistration( |
706 data.scope, data.script, data.registration_id, context_)); | 726 data.scope, data.script, data.registration_id, context_)); |
707 | 727 |
708 scoped_refptr<ServiceWorkerVersion> version = | 728 scoped_refptr<ServiceWorkerVersion> version = |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 // TODO(michaeln): Store data on disk and do error checking. | 791 // TODO(michaeln): Store data on disk and do error checking. |
772 disk_cache_.reset(new ServiceWorkerDiskCache); | 792 disk_cache_.reset(new ServiceWorkerDiskCache); |
773 int rv = disk_cache_->InitWithMemBackend( | 793 int rv = disk_cache_->InitWithMemBackend( |
774 kMaxMemDiskCacheSize, | 794 kMaxMemDiskCacheSize, |
775 base::Bind(&EmptyCompletionCallback)); | 795 base::Bind(&EmptyCompletionCallback)); |
776 DCHECK_EQ(net::OK, rv); | 796 DCHECK_EQ(net::OK, rv); |
777 return disk_cache_.get(); | 797 return disk_cache_.get(); |
778 } | 798 } |
779 | 799 |
780 } // namespace content | 800 } // namespace content |
OLD | NEW |