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 |