Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(507)

Side by Side Diff: content/browser/service_worker/service_worker_dispatcher_host.cc

Issue 261533003: Populate .current when navigator.serviceWorker is accessed (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/browser/service_worker/service_worker_dispatcher_host.h" 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "content/browser/message_port_message_filter.h" 9 #include "content/browser/message_port_message_filter.h"
10 #include "content/browser/message_port_service.h" 10 #include "content/browser/message_port_service.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 IPC_BEGIN_MESSAGE_MAP_EX( 91 IPC_BEGIN_MESSAGE_MAP_EX(
92 ServiceWorkerDispatcherHost, message, *message_was_ok) 92 ServiceWorkerDispatcherHost, message, *message_was_ok)
93 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RegisterServiceWorker, 93 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RegisterServiceWorker,
94 OnRegisterServiceWorker) 94 OnRegisterServiceWorker)
95 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, 95 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker,
96 OnUnregisterServiceWorker) 96 OnUnregisterServiceWorker)
97 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated, 97 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderCreated,
98 OnProviderCreated) 98 OnProviderCreated)
99 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed, 99 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ProviderDestroyed,
100 OnProviderDestroyed) 100 OnProviderDestroyed)
101 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_AddScriptClient,
102 OnAddScriptClient)
103 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RemoveScriptClient,
104 OnRemoveScriptClient)
105 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId, 101 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetVersionId,
106 OnSetHostedVersionId) 102 OnSetHostedVersionId)
107 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessage, 103 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessage,
108 OnPostMessage) 104 OnPostMessage)
109 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded, 105 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded,
110 OnWorkerScriptLoaded) 106 OnWorkerScriptLoaded)
111 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed, 107 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed,
112 OnWorkerScriptLoadFailed) 108 OnWorkerScriptLoadFailed)
113 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, 109 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted,
114 OnWorkerStarted) 110 OnWorkerStarted)
115 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, 111 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped,
116 OnWorkerStopped) 112 OnWorkerStopped)
117 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException, 113 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException,
118 OnReportException) 114 OnReportException)
119 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportConsoleMessage, 115 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportConsoleMessage,
120 OnReportConsoleMessage) 116 OnReportConsoleMessage)
121 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ServiceWorkerObjectDestroyed, 117 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_IncrementServiceWorkerRefCount,
122 OnServiceWorkerObjectDestroyed) 118 OnIncrementServiceWorkerRefCount)
119 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementServiceWorkerRefCount,
120 OnDecrementServiceWorkerRefCount)
123 IPC_MESSAGE_UNHANDLED(handled = false) 121 IPC_MESSAGE_UNHANDLED(handled = false)
124 IPC_END_MESSAGE_MAP() 122 IPC_END_MESSAGE_MAP()
125 123
126 if (!handled && context_) { 124 if (!handled && context_) {
127 handled = context_->embedded_worker_registry()->OnMessageReceived(message); 125 handled = context_->embedded_worker_registry()->OnMessageReceived(message);
128 if (!handled) 126 if (!handled)
129 BadMessageReceived(); 127 BadMessageReceived();
130 } 128 }
131 129
132 return handled; 130 return handled;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { 267 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) {
270 if (!context_) 268 if (!context_)
271 return; 269 return;
272 if (!context_->GetProviderHost(render_process_id_, provider_id)) { 270 if (!context_->GetProviderHost(render_process_id_, provider_id)) {
273 BadMessageReceived(); 271 BadMessageReceived();
274 return; 272 return;
275 } 273 }
276 context_->RemoveProviderHost(render_process_id_, provider_id); 274 context_->RemoveProviderHost(render_process_id_, provider_id);
277 } 275 }
278 276
279 void ServiceWorkerDispatcherHost::OnAddScriptClient(
280 int thread_id, int provider_id) {
281 if (!context_)
282 return;
283 ServiceWorkerProviderHost* provider_host =
284 context_->GetProviderHost(render_process_id_, provider_id);
285 if (!provider_host)
286 return;
287 provider_host->AddScriptClient(thread_id);
288 }
289
290 void ServiceWorkerDispatcherHost::OnRemoveScriptClient(
291 int thread_id, int provider_id) {
292 if (!context_)
293 return;
294 ServiceWorkerProviderHost* provider_host =
295 context_->GetProviderHost(render_process_id_, provider_id);
296 if (!provider_host)
297 return;
298 provider_host->RemoveScriptClient(thread_id);
299 }
300
301 void ServiceWorkerDispatcherHost::OnSetHostedVersionId( 277 void ServiceWorkerDispatcherHost::OnSetHostedVersionId(
302 int provider_id, int64 version_id) { 278 int provider_id, int64 version_id) {
303 if (!context_) 279 if (!context_)
304 return; 280 return;
305 ServiceWorkerProviderHost* provider_host = 281 ServiceWorkerProviderHost* provider_host =
306 context_->GetProviderHost(render_process_id_, provider_id); 282 context_->GetProviderHost(render_process_id_, provider_id);
307 if (!provider_host || !provider_host->SetHostedVersionId(version_id)) { 283 if (!provider_host || !provider_host->SetHostedVersionId(version_id)) {
308 BadMessageReceived(); 284 BadMessageReceived();
309 return; 285 return;
310 } 286 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 return; 362 return;
387 context_->embedded_worker_registry()->OnReportConsoleMessage( 363 context_->embedded_worker_registry()->OnReportConsoleMessage(
388 embedded_worker_id, 364 embedded_worker_id,
389 params.source_identifier, 365 params.source_identifier,
390 params.message_level, 366 params.message_level,
391 params.message, 367 params.message,
392 params.line_number, 368 params.line_number,
393 params.source_url); 369 params.source_url);
394 } 370 }
395 371
396 void ServiceWorkerDispatcherHost::OnServiceWorkerObjectDestroyed( 372 void ServiceWorkerDispatcherHost::OnIncrementServiceWorkerRefCount(
397 int handle_id) { 373 int handle_id) {
398 handles_.Remove(handle_id); 374 ServiceWorkerHandle* handle = handles_.Lookup(handle_id);
375 if (!handle) {
376 BadMessageReceived();
377 return;
378 }
379 handle->IncrementRefCount();
380 }
381
382 void ServiceWorkerDispatcherHost::OnDecrementServiceWorkerRefCount(
383 int handle_id) {
384 ServiceWorkerHandle* handle = handles_.Lookup(handle_id);
385 if (!handle) {
386 BadMessageReceived();
387 return;
388 }
389 handle->DecrementRefCount();
390 if (handle->HasNoRefCount())
391 handles_.Remove(handle_id);
399 } 392 }
400 393
401 void ServiceWorkerDispatcherHost::UnregistrationComplete( 394 void ServiceWorkerDispatcherHost::UnregistrationComplete(
402 int thread_id, 395 int thread_id,
403 int request_id, 396 int request_id,
404 ServiceWorkerStatusCode status) { 397 ServiceWorkerStatusCode status) {
405 if (status != SERVICE_WORKER_OK) { 398 if (status != SERVICE_WORKER_OK) {
406 SendRegistrationError(thread_id, request_id, status); 399 SendRegistrationError(thread_id, request_id, status);
407 return; 400 return;
408 } 401 }
409 402
410 Send(new ServiceWorkerMsg_ServiceWorkerUnregistered(thread_id, request_id)); 403 Send(new ServiceWorkerMsg_ServiceWorkerUnregistered(thread_id, request_id));
411 } 404 }
412 405
413 void ServiceWorkerDispatcherHost::SendRegistrationError( 406 void ServiceWorkerDispatcherHost::SendRegistrationError(
414 int thread_id, 407 int thread_id,
415 int request_id, 408 int request_id,
416 ServiceWorkerStatusCode status) { 409 ServiceWorkerStatusCode status) {
417 base::string16 error_message; 410 base::string16 error_message;
418 blink::WebServiceWorkerError::ErrorType error_type; 411 blink::WebServiceWorkerError::ErrorType error_type;
419 GetServiceWorkerRegistrationStatusResponse( 412 GetServiceWorkerRegistrationStatusResponse(
420 status, &error_type, &error_message); 413 status, &error_type, &error_message);
421 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError( 414 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError(
422 thread_id, request_id, error_type, error_message)); 415 thread_id, request_id, error_type, error_message));
423 } 416 }
424 417
425 } // namespace content 418 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698