| Index: Source/core/workers/WorkerMessagingProxy.cpp
|
| diff --git a/Source/core/workers/WorkerMessagingProxy.cpp b/Source/core/workers/WorkerMessagingProxy.cpp
|
| index 071d3a20ba8940b8593ee0bf2b2c051129d4cc48..4a1687a96875c78d88fce71c8846eddfa8c67493 100644
|
| --- a/Source/core/workers/WorkerMessagingProxy.cpp
|
| +++ b/Source/core/workers/WorkerMessagingProxy.cpp
|
| @@ -43,7 +43,6 @@
|
| #include "core/inspector/WorkerDebuggerAgent.h"
|
| #include "core/loader/DocumentLoadTiming.h"
|
| #include "core/loader/DocumentLoader.h"
|
| -#include "core/workers/DedicatedWorkerGlobalScope.h"
|
| #include "core/workers/DedicatedWorkerThread.h"
|
| #include "core/workers/Worker.h"
|
| #include "core/workers/WorkerClients.h"
|
| @@ -58,30 +57,32 @@ namespace blink {
|
|
|
| class MessageWorkerGlobalScopeTask : public ExecutionContextTask {
|
| public:
|
| - static PassOwnPtr<MessageWorkerGlobalScopeTask> create(PassRefPtr<SerializedScriptValue> message, PassOwnPtr<MessagePortChannelArray> channels)
|
| + static PassOwnPtr<MessageWorkerGlobalScopeTask> create(PassRefPtr<SerializedScriptValue> message, PassOwnPtr<MessagePortChannelArray> channels, WorkerObjectProxy& workerObjectProxy)
|
| {
|
| - return adoptPtr(new MessageWorkerGlobalScopeTask(message, channels));
|
| + return adoptPtr(new MessageWorkerGlobalScopeTask(message, channels, workerObjectProxy));
|
| }
|
|
|
| private:
|
| - MessageWorkerGlobalScopeTask(PassRefPtr<SerializedScriptValue> message, PassOwnPtr<MessagePortChannelArray> channels)
|
| + MessageWorkerGlobalScopeTask(PassRefPtr<SerializedScriptValue> message, PassOwnPtr<MessagePortChannelArray> channels, WorkerObjectProxy& workerObjectProxy)
|
| : m_message(message)
|
| , m_channels(channels)
|
| + , m_workerObjectProxy(workerObjectProxy)
|
| {
|
| }
|
|
|
| virtual void performTask(ExecutionContext* scriptContext)
|
| {
|
| ASSERT_WITH_SECURITY_IMPLICATION(scriptContext->isWorkerGlobalScope());
|
| - DedicatedWorkerGlobalScope* context = static_cast<DedicatedWorkerGlobalScope*>(scriptContext);
|
| OwnPtrWillBeRawPtr<MessagePortArray> ports = MessagePort::entanglePorts(*scriptContext, m_channels.release());
|
| - context->dispatchEvent(MessageEvent::create(ports.release(), m_message));
|
| - context->thread()->workerObjectProxy().confirmMessageFromWorkerObject(context->hasPendingActivity());
|
| + WorkerGlobalScope* globalScope = static_cast<WorkerGlobalScope*>(scriptContext);
|
| + globalScope->dispatchEvent(MessageEvent::create(ports.release(), m_message));
|
| + m_workerObjectProxy.confirmMessageFromWorkerObject(scriptContext->hasPendingActivity());
|
| }
|
|
|
| private:
|
| RefPtr<SerializedScriptValue> m_message;
|
| OwnPtr<MessagePortChannelArray> m_channels;
|
| + WorkerObjectProxy& m_workerObjectProxy;
|
| };
|
|
|
| WorkerMessagingProxy::WorkerMessagingProxy(Worker* workerObject, PassOwnPtrWillBeRawPtr<WorkerClients> workerClients)
|
| @@ -147,9 +148,10 @@ void WorkerMessagingProxy::postMessageToWorkerGlobalScope(PassRefPtr<SerializedS
|
|
|
| if (m_workerThread) {
|
| ++m_unconfirmedMessageCount;
|
| - m_workerThread->postTask(FROM_HERE, MessageWorkerGlobalScopeTask::create(message, channels));
|
| - } else
|
| - m_queuedEarlyTasks.append(MessageWorkerGlobalScopeTask::create(message, channels));
|
| + m_workerThread->postTask(FROM_HERE, MessageWorkerGlobalScopeTask::create(message, channels, workerObjectProxy()));
|
| + } else {
|
| + m_queuedEarlyTasks.append(MessageWorkerGlobalScopeTask::create(message, channels, workerObjectProxy()));
|
| + }
|
| }
|
|
|
| bool WorkerMessagingProxy::postTaskToWorkerGlobalScope(PassOwnPtr<ExecutionContextTask> task)
|
|
|