Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Unified Diff: Source/core/workers/Worker.cpp

Issue 1075603003: workers: Move core worker functionality into InProcessWorkerBase. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: . Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/workers/Worker.h ('k') | Source/core/workers/WorkerMessagingProxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/workers/Worker.cpp
diff --git a/Source/core/workers/Worker.cpp b/Source/core/workers/Worker.cpp
index caf255e8eca1920c5408419c73edd18dad9b4db1..79b3190abe9cbd7792f2c398afe6d61e88a1199e 100644
--- a/Source/core/workers/Worker.cpp
+++ b/Source/core/workers/Worker.cpp
@@ -1,29 +1,6 @@
-/*
- * Copyright (C) 2008, 2010 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Google Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
#include "config.h"
#include "core/workers/Worker.h"
@@ -31,22 +8,14 @@
#include "bindings/core/v8/ExceptionState.h"
#include "core/dom/Document.h"
#include "core/dom/ExceptionCode.h"
-#include "core/events/MessageEvent.h"
-#include "core/fetch/ResourceFetcher.h"
-#include "core/inspector/InspectorInstrumentation.h"
-#include "core/frame/LocalDOMWindow.h"
#include "core/frame/UseCounter.h"
#include "core/workers/WorkerGlobalScopeProxy.h"
#include "core/workers/WorkerGlobalScopeProxyProvider.h"
-#include "core/workers/WorkerScriptLoader.h"
-#include "core/workers/WorkerThread.h"
-#include "wtf/MainThread.h"
namespace blink {
Worker::Worker(ExecutionContext* context)
- : AbstractWorker(context)
- , m_contextProxy(nullptr)
+ : InProcessWorkerBase(context)
{
}
@@ -68,9 +37,6 @@ PassRefPtrWillBeRawPtr<Worker> Worker::create(ExecutionContext* context, const S
Worker::~Worker()
{
ASSERT(isMainThread());
- if (!m_contextProxy)
- return;
- m_contextProxy->workerObjectDestroyed();
}
const AtomicString& Worker::interfaceName() const
@@ -78,32 +44,6 @@ const AtomicString& Worker::interfaceName() const
return EventTargetNames::Worker;
}
-void Worker::postMessage(ExecutionContext*, PassRefPtr<SerializedScriptValue> message, const MessagePortArray* ports, ExceptionState& exceptionState)
-{
- ASSERT(m_contextProxy);
- // Disentangle the port in preparation for sending it to the remote context.
- OwnPtr<MessagePortChannelArray> channels = MessagePort::disentanglePorts(ports, exceptionState);
- if (exceptionState.hadException())
- return;
- m_contextProxy->postMessageToWorkerGlobalScope(message, channels.release());
-}
-
-bool Worker::initialize(ExecutionContext* context, const String& url, ExceptionState& exceptionState)
-{
- suspendIfNeeded();
-
- KURL scriptURL = resolveURL(url, exceptionState);
- if (scriptURL.isEmpty())
- return false;
-
- m_scriptLoader = WorkerScriptLoader::create();
- m_scriptLoader->loadAsynchronously(*context, scriptURL, DenyCrossOriginRequests, this);
-
- m_contextProxy = createWorkerGlobalScopeProxy(context);
-
- return true;
-}
-
WorkerGlobalScopeProxy* Worker::createWorkerGlobalScopeProxy(ExecutionContext* context)
{
Document* document = toDocument(context);
@@ -112,46 +52,4 @@ WorkerGlobalScopeProxy* Worker::createWorkerGlobalScopeProxy(ExecutionContext* c
return proxyProvider->createWorkerGlobalScopeProxy(this);
}
-void Worker::terminate()
-{
- if (m_contextProxy)
- m_contextProxy->terminateWorkerGlobalScope();
-}
-
-void Worker::stop()
-{
- terminate();
-}
-
-bool Worker::hasPendingActivity() const
-{
- // The worker context does not exist while loading, so we must ensure that the worker object is not collected, nor are its event listeners.
- return (m_contextProxy && m_contextProxy->hasPendingActivity()) || m_scriptLoader;
-}
-
-void Worker::didReceiveResponse(unsigned long identifier, const ResourceResponse&)
-{
- InspectorInstrumentation::didReceiveScriptResponse(executionContext(), identifier);
-}
-
-void Worker::notifyFinished()
-{
- if (m_scriptLoader->failed()) {
- dispatchEvent(Event::createCancelable(EventTypeNames::error));
- } else {
- ASSERT(m_contextProxy);
- WorkerThreadStartMode startMode = DontPauseWorkerGlobalScopeOnStart;
- if (InspectorInstrumentation::shouldPauseDedicatedWorkerOnStart(executionContext()))
- startMode = PauseWorkerGlobalScopeOnStart;
- m_contextProxy->startWorkerGlobalScope(m_scriptLoader->url(), executionContext()->userAgent(m_scriptLoader->url()), m_scriptLoader->script(), startMode);
- InspectorInstrumentation::scriptImported(executionContext(), m_scriptLoader->identifier(), m_scriptLoader->script());
- }
- m_scriptLoader = nullptr;
-}
-
-DEFINE_TRACE(Worker)
-{
- AbstractWorker::trace(visitor);
-}
-
} // namespace blink
« no previous file with comments | « Source/core/workers/Worker.h ('k') | Source/core/workers/WorkerMessagingProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698