1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "modules/compositorworker/CompositorWorker.h"
8 #include "bindings/core/v8/ExceptionState.h"
9 #include "core/dom/Document.h"
10 #include "core/dom/ExceptionCode.h"
11 #include "core/workers/WorkerClients.h"
12 #include "modules/EventTargetModules.h"
13 #include "modules/compositorworker/CompositorWorkerMessagingProxy.h"
14 #include "wtf/MainThread.h"
18 inline CompositorWorker::CompositorWorker(ExecutionContext
* context
)
19 : InProcessWorkerBase(context
)
23 CompositorWorker
* CompositorWorker::create(ExecutionContext
* context
, const String
& url
, ExceptionState
& exceptionState
)
25 ASSERT(isMainThread());
26 Document
* document
= toDocument(context
);
27 if (!document
->page()) {
28 exceptionState
.throwDOMException(InvalidAccessError
, "The context provided is invalid.");
31 CompositorWorker
* worker
= new CompositorWorker(context
);
32 if (worker
->initialize(context
, url
, exceptionState
))
37 CompositorWorker::~CompositorWorker()
39 ASSERT(isMainThread());
42 const AtomicString
& CompositorWorker::interfaceName() const
44 return EventTargetNames::CompositorWorker
;
47 WorkerGlobalScopeProxy
* CompositorWorker::createWorkerGlobalScopeProxy(ExecutionContext
* worker
)
49 ASSERT(executionContext()->isDocument());
50 return new CompositorWorkerMessagingProxy(this);