virtual void performTask(ScriptExecutionContext* scriptContext) { ASSERT(scriptContext->isWorkerContext()); WorkerContext* context = static_cast<WorkerContext*>(scriptContext); RefPtr<Event> evt = MessageEvent::create(m_message, "", "", 0, 0); if (context->onmessage()) { evt->setTarget(context); evt->setCurrentTarget(context); context->onmessage()->handleEvent(evt.get(), false); } ExceptionCode ec = 0; context->dispatchEvent(evt.release(), ec); ASSERT(!ec); context->thread()->messagingProxy()->confirmWorkerThreadMessage(context->hasPendingActivity()); }