Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index 16fb50bccb0a67e027eab7d8582195a4d1e3e39c..f3b0b808981162c3c100e7924eaea588d1481f34 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -567,7 +567,9 @@ void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
void ServiceWorkerDispatcherHost::OnProviderCreated( |
int provider_id, |
int render_frame_id, |
- ServiceWorkerProviderType provider_type) { |
+ int shared_worker_route_id) { |
+ DCHECK(render_frame_id == MSG_ROUTING_NONE || |
+ shared_worker_route_id == MSG_ROUTING_NONE); |
// TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. |
tracked_objects::ScopedTracker tracking_profile( |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
@@ -576,18 +578,17 @@ void ServiceWorkerDispatcherHost::OnProviderCreated( |
"ServiceWorkerDispatcherHost::OnProviderCreated"); |
if (!GetContext()) |
return; |
- if (GetContext()->GetProviderHost(render_process_id_, provider_id)) { |
+ if (GetContext()->GetProviderHost(render_process_id_, provider_id) || |
+ (render_frame_id != MSG_ROUTING_NONE && |
+ shared_worker_route_id != MSG_ROUTING_NONE)) { |
bad_message::ReceivedBadMessage(this, |
bad_message::SWDH_PROVIDER_CREATED_NO_HOST); |
return; |
} |
scoped_ptr<ServiceWorkerProviderHost> provider_host( |
- new ServiceWorkerProviderHost(render_process_id_, |
- render_frame_id, |
- provider_id, |
- provider_type, |
- GetContext()->AsWeakPtr(), |
- this)); |
+ new ServiceWorkerProviderHost(render_process_id_, render_frame_id, |
+ shared_worker_route_id, provider_id, |
+ GetContext()->AsWeakPtr(), this)); |
GetContext()->AddProviderHost(provider_host.Pass()); |
} |