This source file includes following definitions.
- create
- dispatchInstallEvent
- dispatchActivateEvent
- dispatchFetchEvent
- dispatchMessageEvent
- dispatchSyncEvent
- reportException
- reportConsoleMessage
- postMessageToPageInspector
- updateInspectorStateCookie
- workerGlobalScopeStarted
- workerGlobalScopeClosed
- workerGlobalScopeDestroyed
- m_workerGlobalScope
#include "config.h"
#include "ServiceWorkerGlobalScopeProxy.h"
#include "WebEmbeddedWorkerImpl.h"
#include "WebSerializedScriptValue.h"
#include "WebServiceWorkerContextClient.h"
#include "bindings/v8/WorkerScriptController.h"
#include "core/dom/ExecutionContext.h"
#include "core/dom/MessagePort.h"
#include "core/events/MessageEvent.h"
#include "core/workers/WorkerGlobalScope.h"
#include "modules/serviceworkers/FetchEvent.h"
#include "modules/serviceworkers/InstallEvent.h"
#include "modules/serviceworkers/InstallPhaseEvent.h"
#include "modules/serviceworkers/WaitUntilObserver.h"
#include "platform/NotImplemented.h"
#include "wtf/Functional.h"
#include "wtf/PassOwnPtr.h"
using namespace WebCore;
namespace blink {
PassOwnPtr<ServiceWorkerGlobalScopeProxy> ServiceWorkerGlobalScopeProxy::create(WebEmbeddedWorkerImpl& embeddedWorker, ExecutionContext& executionContext, WebServiceWorkerContextClient& client)
{
return adoptPtr(new ServiceWorkerGlobalScopeProxy(embeddedWorker, executionContext, client));
}
ServiceWorkerGlobalScopeProxy::~ServiceWorkerGlobalScopeProxy()
{
}
void ServiceWorkerGlobalScopeProxy::dispatchInstallEvent(int eventID)
{
ASSERT(m_workerGlobalScope);
RefPtr<WaitUntilObserver> observer = WaitUntilObserver::create(m_workerGlobalScope, WaitUntilObserver::Install, eventID);
observer->willDispatchEvent();
m_workerGlobalScope->dispatchEvent(InstallEvent::create(EventTypeNames::install, EventInit(), observer));
observer->didDispatchEvent();
}
void ServiceWorkerGlobalScopeProxy::dispatchActivateEvent(int eventID)
{
ASSERT(m_workerGlobalScope);
RefPtr<WaitUntilObserver> observer = WaitUntilObserver::create(m_workerGlobalScope, WaitUntilObserver::Activate, eventID);
observer->willDispatchEvent();
m_workerGlobalScope->dispatchEvent(InstallPhaseEvent::create(EventTypeNames::activate, EventInit(), observer));
observer->didDispatchEvent();
}
void ServiceWorkerGlobalScopeProxy::dispatchFetchEvent(int eventID)
{
ASSERT(m_workerGlobalScope);
RefPtr<RespondWithObserver> observer = RespondWithObserver::create(m_workerGlobalScope, eventID);
m_workerGlobalScope->dispatchEvent(FetchEvent::create(observer));
observer->didDispatchEvent();
}
void ServiceWorkerGlobalScopeProxy::dispatchMessageEvent(const WebString& message, const WebMessagePortChannelArray& webChannels)
{
ASSERT(m_workerGlobalScope);
OwnPtr<MessagePortArray> ports = MessagePort::toMessagePortArray(m_workerGlobalScope, webChannels);
WebSerializedScriptValue value = WebSerializedScriptValue::fromString(message);
m_workerGlobalScope->dispatchEvent(MessageEvent::create(ports.release(), value));
}
void ServiceWorkerGlobalScopeProxy::dispatchSyncEvent(int eventID)
{
ASSERT(m_workerGlobalScope);
m_workerGlobalScope->dispatchEvent(Event::create(EventTypeNames::sync));
ServiceWorkerGlobalScopeClient::from(m_workerGlobalScope)->didHandleSyncEvent(eventID);
}
void ServiceWorkerGlobalScopeProxy::reportException(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL)
{
m_client.reportException(errorMessage, lineNumber, columnNumber, sourceURL);
}
void ServiceWorkerGlobalScopeProxy::reportConsoleMessage(MessageSource, MessageLevel, const String& message, int lineNumber, const String& sourceURL)
{
notImplemented();
}
void ServiceWorkerGlobalScopeProxy::postMessageToPageInspector(const String& message)
{
m_client.dispatchDevToolsMessage(message);
}
void ServiceWorkerGlobalScopeProxy::updateInspectorStateCookie(const String& message)
{
m_client.saveDevToolsAgentState(message);
}
void ServiceWorkerGlobalScopeProxy::workerGlobalScopeStarted(WorkerGlobalScope* workerGlobalScope)
{
ASSERT(!m_workerGlobalScope);
m_workerGlobalScope = workerGlobalScope;
m_client.workerContextStarted(this);
}
void ServiceWorkerGlobalScopeProxy::workerGlobalScopeClosed()
{
m_executionContext.postTask(bind(&WebEmbeddedWorkerImpl::terminateWorkerContext, &m_embeddedWorker));
}
void ServiceWorkerGlobalScopeProxy::workerGlobalScopeDestroyed()
{
m_workerGlobalScope = 0;
m_client.workerContextDestroyed();
}
ServiceWorkerGlobalScopeProxy::ServiceWorkerGlobalScopeProxy(WebEmbeddedWorkerImpl& embeddedWorker, ExecutionContext& executionContext, WebServiceWorkerContextClient& client)
: m_embeddedWorker(embeddedWorker)
, m_executionContext(executionContext)
, m_client(client)
, m_workerGlobalScope(0)
{
}
}