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 <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 if (!provider_host->GetRegistrationForReady(base::Bind( | 669 if (!provider_host->GetRegistrationForReady(base::Bind( |
670 &ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete, | 670 &ServiceWorkerDispatcherHost::GetRegistrationForReadyComplete, |
671 this, thread_id, request_id, provider_host->AsWeakPtr()))) { | 671 this, thread_id, request_id, provider_host->AsWeakPtr()))) { |
672 bad_message::ReceivedBadMessage( | 672 bad_message::ReceivedBadMessage( |
673 this, bad_message::SWDH_GET_REGISTRATION_FOR_READY_ALREADY_IN_PROGRESS); | 673 this, bad_message::SWDH_GET_REGISTRATION_FOR_READY_ALREADY_IN_PROGRESS); |
674 } | 674 } |
675 } | 675 } |
676 | 676 |
677 void ServiceWorkerDispatcherHost::OnPostMessageToWorker( | 677 void ServiceWorkerDispatcherHost::OnPostMessageToWorker( |
678 int handle_id, | 678 int handle_id, |
| 679 int provider_id, |
679 const base::string16& message, | 680 const base::string16& message, |
| 681 const url::Origin& source_origin, |
680 const std::vector<TransferredMessagePort>& sent_message_ports) { | 682 const std::vector<TransferredMessagePort>& sent_message_ports) { |
681 TRACE_EVENT0("ServiceWorker", | 683 TRACE_EVENT0("ServiceWorker", |
682 "ServiceWorkerDispatcherHost::OnPostMessageToWorker"); | 684 "ServiceWorkerDispatcherHost::OnPostMessageToWorker"); |
683 if (!GetContext()) | 685 if (!GetContext()) |
684 return; | 686 return; |
685 | 687 |
686 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); | 688 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
687 if (!handle) { | 689 if (!handle) { |
688 bad_message::ReceivedBadMessage(this, bad_message::SWDH_POST_MESSAGE); | 690 bad_message::ReceivedBadMessage(this, bad_message::SWDH_POST_MESSAGE); |
689 return; | 691 return; |
690 } | 692 } |
691 | 693 |
| 694 ServiceWorkerProviderHost* sender_provider_host = |
| 695 GetContext()->GetProviderHost(render_process_id_, provider_id); |
| 696 if (!sender_provider_host) { |
| 697 bad_message::ReceivedBadMessage(this, bad_message::SWDH_POST_MESSAGE); |
| 698 return; |
| 699 } |
| 700 |
692 handle->version()->DispatchExtendableMessageEvent( | 701 handle->version()->DispatchExtendableMessageEvent( |
693 message, sent_message_ports, | 702 sender_provider_host, message, source_origin, sent_message_ports, |
694 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 703 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
695 } | 704 } |
696 | 705 |
697 void ServiceWorkerDispatcherHost::OnDeprecatedPostMessageToWorker( | 706 void ServiceWorkerDispatcherHost::OnDeprecatedPostMessageToWorker( |
698 int handle_id, | 707 int handle_id, |
699 const base::string16& message, | 708 const base::string16& message, |
700 const std::vector<TransferredMessagePort>& sent_message_ports) { | 709 const std::vector<TransferredMessagePort>& sent_message_ports) { |
701 TRACE_EVENT0("ServiceWorker", | 710 TRACE_EVENT0("ServiceWorker", |
702 "ServiceWorkerDispatcherHost::OnDeprecatedPostMessageToWorker"); | 711 "ServiceWorkerDispatcherHost::OnDeprecatedPostMessageToWorker"); |
703 if (!GetContext()) | 712 if (!GetContext()) |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 if (!handle) { | 1337 if (!handle) { |
1329 bad_message::ReceivedBadMessage(this, | 1338 bad_message::ReceivedBadMessage(this, |
1330 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1339 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
1331 return; | 1340 return; |
1332 } | 1341 } |
1333 handle->version()->StopWorker( | 1342 handle->version()->StopWorker( |
1334 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1343 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
1335 } | 1344 } |
1336 | 1345 |
1337 } // namespace content | 1346 } // namespace content |
OLD | NEW |