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

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

Issue 857193004: [NOT READY FOR REVIEW YET]workers: Some refactoring to allow creating new kind of worker threads Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: . Created 5 years, 11 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/WorkerGlobalScope.cpp » ('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 ecd92b8c72e6de8a877ebdadb624cb6a9bb5b87d..d4607c6566cdcdc9cea078400cbec3dddb4fbd34 100644
--- a/Source/core/workers/Worker.cpp
+++ b/Source/core/workers/Worker.cpp
@@ -58,21 +58,10 @@ PassRefPtrWillBeRawPtr<Worker> Worker::create(ExecutionContext* context, const S
exceptionState.throwDOMException(InvalidAccessError, "The context provided is invalid.");
return nullptr;
}
- WorkerGlobalScopeProxyProvider* proxyProvider = WorkerGlobalScopeProxyProvider::from(*document->page());
- ASSERT(proxyProvider);
-
RefPtrWillBeRawPtr<Worker> worker = adoptRefWillBeNoop(new Worker(context));
-
- worker->suspendIfNeeded();
-
- KURL scriptURL = worker->resolveURL(url, exceptionState);
- if (scriptURL.isEmpty())
- return nullptr;
-
- worker->m_scriptLoader = WorkerScriptLoader::create();
- worker->m_scriptLoader->loadAsynchronously(*context, scriptURL, DenyCrossOriginRequests, worker.get());
- worker->m_contextProxy = proxyProvider->createWorkerGlobalScopeProxy(worker.get());
- return worker.release();
+ if (worker->initialize(context, url, exceptionState))
+ return worker.release();
+ return nullptr;
}
Worker::~Worker()
@@ -98,6 +87,24 @@ void Worker::postMessage(ExecutionContext*, PassRefPtr<SerializedScriptValue> me
m_contextProxy->postMessageToWorkerGlobalScope(message, channels.release());
}
+bool Worker::initialize(ExecutionContext* context, const String& url, ExceptionState& exceptionState)
+{
+ suspendIfNeeded();
+
+ Document* document = toDocument(context);
+ WorkerGlobalScopeProxyProvider* proxyProvider = WorkerGlobalScopeProxyProvider::from(*document->page());
+ ASSERT(proxyProvider);
+
+ KURL scriptURL = resolveURL(url, exceptionState);
+ if (scriptURL.isEmpty())
+ return false;
+
+ m_scriptLoader = WorkerScriptLoader::create();
+ m_scriptLoader->loadAsynchronously(*context, scriptURL, DenyCrossOriginRequests, this);
+ m_contextProxy = proxyProvider->createWorkerGlobalScopeProxy(this);
+ return true;
+}
+
void Worker::terminate()
{
if (m_contextProxy)
« no previous file with comments | « Source/core/workers/Worker.h ('k') | Source/core/workers/WorkerGlobalScope.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698