DedicatedWorkerGlobalScope.cpp [plain text]
#include "config.h"
#include "DedicatedWorkerGlobalScope.h"
#include "ContentSecurityPolicyResponseHeaders.h"
#include "DOMWindow.h"
#include "DedicatedWorkerThread.h"
#include "MessageEvent.h"
#include "SecurityOrigin.h"
#include "WorkerObjectProxy.h"
namespace WebCore {
Ref<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(const URL& url, const String& userAgent, DedicatedWorkerThread& thread, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
{
Ref<DedicatedWorkerGlobalScope> context = adoptRef(*new DedicatedWorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy, socketProvider));
if (!shouldBypassMainWorldContentSecurityPolicy)
context->applyContentSecurityPolicyResponseHeaders(contentSecurityPolicyResponseHeaders);
return context;
}
DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL& url, const String& userAgent, DedicatedWorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
: WorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy, socketProvider)
{
}
DedicatedWorkerGlobalScope::~DedicatedWorkerGlobalScope()
{
}
EventTargetInterface DedicatedWorkerGlobalScope::eventTargetInterface() const
{
return DedicatedWorkerGlobalScopeEventTargetInterfaceType;
}
void DedicatedWorkerGlobalScope::postMessage(RefPtr<SerializedScriptValue>&& message, MessagePort* port, ExceptionCode& ec)
{
MessagePortArray ports;
if (port)
ports.append(port);
postMessage(WTFMove(message), &ports, ec);
}
void DedicatedWorkerGlobalScope::postMessage(RefPtr<SerializedScriptValue>&& message, const MessagePortArray* ports, ExceptionCode& ec)
{
auto channels = MessagePort::disentanglePorts(ports, ec);
if (ec)
return;
thread().workerObjectProxy().postMessageToWorkerObject(WTFMove(message), WTFMove(channels));
}
void DedicatedWorkerGlobalScope::importScripts(const Vector<String>& urls, ExceptionCode& ec)
{
Base::importScripts(urls, ec);
thread().workerObjectProxy().reportPendingActivity(hasPendingActivity());
}
DedicatedWorkerThread& DedicatedWorkerGlobalScope::thread()
{
return static_cast<DedicatedWorkerThread&>(Base::thread());
}
}