virtual void performTask(ScriptExecutionContext* scriptContext) { ASSERT(scriptContext->isWorkerContext()); DedicatedWorkerContext* context = static_cast<DedicatedWorkerContext*>(scriptContext); OwnPtr<MessagePortArray> ports = MessagePort::entanglePorts(*scriptContext, m_channels.release()); context->dispatchEvent(MessageEvent::create(ports.release(), m_message)); context->thread()->workerObjectProxy().confirmMessageFromWorkerObject(context->hasPendingActivity()); }
void WebWorkerImpl::postMessageToWorkerContextTask(WebCore::ScriptExecutionContext* context, WebWorkerImpl* thisPtr, const String& message, PassOwnPtr<MessagePortChannelArray> channels) { ASSERT(context->isWorkerContext()); DedicatedWorkerContext* workerContext = static_cast<DedicatedWorkerContext*>(context); OwnPtr<MessagePortArray> ports = MessagePort::entanglePorts(*context, channels.release()); RefPtr<SerializedScriptValue> serializedMessage = SerializedScriptValue::createFromWire(message); workerContext->dispatchEvent(MessageEvent::create( ports.release(), serializedMessage.release())); thisPtr->confirmMessageFromWorkerObject(workerContext->hasPendingActivity()); }