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/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/profiler/scoped_tracker.h" | 8 #include "base/profiler/scoped_tracker.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
560 } | 560 } |
561 | 561 |
562 handle->version()->DispatchMessageEvent( | 562 handle->version()->DispatchMessageEvent( |
563 message, sent_message_ports, | 563 message, sent_message_ports, |
564 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 564 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
565 } | 565 } |
566 | 566 |
567 void ServiceWorkerDispatcherHost::OnProviderCreated( | 567 void ServiceWorkerDispatcherHost::OnProviderCreated( |
568 int provider_id, | 568 int provider_id, |
569 int render_frame_id, | 569 int render_frame_id, |
570 ServiceWorkerProviderType provider_type) { | 570 int shared_worker_route_id) { |
| 571 DCHECK(render_frame_id == MSG_ROUTING_NONE || |
| 572 shared_worker_route_id == MSG_ROUTING_NONE); |
571 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. | 573 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. |
572 tracked_objects::ScopedTracker tracking_profile( | 574 tracked_objects::ScopedTracker tracking_profile( |
573 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 575 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
574 "477117 ServiceWorkerDispatcherHost::OnProviderCreated")); | 576 "477117 ServiceWorkerDispatcherHost::OnProviderCreated")); |
575 TRACE_EVENT0("ServiceWorker", | 577 TRACE_EVENT0("ServiceWorker", |
576 "ServiceWorkerDispatcherHost::OnProviderCreated"); | 578 "ServiceWorkerDispatcherHost::OnProviderCreated"); |
577 if (!GetContext()) | 579 if (!GetContext()) |
578 return; | 580 return; |
579 if (GetContext()->GetProviderHost(render_process_id_, provider_id)) { | 581 if (GetContext()->GetProviderHost(render_process_id_, provider_id) || |
| 582 (render_frame_id != MSG_ROUTING_NONE && |
| 583 shared_worker_route_id != MSG_ROUTING_NONE)) { |
580 bad_message::ReceivedBadMessage(this, | 584 bad_message::ReceivedBadMessage(this, |
581 bad_message::SWDH_PROVIDER_CREATED_NO_HOST); | 585 bad_message::SWDH_PROVIDER_CREATED_NO_HOST); |
582 return; | 586 return; |
583 } | 587 } |
584 scoped_ptr<ServiceWorkerProviderHost> provider_host( | 588 scoped_ptr<ServiceWorkerProviderHost> provider_host( |
585 new ServiceWorkerProviderHost(render_process_id_, | 589 new ServiceWorkerProviderHost(render_process_id_, render_frame_id, |
586 render_frame_id, | 590 shared_worker_route_id, provider_id, |
587 provider_id, | 591 GetContext()->AsWeakPtr(), this)); |
588 provider_type, | |
589 GetContext()->AsWeakPtr(), | |
590 this)); | |
591 GetContext()->AddProviderHost(provider_host.Pass()); | 592 GetContext()->AddProviderHost(provider_host.Pass()); |
592 } | 593 } |
593 | 594 |
594 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { | 595 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { |
595 TRACE_EVENT0("ServiceWorker", | 596 TRACE_EVENT0("ServiceWorker", |
596 "ServiceWorkerDispatcherHost::OnProviderDestroyed"); | 597 "ServiceWorkerDispatcherHost::OnProviderDestroyed"); |
597 if (!GetContext()) | 598 if (!GetContext()) |
598 return; | 599 return; |
599 if (!GetContext()->GetProviderHost(render_process_id_, provider_id)) { | 600 if (!GetContext()->GetProviderHost(render_process_id_, provider_id)) { |
600 bad_message::ReceivedBadMessage( | 601 bad_message::ReceivedBadMessage( |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1048 if (!handle) { | 1049 if (!handle) { |
1049 bad_message::ReceivedBadMessage(this, | 1050 bad_message::ReceivedBadMessage(this, |
1050 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1051 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
1051 return; | 1052 return; |
1052 } | 1053 } |
1053 handle->version()->StopWorker( | 1054 handle->version()->StopWorker( |
1054 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1055 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
1055 } | 1056 } |
1056 | 1057 |
1057 } // namespace content | 1058 } // namespace content |
OLD | NEW |