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

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

Issue 1129753002: [content/browser/service_worker] Using ThreadTaskRunnerHandle in lieu of MessageLoopProxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
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 "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/sequenced_task_runner.h" 10 #include "base/sequenced_task_runner.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/task_runner_util.h" 12 #include "base/task_runner_util.h"
13 #include "base/thread_task_runner_handle.h"
13 #include "base/trace_event/trace_event.h" 14 #include "base/trace_event/trace_event.h"
14 #include "content/browser/service_worker/service_worker_context_core.h" 15 #include "content/browser/service_worker/service_worker_context_core.h"
15 #include "content/browser/service_worker/service_worker_disk_cache.h" 16 #include "content/browser/service_worker/service_worker_disk_cache.h"
16 #include "content/browser/service_worker/service_worker_info.h" 17 #include "content/browser/service_worker/service_worker_info.h"
17 #include "content/browser/service_worker/service_worker_metrics.h" 18 #include "content/browser/service_worker/service_worker_metrics.h"
18 #include "content/browser/service_worker/service_worker_registration.h" 19 #include "content/browser/service_worker/service_worker_registration.h"
19 #include "content/browser/service_worker/service_worker_utils.h" 20 #include "content/browser/service_worker/service_worker_utils.h"
20 #include "content/browser/service_worker/service_worker_version.h" 21 #include "content/browser/service_worker/service_worker_version.h"
21 #include "content/common/service_worker/service_worker_types.h" 22 #include "content/common/service_worker/service_worker_types.h"
22 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
23 #include "net/base/completion_callback.h" 24 #include "net/base/completion_callback.h"
24 #include "net/base/io_buffer.h" 25 #include "net/base/io_buffer.h"
25 #include "net/base/net_errors.h" 26 #include "net/base/net_errors.h"
26 #include "storage/browser/quota/quota_manager_proxy.h" 27 #include "storage/browser/quota/quota_manager_proxy.h"
27 #include "storage/browser/quota/special_storage_policy.h" 28 #include "storage/browser/quota/special_storage_policy.h"
28 29
29 namespace content { 30 namespace content {
30 31
31 namespace { 32 namespace {
32 33
33 void RunSoon(const tracked_objects::Location& from_here, 34 void RunSoon(const tracked_objects::Location& from_here,
34 const base::Closure& closure) { 35 const base::Closure& closure) {
35 base::MessageLoop::current()->PostTask(from_here, closure); 36 base::ThreadTaskRunnerHandle::Get()->PostTask(from_here, closure);
36 } 37 }
37 38
38 void CompleteFindNow( 39 void CompleteFindNow(
39 const scoped_refptr<ServiceWorkerRegistration>& registration, 40 const scoped_refptr<ServiceWorkerRegistration>& registration,
40 ServiceWorkerStatusCode status, 41 ServiceWorkerStatusCode status,
41 const ServiceWorkerStorage::FindRegistrationCallback& callback) { 42 const ServiceWorkerStorage::FindRegistrationCallback& callback) {
42 if (registration && registration->is_deleted()) { 43 if (registration && registration->is_deleted()) {
43 // It's past the point of no return and no longer findable. 44 // It's past the point of no return and no longer findable.
44 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, nullptr); 45 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND, nullptr);
45 return; 46 return;
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 TRACE_EVENT_ASYNC_BEGIN1( 303 TRACE_EVENT_ASYNC_BEGIN1(
303 "ServiceWorker", 304 "ServiceWorker",
304 "ServiceWorkerStorage::FindRegistrationForDocument", 305 "ServiceWorkerStorage::FindRegistrationForDocument",
305 callback_id, 306 callback_id,
306 "URL", document_url.spec()); 307 "URL", document_url.spec());
307 database_task_manager_->GetTaskRunner()->PostTask( 308 database_task_manager_->GetTaskRunner()->PostTask(
308 FROM_HERE, 309 FROM_HERE,
309 base::Bind( 310 base::Bind(
310 &FindForDocumentInDB, 311 &FindForDocumentInDB,
311 database_.get(), 312 database_.get(),
312 base::MessageLoopProxy::current(), 313 base::ThreadTaskRunnerHandle::Get(),
313 document_url, 314 document_url,
314 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForDocument, 315 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForDocument,
315 weak_factory_.GetWeakPtr(), 316 weak_factory_.GetWeakPtr(),
316 document_url, 317 document_url,
317 callback, 318 callback,
318 callback_id))); 319 callback_id)));
319 } 320 }
320 321
321 void ServiceWorkerStorage::FindRegistrationForPattern( 322 void ServiceWorkerStorage::FindRegistrationForPattern(
322 const GURL& scope, 323 const GURL& scope,
(...skipping 21 matching lines...) Expand all
344 : SERVICE_WORKER_ERROR_NOT_FOUND, 345 : SERVICE_WORKER_ERROR_NOT_FOUND,
345 callback); 346 callback);
346 return; 347 return;
347 } 348 }
348 349
349 database_task_manager_->GetTaskRunner()->PostTask( 350 database_task_manager_->GetTaskRunner()->PostTask(
350 FROM_HERE, 351 FROM_HERE,
351 base::Bind( 352 base::Bind(
352 &FindForPatternInDB, 353 &FindForPatternInDB,
353 database_.get(), 354 database_.get(),
354 base::MessageLoopProxy::current(), 355 base::ThreadTaskRunnerHandle::Get(),
355 scope, 356 scope,
356 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForPattern, 357 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForPattern,
357 weak_factory_.GetWeakPtr(), scope, callback))); 358 weak_factory_.GetWeakPtr(),
359 scope,
360 callback)));
358 } 361 }
359 362
360 ServiceWorkerRegistration* ServiceWorkerStorage::GetUninstallingRegistration( 363 ServiceWorkerRegistration* ServiceWorkerStorage::GetUninstallingRegistration(
361 const GURL& scope) { 364 const GURL& scope) {
362 if (state_ != INITIALIZED || !context_) 365 if (state_ != INITIALIZED || !context_)
363 return NULL; 366 return NULL;
364 for (RegistrationRefsById::const_iterator it = 367 for (RegistrationRefsById::const_iterator it =
365 uninstalling_registrations_.begin(); 368 uninstalling_registrations_.begin();
366 it != uninstalling_registrations_.end(); 369 it != uninstalling_registrations_.end();
367 ++it) { 370 ++it) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 context_->GetLiveRegistration(registration_id); 408 context_->GetLiveRegistration(registration_id);
406 if (registration.get()) { 409 if (registration.get()) {
407 CompleteFindNow(registration, SERVICE_WORKER_OK, callback); 410 CompleteFindNow(registration, SERVICE_WORKER_OK, callback);
408 return; 411 return;
409 } 412 }
410 413
411 database_task_manager_->GetTaskRunner()->PostTask( 414 database_task_manager_->GetTaskRunner()->PostTask(
412 FROM_HERE, 415 FROM_HERE,
413 base::Bind(&FindForIdInDB, 416 base::Bind(&FindForIdInDB,
414 database_.get(), 417 database_.get(),
415 base::MessageLoopProxy::current(), 418 base::ThreadTaskRunnerHandle::Get(),
416 registration_id, origin, 419 registration_id,
420 origin,
417 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForId, 421 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForId,
418 weak_factory_.GetWeakPtr(), callback))); 422 weak_factory_.GetWeakPtr(),
423 callback)));
419 } 424 }
420 425
421 void ServiceWorkerStorage::FindRegistrationForIdOnly( 426 void ServiceWorkerStorage::FindRegistrationForIdOnly(
422 int64 registration_id, 427 int64 registration_id,
423 const FindRegistrationCallback& callback) { 428 const FindRegistrationCallback& callback) {
424 if (!LazyInitialize( 429 if (!LazyInitialize(
425 base::Bind(&ServiceWorkerStorage::FindRegistrationForIdOnly, 430 base::Bind(&ServiceWorkerStorage::FindRegistrationForIdOnly,
426 weak_factory_.GetWeakPtr(), registration_id, callback))) { 431 weak_factory_.GetWeakPtr(), registration_id, callback))) {
427 if (state_ != INITIALIZING || !context_) { 432 if (state_ != INITIALIZING || !context_) {
428 CompleteFindNow(nullptr, SERVICE_WORKER_ERROR_FAILED, callback); 433 CompleteFindNow(nullptr, SERVICE_WORKER_ERROR_FAILED, callback);
429 } 434 }
430 return; 435 return;
431 } 436 }
432 DCHECK_EQ(INITIALIZED, state_); 437 DCHECK_EQ(INITIALIZED, state_);
433 438
434 scoped_refptr<ServiceWorkerRegistration> registration = 439 scoped_refptr<ServiceWorkerRegistration> registration =
435 context_->GetLiveRegistration(registration_id); 440 context_->GetLiveRegistration(registration_id);
436 if (registration) { 441 if (registration) {
437 // Delegate to FindRegistrationForId to make sure the same subset of live 442 // Delegate to FindRegistrationForId to make sure the same subset of live
438 // registrations is returned. 443 // registrations is returned.
439 // TODO(mek): CompleteFindNow should really do all the required checks, so 444 // TODO(mek): CompleteFindNow should really do all the required checks, so
440 // calling that directly here should be enough. 445 // calling that directly here should be enough.
441 FindRegistrationForId(registration_id, registration->pattern().GetOrigin(), 446 FindRegistrationForId(registration_id, registration->pattern().GetOrigin(),
442 callback); 447 callback);
443 return; 448 return;
444 } 449 }
445 450
446 database_task_manager_->GetTaskRunner()->PostTask( 451 database_task_manager_->GetTaskRunner()->PostTask(
447 FROM_HERE, 452 FROM_HERE,
448 base::Bind(&FindForIdOnlyInDB, database_.get(), 453 base::Bind(&FindForIdOnlyInDB,
449 base::MessageLoopProxy::current(), registration_id, 454 database_.get(),
455 base::ThreadTaskRunnerHandle::Get(),
456 registration_id,
450 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForId, 457 base::Bind(&ServiceWorkerStorage::DidFindRegistrationForId,
451 weak_factory_.GetWeakPtr(), callback))); 458 weak_factory_.GetWeakPtr(),
459 callback)));
452 } 460 }
453 461
454 void ServiceWorkerStorage::GetRegistrationsForOrigin( 462 void ServiceWorkerStorage::GetRegistrationsForOrigin(
455 const GURL& origin, const GetRegistrationsInfosCallback& callback) { 463 const GURL& origin, const GetRegistrationsInfosCallback& callback) {
456 if (!LazyInitialize(base::Bind( 464 if (!LazyInitialize(base::Bind(
457 &ServiceWorkerStorage::GetRegistrationsForOrigin, 465 &ServiceWorkerStorage::GetRegistrationsForOrigin,
458 weak_factory_.GetWeakPtr(), origin, callback))) { 466 weak_factory_.GetWeakPtr(), origin, callback))) {
459 if (state_ != INITIALIZING || !context_) { 467 if (state_ != INITIALIZING || !context_) {
460 RunSoon(FROM_HERE, base::Bind( 468 RunSoon(FROM_HERE, base::Bind(
461 callback, std::vector<ServiceWorkerRegistrationInfo>())); 469 callback, std::vector<ServiceWorkerRegistrationInfo>()));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 } 545 }
538 data.resources_total_size_bytes = resources_total_size_bytes; 546 data.resources_total_size_bytes = resources_total_size_bytes;
539 547
540 if (!has_checked_for_stale_resources_) 548 if (!has_checked_for_stale_resources_)
541 DeleteStaleResources(); 549 DeleteStaleResources();
542 550
543 database_task_manager_->GetTaskRunner()->PostTask( 551 database_task_manager_->GetTaskRunner()->PostTask(
544 FROM_HERE, 552 FROM_HERE,
545 base::Bind(&WriteRegistrationInDB, 553 base::Bind(&WriteRegistrationInDB,
546 database_.get(), 554 database_.get(),
547 base::MessageLoopProxy::current(), 555 base::ThreadTaskRunnerHandle::Get(),
548 data, 556 data,
549 resources, 557 resources,
550 base::Bind(&ServiceWorkerStorage::DidStoreRegistration, 558 base::Bind(&ServiceWorkerStorage::DidStoreRegistration,
551 weak_factory_.GetWeakPtr(), 559 weak_factory_.GetWeakPtr(),
552 callback, 560 callback,
553 data))); 561 data)));
554 562
555 registration->set_is_deleted(false); 563 registration->set_is_deleted(false);
556 } 564 }
557 565
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 619
612 DidDeleteRegistrationParams params; 620 DidDeleteRegistrationParams params;
613 params.registration_id = registration_id; 621 params.registration_id = registration_id;
614 params.origin = origin; 622 params.origin = origin;
615 params.callback = callback; 623 params.callback = callback;
616 624
617 database_task_manager_->GetTaskRunner()->PostTask( 625 database_task_manager_->GetTaskRunner()->PostTask(
618 FROM_HERE, 626 FROM_HERE,
619 base::Bind(&DeleteRegistrationFromDB, 627 base::Bind(&DeleteRegistrationFromDB,
620 database_.get(), 628 database_.get(),
621 base::MessageLoopProxy::current(), 629 base::ThreadTaskRunnerHandle::Get(),
622 registration_id, origin, 630 registration_id,
631 origin,
623 base::Bind(&ServiceWorkerStorage::DidDeleteRegistration, 632 base::Bind(&ServiceWorkerStorage::DidDeleteRegistration,
624 weak_factory_.GetWeakPtr(), params))); 633 weak_factory_.GetWeakPtr(),
634 params)));
625 635
626 // The registration should no longer be findable. 636 // The registration should no longer be findable.
627 pending_deletions_.insert(registration_id); 637 pending_deletions_.insert(registration_id);
628 ServiceWorkerRegistration* registration = 638 ServiceWorkerRegistration* registration =
629 context_->GetLiveRegistration(registration_id); 639 context_->GetLiveRegistration(registration_id);
630 if (registration) 640 if (registration)
631 registration->set_is_deleted(true); 641 registration->set_is_deleted(true);
632 } 642 }
633 643
634 scoped_ptr<ServiceWorkerResponseReader> 644 scoped_ptr<ServiceWorkerResponseReader>
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 if (registration_id == kInvalidServiceWorkerRegistrationId || key.empty()) { 739 if (registration_id == kInvalidServiceWorkerRegistrationId || key.empty()) {
730 RunSoon(FROM_HERE, 740 RunSoon(FROM_HERE,
731 base::Bind(callback, std::string(), SERVICE_WORKER_ERROR_FAILED)); 741 base::Bind(callback, std::string(), SERVICE_WORKER_ERROR_FAILED));
732 return; 742 return;
733 } 743 }
734 744
735 database_task_manager_->GetTaskRunner()->PostTask( 745 database_task_manager_->GetTaskRunner()->PostTask(
736 FROM_HERE, 746 FROM_HERE,
737 base::Bind(&ServiceWorkerStorage::GetUserDataInDB, 747 base::Bind(&ServiceWorkerStorage::GetUserDataInDB,
738 database_.get(), 748 database_.get(),
739 base::MessageLoopProxy::current(), 749 base::ThreadTaskRunnerHandle::Get(),
740 registration_id, 750 registration_id,
741 key, 751 key,
742 base::Bind(&ServiceWorkerStorage::DidGetUserData, 752 base::Bind(&ServiceWorkerStorage::DidGetUserData,
743 weak_factory_.GetWeakPtr(), callback))); 753 weak_factory_.GetWeakPtr(),
754 callback)));
744 } 755 }
745 756
746 void ServiceWorkerStorage::ClearUserData( 757 void ServiceWorkerStorage::ClearUserData(
747 int64 registration_id, 758 int64 registration_id,
748 const std::string& key, 759 const std::string& key,
749 const StatusCallback& callback) { 760 const StatusCallback& callback) {
750 DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_; 761 DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_;
751 if (IsDisabled() || !context_) { 762 if (IsDisabled() || !context_) {
752 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_FAILED)); 763 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_FAILED));
753 return; 764 return;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 RunSoon(FROM_HERE, 800 RunSoon(FROM_HERE,
790 base::Bind(callback, std::vector<std::pair<int64, std::string>>(), 801 base::Bind(callback, std::vector<std::pair<int64, std::string>>(),
791 SERVICE_WORKER_ERROR_FAILED)); 802 SERVICE_WORKER_ERROR_FAILED));
792 return; 803 return;
793 } 804 }
794 805
795 database_task_manager_->GetTaskRunner()->PostTask( 806 database_task_manager_->GetTaskRunner()->PostTask(
796 FROM_HERE, 807 FROM_HERE,
797 base::Bind( 808 base::Bind(
798 &ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB, 809 &ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB,
799 database_.get(), base::MessageLoopProxy::current(), key, 810 database_.get(),
811 base::ThreadTaskRunnerHandle::Get(),
812 key,
800 base::Bind(&ServiceWorkerStorage::DidGetUserDataForAllRegistrations, 813 base::Bind(&ServiceWorkerStorage::DidGetUserDataForAllRegistrations,
801 weak_factory_.GetWeakPtr(), callback))); 814 weak_factory_.GetWeakPtr(),
815 callback)));
802 } 816 }
803 817
804 void ServiceWorkerStorage::DeleteAndStartOver(const StatusCallback& callback) { 818 void ServiceWorkerStorage::DeleteAndStartOver(const StatusCallback& callback) {
805 Disable(); 819 Disable();
806 820
807 // Delete the database on the database thread. 821 // Delete the database on the database thread.
808 PostTaskAndReplyWithResult( 822 PostTaskAndReplyWithResult(
809 database_task_manager_->GetTaskRunner(), 823 database_task_manager_->GetTaskRunner(),
810 FROM_HERE, 824 FROM_HERE,
811 base::Bind(&ServiceWorkerDatabase::DestroyDatabase, 825 base::Bind(&ServiceWorkerDatabase::DestroyDatabase,
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 case UNINITIALIZED: 959 case UNINITIALIZED:
946 pending_tasks_.push_back(callback); 960 pending_tasks_.push_back(callback);
947 // Fall-through. 961 // Fall-through.
948 } 962 }
949 963
950 state_ = INITIALIZING; 964 state_ = INITIALIZING;
951 database_task_manager_->GetTaskRunner()->PostTask( 965 database_task_manager_->GetTaskRunner()->PostTask(
952 FROM_HERE, 966 FROM_HERE,
953 base::Bind(&ReadInitialDataFromDB, 967 base::Bind(&ReadInitialDataFromDB,
954 database_.get(), 968 database_.get(),
955 base::MessageLoopProxy::current(), 969 base::ThreadTaskRunnerHandle::Get(),
956 base::Bind(&ServiceWorkerStorage::DidReadInitialData, 970 base::Bind(&ServiceWorkerStorage::DidReadInitialData,
957 weak_factory_.GetWeakPtr()))); 971 weak_factory_.GetWeakPtr())));
958 return false; 972 return false;
959 } 973 }
960 974
961 void ServiceWorkerStorage::DidReadInitialData( 975 void ServiceWorkerStorage::DidReadInitialData(
962 InitialData* data, 976 InitialData* data,
963 ServiceWorkerDatabase::Status status) { 977 ServiceWorkerDatabase::Status status) {
964 DCHECK(data); 978 DCHECK(data);
965 DCHECK_EQ(INITIALIZING, state_); 979 DCHECK_EQ(INITIALIZING, state_);
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
1436 ContinuePurgingResources(); 1450 ContinuePurgingResources();
1437 } 1451 }
1438 1452
1439 void ServiceWorkerStorage::DeleteStaleResources() { 1453 void ServiceWorkerStorage::DeleteStaleResources() {
1440 DCHECK(!has_checked_for_stale_resources_); 1454 DCHECK(!has_checked_for_stale_resources_);
1441 has_checked_for_stale_resources_ = true; 1455 has_checked_for_stale_resources_ = true;
1442 database_task_manager_->GetTaskRunner()->PostTask( 1456 database_task_manager_->GetTaskRunner()->PostTask(
1443 FROM_HERE, 1457 FROM_HERE,
1444 base::Bind(&ServiceWorkerStorage::CollectStaleResourcesFromDB, 1458 base::Bind(&ServiceWorkerStorage::CollectStaleResourcesFromDB,
1445 database_.get(), 1459 database_.get(),
1446 base::MessageLoopProxy::current(), 1460 base::ThreadTaskRunnerHandle::Get(),
1447 base::Bind(&ServiceWorkerStorage::DidCollectStaleResources, 1461 base::Bind(&ServiceWorkerStorage::DidCollectStaleResources,
1448 weak_factory_.GetWeakPtr()))); 1462 weak_factory_.GetWeakPtr())));
1449 } 1463 }
1450 1464
1451 void ServiceWorkerStorage::DidCollectStaleResources( 1465 void ServiceWorkerStorage::DidCollectStaleResources(
1452 const std::vector<int64>& stale_resource_ids, 1466 const std::vector<int64>& stale_resource_ids,
1453 ServiceWorkerDatabase::Status status) { 1467 ServiceWorkerDatabase::Status status) {
1454 if (status != ServiceWorkerDatabase::STATUS_OK) { 1468 if (status != ServiceWorkerDatabase::STATUS_OK) {
1455 DCHECK_NE(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, status); 1469 DCHECK_NE(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, status);
1456 ScheduleDeleteAndStartOver(); 1470 ScheduleDeleteAndStartOver();
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1793 callback.Run(SERVICE_WORKER_ERROR_FAILED); 1807 callback.Run(SERVICE_WORKER_ERROR_FAILED);
1794 return; 1808 return;
1795 } 1809 }
1796 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; 1810 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully.";
1797 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( 1811 ServiceWorkerMetrics::RecordDeleteAndStartOverResult(
1798 ServiceWorkerMetrics::DELETE_OK); 1812 ServiceWorkerMetrics::DELETE_OK);
1799 callback.Run(SERVICE_WORKER_OK); 1813 callback.Run(SERVICE_WORKER_OK);
1800 } 1814 }
1801 1815
1802 } // namespace content 1816 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698