| 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 |