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 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DISPATCHER_HOST_H_ | 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DISPATCHER_HOST_H_ |
6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DISPATCHER_HOST_H_ | 6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DISPATCHER_HOST_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 class GURL; | 24 class GURL; |
25 struct EmbeddedWorkerHostMsg_ReportConsoleMessage_Params; | 25 struct EmbeddedWorkerHostMsg_ReportConsoleMessage_Params; |
26 | 26 |
27 namespace url { | 27 namespace url { |
28 class Origin; | 28 class Origin; |
29 } // namespace url | 29 } // namespace url |
30 | 30 |
31 namespace content { | 31 namespace content { |
32 | 32 |
33 class MessagePortMessageFilter; | 33 class MessagePort; |
34 class ResourceContext; | 34 class ResourceContext; |
35 class ServiceWorkerContextCore; | 35 class ServiceWorkerContextCore; |
36 class ServiceWorkerContextWrapper; | 36 class ServiceWorkerContextWrapper; |
37 class ServiceWorkerHandle; | 37 class ServiceWorkerHandle; |
38 class ServiceWorkerProviderHost; | 38 class ServiceWorkerProviderHost; |
39 class ServiceWorkerRegistration; | 39 class ServiceWorkerRegistration; |
40 class ServiceWorkerRegistrationHandle; | 40 class ServiceWorkerRegistrationHandle; |
41 class ServiceWorkerVersion; | 41 class ServiceWorkerVersion; |
42 struct ServiceWorkerObjectInfo; | 42 struct ServiceWorkerObjectInfo; |
43 struct ServiceWorkerRegistrationObjectInfo; | 43 struct ServiceWorkerRegistrationObjectInfo; |
44 struct ServiceWorkerVersionAttributes; | 44 struct ServiceWorkerVersionAttributes; |
45 | 45 |
46 class CONTENT_EXPORT ServiceWorkerDispatcherHost | 46 class CONTENT_EXPORT ServiceWorkerDispatcherHost |
47 : public mojom::ServiceWorkerDispatcherHost, | 47 : public mojom::ServiceWorkerDispatcherHost, |
48 public BrowserMessageFilter { | 48 public BrowserMessageFilter { |
49 public: | 49 public: |
50 ServiceWorkerDispatcherHost( | 50 ServiceWorkerDispatcherHost( |
51 int render_process_id, | 51 int render_process_id, |
52 MessagePortMessageFilter* message_port_message_filter, | |
53 ResourceContext* resource_context); | 52 ResourceContext* resource_context); |
54 | 53 |
55 void Init(ServiceWorkerContextWrapper* context_wrapper); | 54 void Init(ServiceWorkerContextWrapper* context_wrapper); |
56 | 55 |
57 // BrowserMessageFilter implementation | 56 // BrowserMessageFilter implementation |
58 void OnFilterAdded(IPC::Channel* channel) override; | 57 void OnFilterAdded(IPC::Channel* channel) override; |
59 void OnFilterRemoved() override; | 58 void OnFilterRemoved() override; |
60 void OnDestruct() const override; | 59 void OnDestruct() const override; |
61 bool OnMessageReceived(const IPC::Message& message) override; | 60 bool OnMessageReceived(const IPC::Message& message) override; |
62 | 61 |
(...skipping 11 matching lines...) Expand all Loading... |
74 | 73 |
75 ServiceWorkerHandle* FindServiceWorkerHandle(int provider_id, | 74 ServiceWorkerHandle* FindServiceWorkerHandle(int provider_id, |
76 int64_t version_id); | 75 int64_t version_id); |
77 | 76 |
78 // Returns the existing registration handle whose reference count is | 77 // Returns the existing registration handle whose reference count is |
79 // incremented or a newly created one if it doesn't exist. | 78 // incremented or a newly created one if it doesn't exist. |
80 ServiceWorkerRegistrationHandle* GetOrCreateRegistrationHandle( | 79 ServiceWorkerRegistrationHandle* GetOrCreateRegistrationHandle( |
81 base::WeakPtr<ServiceWorkerProviderHost> provider_host, | 80 base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
82 ServiceWorkerRegistration* registration); | 81 ServiceWorkerRegistration* registration); |
83 | 82 |
84 MessagePortMessageFilter* message_port_message_filter() { | |
85 return message_port_message_filter_; | |
86 } | |
87 | |
88 protected: | 83 protected: |
89 ~ServiceWorkerDispatcherHost() override; | 84 ~ServiceWorkerDispatcherHost() override; |
90 | 85 |
91 private: | 86 private: |
92 friend class BrowserThread; | 87 friend class BrowserThread; |
93 friend class base::DeleteHelper<ServiceWorkerDispatcherHost>; | 88 friend class base::DeleteHelper<ServiceWorkerDispatcherHost>; |
94 friend class ServiceWorkerDispatcherHostTest; | 89 friend class ServiceWorkerDispatcherHostTest; |
95 friend class TestingServiceWorkerDispatcherHost; | 90 friend class TestingServiceWorkerDispatcherHost; |
96 | 91 |
97 using StatusCallback = base::Callback<void(ServiceWorkerStatusCode status)>; | 92 using StatusCallback = base::Callback<void(ServiceWorkerStatusCode status)>; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 int line_number, | 156 int line_number, |
162 int column_number, | 157 int column_number, |
163 const GURL& source_url); | 158 const GURL& source_url); |
164 void OnReportConsoleMessage( | 159 void OnReportConsoleMessage( |
165 int embedded_worker_id, | 160 int embedded_worker_id, |
166 const EmbeddedWorkerHostMsg_ReportConsoleMessage_Params& params); | 161 const EmbeddedWorkerHostMsg_ReportConsoleMessage_Params& params); |
167 void OnIncrementServiceWorkerRefCount(int handle_id); | 162 void OnIncrementServiceWorkerRefCount(int handle_id); |
168 void OnDecrementServiceWorkerRefCount(int handle_id); | 163 void OnDecrementServiceWorkerRefCount(int handle_id); |
169 void OnIncrementRegistrationRefCount(int registration_handle_id); | 164 void OnIncrementRegistrationRefCount(int registration_handle_id); |
170 void OnDecrementRegistrationRefCount(int registration_handle_id); | 165 void OnDecrementRegistrationRefCount(int registration_handle_id); |
171 void OnPostMessageToWorker(int handle_id, | 166 void OnPostMessageToWorker( |
172 int provider_id, | 167 int handle_id, |
173 const base::string16& message, | 168 int provider_id, |
174 const url::Origin& source_origin, | 169 const base::string16& message, |
175 const std::vector<int>& sent_message_ports); | 170 const url::Origin& source_origin, |
| 171 const std::vector<MessagePort>& sent_message_ports); |
176 | 172 |
177 void OnTerminateWorker(int handle_id); | 173 void OnTerminateWorker(int handle_id); |
178 | 174 |
179 void DispatchExtendableMessageEvent( | 175 void DispatchExtendableMessageEvent( |
180 scoped_refptr<ServiceWorkerVersion> worker, | 176 scoped_refptr<ServiceWorkerVersion> worker, |
181 const base::string16& message, | 177 const base::string16& message, |
182 const url::Origin& source_origin, | 178 const url::Origin& source_origin, |
183 const std::vector<int>& sent_message_ports, | 179 const std::vector<MessagePort>& sent_message_ports, |
184 ServiceWorkerProviderHost* sender_provider_host, | 180 ServiceWorkerProviderHost* sender_provider_host, |
185 const StatusCallback& callback); | 181 const StatusCallback& callback); |
186 template <typename SourceInfo> | 182 template <typename SourceInfo> |
187 void DispatchExtendableMessageEventInternal( | 183 void DispatchExtendableMessageEventInternal( |
188 scoped_refptr<ServiceWorkerVersion> worker, | 184 scoped_refptr<ServiceWorkerVersion> worker, |
189 const base::string16& message, | 185 const base::string16& message, |
190 const url::Origin& source_origin, | 186 const url::Origin& source_origin, |
191 const std::vector<int>& sent_message_ports, | 187 const std::vector<MessagePort>& sent_message_ports, |
192 const base::Optional<base::TimeDelta>& timeout, | 188 const base::Optional<base::TimeDelta>& timeout, |
193 const StatusCallback& callback, | 189 const StatusCallback& callback, |
194 const SourceInfo& source_info); | 190 const SourceInfo& source_info); |
195 void DispatchExtendableMessageEventAfterStartWorker( | 191 void DispatchExtendableMessageEventAfterStartWorker( |
196 scoped_refptr<ServiceWorkerVersion> worker, | 192 scoped_refptr<ServiceWorkerVersion> worker, |
197 const base::string16& message, | 193 const base::string16& message, |
198 const url::Origin& source_origin, | 194 const url::Origin& source_origin, |
199 const std::vector<int>& sent_message_ports, | 195 const std::vector<MessagePort>& sent_message_ports, |
200 const ExtendableMessageEventSource& source, | 196 const ExtendableMessageEventSource& source, |
201 const base::Optional<base::TimeDelta>& timeout, | 197 const base::Optional<base::TimeDelta>& timeout, |
202 const StatusCallback& callback); | 198 const StatusCallback& callback); |
203 template <typename SourceInfo> | 199 template <typename SourceInfo> |
204 void DidFailToDispatchExtendableMessageEvent( | 200 void DidFailToDispatchExtendableMessageEvent( |
205 const std::vector<int>& sent_message_ports, | 201 const std::vector<MessagePort>& sent_message_ports, |
206 const SourceInfo& source_info, | 202 const SourceInfo& source_info, |
207 const StatusCallback& callback, | 203 const StatusCallback& callback, |
208 ServiceWorkerStatusCode status); | 204 ServiceWorkerStatusCode status); |
209 void ReleaseSourceInfo(const ServiceWorkerClientInfo& source_info); | 205 void ReleaseSourceInfo(const ServiceWorkerClientInfo& source_info); |
210 void ReleaseSourceInfo(const ServiceWorkerObjectInfo& source_info); | 206 void ReleaseSourceInfo(const ServiceWorkerObjectInfo& source_info); |
211 | 207 |
212 ServiceWorkerRegistrationHandle* FindRegistrationHandle( | 208 ServiceWorkerRegistrationHandle* FindRegistrationHandle( |
213 int provider_id, | 209 int provider_id, |
214 int64_t registration_handle_id); | 210 int64_t registration_handle_id); |
215 | 211 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 int registration_id, | 263 int registration_id, |
268 bool enable, | 264 bool enable, |
269 ServiceWorkerStatusCode status); | 265 ServiceWorkerStatusCode status); |
270 void DidUpdateNavigationPreloadHeader(int thread_id, | 266 void DidUpdateNavigationPreloadHeader(int thread_id, |
271 int request_id, | 267 int request_id, |
272 int registration_id, | 268 int registration_id, |
273 const std::string& value, | 269 const std::string& value, |
274 ServiceWorkerStatusCode status); | 270 ServiceWorkerStatusCode status); |
275 | 271 |
276 const int render_process_id_; | 272 const int render_process_id_; |
277 MessagePortMessageFilter* const message_port_message_filter_; | |
278 ResourceContext* resource_context_; | 273 ResourceContext* resource_context_; |
279 scoped_refptr<ServiceWorkerContextWrapper> context_wrapper_; | 274 scoped_refptr<ServiceWorkerContextWrapper> context_wrapper_; |
280 | 275 |
281 IDMap<std::unique_ptr<ServiceWorkerHandle>> handles_; | 276 IDMap<std::unique_ptr<ServiceWorkerHandle>> handles_; |
282 | 277 |
283 using RegistrationHandleMap = | 278 using RegistrationHandleMap = |
284 IDMap<std::unique_ptr<ServiceWorkerRegistrationHandle>>; | 279 IDMap<std::unique_ptr<ServiceWorkerRegistrationHandle>>; |
285 RegistrationHandleMap registration_handles_; | 280 RegistrationHandleMap registration_handles_; |
286 | 281 |
287 bool channel_ready_; // True after BrowserMessageFilter::sender_ != NULL. | 282 bool channel_ready_; // True after BrowserMessageFilter::sender_ != NULL. |
288 std::vector<std::unique_ptr<IPC::Message>> pending_messages_; | 283 std::vector<std::unique_ptr<IPC::Message>> pending_messages_; |
289 | 284 |
290 mojo::AssociatedBindingSet<mojom::ServiceWorkerDispatcherHost> bindings_; | 285 mojo::AssociatedBindingSet<mojom::ServiceWorkerDispatcherHost> bindings_; |
291 | 286 |
292 base::WeakPtrFactory<ServiceWorkerDispatcherHost> weak_factory_; | 287 base::WeakPtrFactory<ServiceWorkerDispatcherHost> weak_factory_; |
293 | 288 |
294 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDispatcherHost); | 289 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDispatcherHost); |
295 }; | 290 }; |
296 | 291 |
297 } // namespace content | 292 } // namespace content |
298 | 293 |
299 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DISPATCHER_HOST_H_ | 294 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DISPATCHER_HOST_H_ |
OLD | NEW |