DedicatedWorkerGlobalScope.cpp [plain text]
#include "config.h"
#include "DedicatedWorkerGlobalScope.h"
#include "DOMWindow.h"
#include "DedicatedWorkerThread.h"
#include "MessageEvent.h"
#include "SecurityOrigin.h"
#include "WorkerObjectProxy.h"
namespace WebCore {
PassRefPtr<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(const URL& url, const String& userAgent, std::unique_ptr<GroupSettings> settings, DedicatedWorkerThread& thread, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, PassRefPtr<SecurityOrigin> topOrigin)
{
RefPtr<DedicatedWorkerGlobalScope> context = adoptRef(new DedicatedWorkerGlobalScope(url, userAgent, WTF::move(settings), thread, topOrigin));
context->applyContentSecurityPolicyFromString(contentSecurityPolicy, contentSecurityPolicyType);
return context.release();
}
DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL& url, const String& userAgent, std::unique_ptr<GroupSettings> settings, DedicatedWorkerThread& thread, PassRefPtr<SecurityOrigin> topOrigin)
: WorkerGlobalScope(url, userAgent, WTF::move(settings), thread, topOrigin)
{
}
DedicatedWorkerGlobalScope::~DedicatedWorkerGlobalScope()
{
}
EventTargetInterface DedicatedWorkerGlobalScope::eventTargetInterface() const
{
return DedicatedWorkerGlobalScopeEventTargetInterfaceType;
}
void DedicatedWorkerGlobalScope::postMessage(PassRefPtr<SerializedScriptValue> message, MessagePort* port, ExceptionCode& ec)
{
MessagePortArray ports;
if (port)
ports.append(port);
postMessage(message, &ports, ec);
}
void DedicatedWorkerGlobalScope::postMessage(PassRefPtr<SerializedScriptValue> message, const MessagePortArray* ports, ExceptionCode& ec)
{
std::unique_ptr<MessagePortChannelArray> channels = MessagePort::disentanglePorts(ports, ec);
if (ec)
return;
thread().workerObjectProxy().postMessageToWorkerObject(message, WTF::move(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());
}
}