Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(904)

Side by Side Diff: content/browser/service_worker/service_worker_storage.cc

Issue 287843002: ServiceWorker: DB functions should return status code instead of boolean (2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 DCHECK(database); 118 DCHECK(database);
119 if (!database->DeleteRegistration(registration_id, origin)) { 119 if (!database->DeleteRegistration(registration_id, origin)) {
120 original_task_runner->PostTask( 120 original_task_runner->PostTask(
121 FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED)); 121 FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED));
122 return; 122 return;
123 } 123 }
124 124
125 // TODO(nhiroki): Add convenient method to ServiceWorkerDatabase to check the 125 // TODO(nhiroki): Add convenient method to ServiceWorkerDatabase to check the
126 // unique origin list. 126 // unique origin list.
127 std::vector<ServiceWorkerDatabase::RegistrationData> registrations; 127 std::vector<ServiceWorkerDatabase::RegistrationData> registrations;
128 if (!database->GetRegistrationsForOrigin(origin, &registrations)) { 128 ServiceWorkerStatusCode status =
129 database->GetRegistrationsForOrigin(origin, &registrations);
130 if (status != SERVICE_WORKER_OK) {
129 original_task_runner->PostTask( 131 original_task_runner->PostTask(
130 FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED)); 132 FROM_HERE, base::Bind(callback, false, status));
131 return; 133 return;
132 } 134 }
133 135
134 bool deletable = registrations.empty(); 136 bool deletable = registrations.empty();
135 original_task_runner->PostTask( 137 original_task_runner->PostTask(
136 FROM_HERE, base::Bind(callback, deletable, SERVICE_WORKER_OK)); 138 FROM_HERE, base::Bind(callback, deletable, SERVICE_WORKER_OK));
137 } 139 }
138 140
139 void UpdateToActiveStateInDB( 141 void UpdateToActiveStateInDB(
140 ServiceWorkerDatabase* database, 142 ServiceWorkerDatabase* database,
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 it != pending_tasks_.end(); ++it) { 523 it != pending_tasks_.end(); ++it) {
522 RunSoon(FROM_HERE, *it); 524 RunSoon(FROM_HERE, *it);
523 } 525 }
524 pending_tasks_.clear(); 526 pending_tasks_.clear();
525 } 527 }
526 528
527 void ServiceWorkerStorage::DidGetRegistrationsForPattern( 529 void ServiceWorkerStorage::DidGetRegistrationsForPattern(
528 const GURL& scope, 530 const GURL& scope,
529 const FindRegistrationCallback& callback, 531 const FindRegistrationCallback& callback,
530 RegistrationList* registrations, 532 RegistrationList* registrations,
531 bool success) { 533 ServiceWorkerStatusCode status) {
532 DCHECK(registrations); 534 DCHECK(registrations);
533 if (!success) { 535 if (status != SERVICE_WORKER_OK) {
536 // TODO(nhiroki): Handle database error (http://crbug.com/371675).
534 callback.Run(SERVICE_WORKER_ERROR_FAILED, 537 callback.Run(SERVICE_WORKER_ERROR_FAILED,
michaeln 2014/05/15 19:59:30 should |status| be passed in here?
nhiroki 2014/05/16 02:11:11 If we handle DB related errors like DB_CORRUPTED i
535 scoped_refptr<ServiceWorkerRegistration>()); 538 scoped_refptr<ServiceWorkerRegistration>());
536 return; 539 return;
537 } 540 }
538 541
539 // Find one with a matching scope. 542 // Find one with a matching scope.
540 for (RegistrationList::const_iterator it = registrations->begin(); 543 for (RegistrationList::const_iterator it = registrations->begin();
541 it != registrations->end(); ++it) { 544 it != registrations->end(); ++it) {
542 if (scope == it->scope) { 545 if (scope == it->scope) {
543 scoped_refptr<ServiceWorkerRegistration> registration = 546 scoped_refptr<ServiceWorkerRegistration> registration =
544 context_->GetLiveRegistration(it->registration_id); 547 context_->GetLiveRegistration(it->registration_id);
(...skipping 13 matching lines...) Expand all
558 } 561 }
559 562
560 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, 563 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND,
561 scoped_refptr<ServiceWorkerRegistration>()); 564 scoped_refptr<ServiceWorkerRegistration>());
562 } 565 }
563 566
564 void ServiceWorkerStorage::DidGetRegistrationsForDocument( 567 void ServiceWorkerStorage::DidGetRegistrationsForDocument(
565 const GURL& document_url, 568 const GURL& document_url,
566 const FindRegistrationCallback& callback, 569 const FindRegistrationCallback& callback,
567 RegistrationList* registrations, 570 RegistrationList* registrations,
568 bool success) { 571 ServiceWorkerStatusCode status) {
569 DCHECK(registrations); 572 DCHECK(registrations);
570 if (!success) { 573 if (status != SERVICE_WORKER_OK) {
574 // TODO(nhiroki): Handle database error (http://crbug.com/371675).
571 callback.Run(SERVICE_WORKER_ERROR_FAILED, 575 callback.Run(SERVICE_WORKER_ERROR_FAILED,
michaeln 2014/05/15 19:59:30 ditto |status|? dunno if it should just asking
572 scoped_refptr<ServiceWorkerRegistration>()); 576 scoped_refptr<ServiceWorkerRegistration>());
573 return; 577 return;
574 } 578 }
575 579
576 // Find one with a pattern match. 580 // Find one with a pattern match.
577 for (RegistrationList::const_iterator it = registrations->begin(); 581 for (RegistrationList::const_iterator it = registrations->begin();
578 it != registrations->end(); ++it) { 582 it != registrations->end(); ++it) {
579 // TODO(michaeln): if there are multiple matches the one with 583 // TODO(michaeln): if there are multiple matches the one with
580 // the longest scope should win. 584 // the longest scope should win.
581 if (ServiceWorkerUtils::ScopeMatches(it->scope, document_url)) { 585 if (ServiceWorkerUtils::ScopeMatches(it->scope, document_url)) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 return; 631 return;
628 } 632 }
629 633
630 callback.Run(status, scoped_refptr<ServiceWorkerRegistration>()); 634 callback.Run(status, scoped_refptr<ServiceWorkerRegistration>());
631 return; 635 return;
632 } 636 }
633 637
634 void ServiceWorkerStorage::DidGetAllRegistrations( 638 void ServiceWorkerStorage::DidGetAllRegistrations(
635 const GetAllRegistrationInfosCallback& callback, 639 const GetAllRegistrationInfosCallback& callback,
636 RegistrationList* registrations, 640 RegistrationList* registrations,
637 bool success) { 641 ServiceWorkerStatusCode status) {
638 DCHECK(registrations); 642 DCHECK(registrations);
639 if (!success) { 643 if (status != SERVICE_WORKER_OK) {
644 // TODO(nhiroki): Handle database error (http://crbug.com/371675).
640 callback.Run(std::vector<ServiceWorkerRegistrationInfo>()); 645 callback.Run(std::vector<ServiceWorkerRegistrationInfo>());
641 return; 646 return;
642 } 647 }
643 648
644 // Add all stored registrations. 649 // Add all stored registrations.
645 std::set<int64> pushed_registrations; 650 std::set<int64> pushed_registrations;
646 std::vector<ServiceWorkerRegistrationInfo> infos; 651 std::vector<ServiceWorkerRegistrationInfo> infos;
647 for (RegistrationList::const_iterator it = registrations->begin(); 652 for (RegistrationList::const_iterator it = registrations->begin();
648 it != registrations->end(); ++it) { 653 it != registrations->end(); ++it) {
649 DCHECK(pushed_registrations.insert(it->registration_id).second); 654 DCHECK(pushed_registrations.insert(it->registration_id).second);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 // TODO(michaeln): Store data on disk and do error checking. 775 // TODO(michaeln): Store data on disk and do error checking.
771 disk_cache_.reset(new ServiceWorkerDiskCache); 776 disk_cache_.reset(new ServiceWorkerDiskCache);
772 int rv = disk_cache_->InitWithMemBackend( 777 int rv = disk_cache_->InitWithMemBackend(
773 kMaxMemDiskCacheSize, 778 kMaxMemDiskCacheSize,
774 base::Bind(&EmptyCompletionCallback)); 779 base::Bind(&EmptyCompletionCallback));
775 DCHECK_EQ(net::OK, rv); 780 DCHECK_EQ(net::OK, rv);
776 return disk_cache_.get(); 781 return disk_cache_.get();
777 } 782 }
778 783
779 } // namespace content 784 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698