| 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/child/service_worker/web_service_worker_provider_impl.h" | 5 #include "content/child/service_worker/web_service_worker_provider_impl.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "content/child/service_worker/service_worker_dispatcher.h" | 10 #include "content/child/service_worker/service_worker_dispatcher.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 // the single provider context across threads. (http://crbug.com/366538 | 46 // the single provider context across threads. (http://crbug.com/366538 |
| 47 // for more context) | 47 // for more context) |
| 48 GetDispatcher()->AddProviderClient(context_->provider_id(), client); | 48 GetDispatcher()->AddProviderClient(context_->provider_id(), client); |
| 49 | 49 |
| 50 if (!context_->controller()) | 50 if (!context_->controller()) |
| 51 return; | 51 return; |
| 52 scoped_refptr<WebServiceWorkerImpl> controller = | 52 scoped_refptr<WebServiceWorkerImpl> controller = |
| 53 GetDispatcher()->GetOrCreateServiceWorker( | 53 GetDispatcher()->GetOrCreateServiceWorker( |
| 54 ServiceWorkerHandleReference::Create(context_->controller()->info(), | 54 ServiceWorkerHandleReference::Create(context_->controller()->info(), |
| 55 thread_safe_sender_.get())); | 55 thread_safe_sender_.get())); |
| 56 |
| 57 // Sync the controllee's use counter with the service worker's one. |
| 58 for (uint32_t feature : context_->used_features()) |
| 59 client->countFeature(feature); |
| 56 client->setController(WebServiceWorkerImpl::CreateHandle(controller), | 60 client->setController(WebServiceWorkerImpl::CreateHandle(controller), |
| 57 false /* shouldNotifyControllerChange */); | 61 false /* shouldNotifyControllerChange */); |
| 58 } | 62 } |
| 59 | 63 |
| 60 void WebServiceWorkerProviderImpl::registerServiceWorker( | 64 void WebServiceWorkerProviderImpl::registerServiceWorker( |
| 61 const WebURL& pattern, | 65 const WebURL& pattern, |
| 62 const WebURL& script_url, | 66 const WebURL& script_url, |
| 63 std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) { | 67 std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) { |
| 64 GetDispatcher()->RegisterServiceWorker(context_->provider_id(), pattern, | 68 GetDispatcher()->RegisterServiceWorker(context_->provider_id(), pattern, |
| 65 script_url, std::move(callbacks)); | 69 script_url, std::move(callbacks)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 ServiceWorkerDispatcher::GetThreadSpecificInstance(); | 112 ServiceWorkerDispatcher::GetThreadSpecificInstance(); |
| 109 if (dispatcher) | 113 if (dispatcher) |
| 110 dispatcher->RemoveProviderClient(context_->provider_id()); | 114 dispatcher->RemoveProviderClient(context_->provider_id()); |
| 111 } | 115 } |
| 112 | 116 |
| 113 ServiceWorkerDispatcher* WebServiceWorkerProviderImpl::GetDispatcher() { | 117 ServiceWorkerDispatcher* WebServiceWorkerProviderImpl::GetDispatcher() { |
| 114 return ServiceWorkerDispatcher::GetThreadSpecificInstance(); | 118 return ServiceWorkerDispatcher::GetThreadSpecificInstance(); |
| 115 } | 119 } |
| 116 | 120 |
| 117 } // namespace content | 121 } // namespace content |
| OLD | NEW |