| 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/service_worker_dispatcher.h" | 5 #include "content/child/service_worker/service_worker_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "base/threading/thread_local.h" | 8 #include "base/threading/thread_local.h" |
| 9 #include "content/child/service_worker/web_service_worker_impl.h" | 9 #include "content/child/service_worker/web_service_worker_impl.h" |
| 10 #include "content/child/thread_safe_sender.h" | 10 #include "content/child/thread_safe_sender.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 DCHECK(handled) << "Unhandled message:" << msg.type(); | 55 DCHECK(handled) << "Unhandled message:" << msg.type(); |
| 56 } | 56 } |
| 57 | 57 |
| 58 bool ServiceWorkerDispatcher::Send(IPC::Message* msg) { | 58 bool ServiceWorkerDispatcher::Send(IPC::Message* msg) { |
| 59 return thread_safe_sender_->Send(msg); | 59 return thread_safe_sender_->Send(msg); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void ServiceWorkerDispatcher::RegisterServiceWorker( | 62 void ServiceWorkerDispatcher::RegisterServiceWorker( |
| 63 const GURL& pattern, | 63 const GURL& pattern, |
| 64 const GURL& script_url, | 64 const GURL& script_url, |
| 65 int provider_id, |
| 65 WebServiceWorkerProvider::WebServiceWorkerCallbacks* callbacks) { | 66 WebServiceWorkerProvider::WebServiceWorkerCallbacks* callbacks) { |
| 66 DCHECK(callbacks); | 67 DCHECK(callbacks); |
| 67 int request_id = pending_callbacks_.Add(callbacks); | 68 int request_id = pending_callbacks_.Add(callbacks); |
| 68 thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker( | 69 thread_safe_sender_->Send(new ServiceWorkerHostMsg_RegisterServiceWorker( |
| 69 CurrentWorkerId(), request_id, pattern, script_url)); | 70 CurrentWorkerId(), request_id, provider_id, pattern, script_url)); |
| 70 } | 71 } |
| 71 | 72 |
| 72 void ServiceWorkerDispatcher::UnregisterServiceWorker( | 73 void ServiceWorkerDispatcher::UnregisterServiceWorker( |
| 73 const GURL& pattern, | 74 const GURL& pattern, |
| 75 int provider_id, |
| 74 WebServiceWorkerProvider::WebServiceWorkerCallbacks* callbacks) { | 76 WebServiceWorkerProvider::WebServiceWorkerCallbacks* callbacks) { |
| 75 DCHECK(callbacks); | 77 DCHECK(callbacks); |
| 76 int request_id = pending_callbacks_.Add(callbacks); | 78 int request_id = pending_callbacks_.Add(callbacks); |
| 77 thread_safe_sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker( | 79 thread_safe_sender_->Send(new ServiceWorkerHostMsg_UnregisterServiceWorker( |
| 78 CurrentWorkerId(), request_id, pattern)); | 80 CurrentWorkerId(), request_id, provider_id, pattern)); |
| 79 } | 81 } |
| 80 | 82 |
| 81 ServiceWorkerDispatcher* ServiceWorkerDispatcher::ThreadSpecificInstance( | 83 ServiceWorkerDispatcher* ServiceWorkerDispatcher::ThreadSpecificInstance( |
| 82 ThreadSafeSender* thread_safe_sender) { | 84 ThreadSafeSender* thread_safe_sender) { |
| 83 if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) { | 85 if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) { |
| 84 NOTREACHED() << "Re-instantiating TLS ServiceWorkerDispatcher."; | 86 NOTREACHED() << "Re-instantiating TLS ServiceWorkerDispatcher."; |
| 85 g_dispatcher_tls.Pointer()->Set(NULL); | 87 g_dispatcher_tls.Pointer()->Set(NULL); |
| 86 } | 88 } |
| 87 if (g_dispatcher_tls.Pointer()->Get()) | 89 if (g_dispatcher_tls.Pointer()->Get()) |
| 88 return g_dispatcher_tls.Pointer()->Get(); | 90 return g_dispatcher_tls.Pointer()->Get(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 | 143 |
| 142 scoped_ptr<WebServiceWorkerError> error( | 144 scoped_ptr<WebServiceWorkerError> error( |
| 143 new WebServiceWorkerError(error_type, message)); | 145 new WebServiceWorkerError(error_type, message)); |
| 144 callbacks->onError(error.release()); | 146 callbacks->onError(error.release()); |
| 145 pending_callbacks_.Remove(request_id); | 147 pending_callbacks_.Remove(request_id); |
| 146 } | 148 } |
| 147 | 149 |
| 148 void ServiceWorkerDispatcher::OnWorkerRunLoopStopped() { delete this; } | 150 void ServiceWorkerDispatcher::OnWorkerRunLoopStopped() { delete this; } |
| 149 | 151 |
| 150 } // namespace content | 152 } // namespace content |
| OLD | NEW |