| 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/service_worker/service_worker_internals_ui.h" | 5 #include "content/browser/service_worker/service_worker_internals_ui.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 BrowserThread::PostTask( | 115 BrowserThread::PostTask( |
| 116 BrowserThread::IO, | 116 BrowserThread::IO, |
| 117 FROM_HERE, | 117 FROM_HERE, |
| 118 base::Bind(UnregisterWithScope, context, scope, callback)); | 118 base::Bind(UnregisterWithScope, context, scope, callback)); |
| 119 return; | 119 return; |
| 120 } | 120 } |
| 121 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 121 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 122 context->context()->UnregisterServiceWorker(scope, callback); | 122 context->context()->UnregisterServiceWorker(scope, callback); |
| 123 } | 123 } |
| 124 | 124 |
| 125 void WorkerStarted(const scoped_refptr<ServiceWorkerRegistration>& registration, | |
| 126 const ServiceWorkerInternalsUI::StatusCallback& callback, | |
| 127 ServiceWorkerStatusCode status) { | |
| 128 callback.Run(status); | |
| 129 } | |
| 130 | |
| 131 void StartActiveWorker( | |
| 132 const ServiceWorkerInternalsUI::StatusCallback& callback, | |
| 133 ServiceWorkerStatusCode status, | |
| 134 const scoped_refptr<ServiceWorkerRegistration>& registration) { | |
| 135 DCHECK_CURRENTLY_ON(BrowserThread::IO); | |
| 136 if (status == SERVICE_WORKER_OK) { | |
| 137 // Pass the reference of |registration| to WorkerStarted callback to prevent | |
| 138 // it from being deleted while starting the worker. If the refcount of | |
| 139 // |registration| is 1, it will be deleted after WorkerStarted is called. | |
| 140 registration->active_version()->StartWorker( | |
| 141 base::Bind(WorkerStarted, registration, callback)); | |
| 142 return; | |
| 143 } | |
| 144 callback.Run(SERVICE_WORKER_ERROR_NOT_FOUND); | |
| 145 } | |
| 146 | |
| 147 void FindRegistrationForPattern( | 125 void FindRegistrationForPattern( |
| 148 scoped_refptr<ServiceWorkerContextWrapper> context, | 126 scoped_refptr<ServiceWorkerContextWrapper> context, |
| 149 const GURL& scope, | 127 const GURL& scope, |
| 150 const ServiceWorkerStorage::FindRegistrationCallback callback) { | 128 const ServiceWorkerStorage::FindRegistrationCallback callback) { |
| 151 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 129 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
| 152 BrowserThread::PostTask( | 130 BrowserThread::PostTask( |
| 153 BrowserThread::IO, | 131 BrowserThread::IO, |
| 154 FROM_HERE, | 132 FROM_HERE, |
| 155 base::Bind(FindRegistrationForPattern, context, scope, callback)); | 133 base::Bind(FindRegistrationForPattern, context, scope, callback)); |
| 156 return; | 134 return; |
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 std::string scope_string; | 626 std::string scope_string; |
| 649 const DictionaryValue* cmd_args = NULL; | 627 const DictionaryValue* cmd_args = NULL; |
| 650 scoped_refptr<ServiceWorkerContextWrapper> context; | 628 scoped_refptr<ServiceWorkerContextWrapper> context; |
| 651 if (!args->GetInteger(0, &callback_id) || | 629 if (!args->GetInteger(0, &callback_id) || |
| 652 !args->GetDictionary(1, &cmd_args) || | 630 !args->GetDictionary(1, &cmd_args) || |
| 653 !cmd_args->GetInteger("partition_id", &partition_id) || | 631 !cmd_args->GetInteger("partition_id", &partition_id) || |
| 654 !GetServiceWorkerContext(partition_id, &context) || | 632 !GetServiceWorkerContext(partition_id, &context) || |
| 655 !cmd_args->GetString("scope", &scope_string)) { | 633 !cmd_args->GetString("scope", &scope_string)) { |
| 656 return; | 634 return; |
| 657 } | 635 } |
| 658 | |
| 659 base::Callback<void(ServiceWorkerStatusCode)> callback = | 636 base::Callback<void(ServiceWorkerStatusCode)> callback = |
| 660 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id); | 637 base::Bind(OperationCompleteCallback, AsWeakPtr(), callback_id); |
| 661 FindRegistrationForPattern( | 638 context->StartServiceWorker(GURL(scope_string), callback); |
| 662 context, GURL(scope_string), base::Bind(StartActiveWorker, callback)); | |
| 663 } | 639 } |
| 664 | 640 |
| 665 } // namespace content | 641 } // namespace content |
| OLD | NEW |