| Index: content/child/service_worker/web_service_worker_impl.cc
|
| diff --git a/content/child/service_worker/web_service_worker_impl.cc b/content/child/service_worker/web_service_worker_impl.cc
|
| index f926872c062ae5ec708f077868b7cf3300144c15..4b5970ab2a55b83ceff70f42ad6ea2d9af3dc773 100644
|
| --- a/content/child/service_worker/web_service_worker_impl.cc
|
| +++ b/content/child/service_worker/web_service_worker_impl.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/macros.h"
|
| #include "content/child/service_worker/service_worker_dispatcher.h"
|
| #include "content/child/service_worker/service_worker_handle_reference.h"
|
| +#include "content/child/service_worker/web_service_worker_provider_impl.h"
|
| #include "content/child/thread_safe_sender.h"
|
| #include "content/child/webmessageportchannel_impl.h"
|
| #include "content/common/service_worker/service_worker_messages.h"
|
| @@ -43,11 +44,12 @@ class HandleImpl : public blink::WebServiceWorker::Handle {
|
| void SendPostMessageToWorkerOnMainThread(
|
| ThreadSafeSender* thread_safe_sender,
|
| int handle_id,
|
| + int provider_id,
|
| const base::string16& message,
|
| scoped_ptr<WebMessagePortChannelArray> channels) {
|
| if (WebRuntimeFeatures::isServiceWorkerExtendableMessageEventEnabled()) {
|
| thread_safe_sender->Send(new ServiceWorkerHostMsg_PostMessageToWorker(
|
| - handle_id, message,
|
| + handle_id, provider_id, message,
|
| WebMessagePortChannelImpl::ExtractMessagePortIDs(std::move(channels))));
|
| } else {
|
| thread_safe_sender->Send(
|
| @@ -100,8 +102,12 @@ blink::WebServiceWorkerState WebServiceWorkerImpl::state() const {
|
| return state_;
|
| }
|
|
|
| -void WebServiceWorkerImpl::postMessage(const WebString& message,
|
| - WebMessagePortChannelArray* channels) {
|
| +void WebServiceWorkerImpl::postMessage(
|
| + blink::WebServiceWorkerProvider* provider,
|
| + const WebString& message,
|
| + WebMessagePortChannelArray* channels) {
|
| + WebServiceWorkerProviderImpl* provider_impl =
|
| + static_cast<WebServiceWorkerProviderImpl*>(provider);
|
| ServiceWorkerDispatcher* dispatcher =
|
| ServiceWorkerDispatcher::GetThreadSpecificInstance();
|
| DCHECK(dispatcher);
|
| @@ -111,12 +117,13 @@ void WebServiceWorkerImpl::postMessage(const WebString& message,
|
| // (with thread hopping), so we need to do the same thread hopping here not
|
| // to overtake those messages.
|
| dispatcher->main_thread_task_runner()->PostTask(
|
| - FROM_HERE, base::Bind(&SendPostMessageToWorkerOnMainThread,
|
| - thread_safe_sender_, handle_ref_->handle_id(),
|
| - // We cast WebString to string16 before crossing
|
| - // threads for thread-safety.
|
| - static_cast<base::string16>(message),
|
| - base::Passed(make_scoped_ptr(channels))));
|
| + FROM_HERE,
|
| + base::Bind(&SendPostMessageToWorkerOnMainThread, thread_safe_sender_,
|
| + handle_ref_->handle_id(), provider_impl->provider_id(),
|
| + // We cast WebString to string16 before crossing
|
| + // threads for thread-safety.
|
| + static_cast<base::string16>(message),
|
| + base::Passed(make_scoped_ptr(channels))));
|
| }
|
|
|
| void WebServiceWorkerImpl::terminate() {
|
|
|