Ejemplo n.º 1
0
 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());
 }
Ejemplo n.º 2
0
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());
}