diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/loader/ThreadableLoader.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/loader/ThreadableLoader.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/chromium/third_party/WebKit/Source/core/loader/ThreadableLoader.cpp b/chromium/third_party/WebKit/Source/core/loader/ThreadableLoader.cpp index 476f915fe9e..ed54bac70d6 100644 --- a/chromium/third_party/WebKit/Source/core/loader/ThreadableLoader.cpp +++ b/chromium/third_party/WebKit/Source/core/loader/ThreadableLoader.cpp @@ -34,33 +34,37 @@ #include "core/dom/Document.h" #include "core/dom/ExecutionContext.h" #include "core/loader/DocumentThreadableLoader.h" +#include "core/loader/ThreadableLoaderClientWrapper.h" +#include "core/loader/WorkerLoaderClientBridge.h" #include "core/loader/WorkerThreadableLoader.h" #include "core/workers/WorkerGlobalScope.h" #include "core/workers/WorkerRunLoop.h" +#include "core/workers/WorkerThread.h" namespace WebCore { -PassRefPtr<ThreadableLoader> ThreadableLoader::create(ExecutionContext* context, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options) +PassRefPtr<ThreadableLoader> ThreadableLoader::create(ExecutionContext& context, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoaderOptions) { ASSERT(client); - ASSERT(context); - if (context->isWorkerGlobalScope()) - return WorkerThreadableLoader::create(toWorkerGlobalScope(context), client, WorkerRunLoop::defaultMode(), request, options); + if (context.isWorkerGlobalScope()) { + WorkerGlobalScope& workerGlobalScope = toWorkerGlobalScope(context); + RefPtr<ThreadableLoaderClientWrapper> clientWrapper(ThreadableLoaderClientWrapper::create(client)); + OwnPtr<ThreadableLoaderClient> clientBridge(WorkerLoaderClientBridge::create(clientWrapper, workerGlobalScope.thread()->workerLoaderProxy())); + return WorkerThreadableLoader::create(workerGlobalScope, clientWrapper, clientBridge.release(), request, options, resourceLoaderOptions); + } - return DocumentThreadableLoader::create(toDocument(context), client, request, options); + return DocumentThreadableLoader::create(toDocument(context), client, request, options, resourceLoaderOptions); } -void ThreadableLoader::loadResourceSynchronously(ExecutionContext* context, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options) +void ThreadableLoader::loadResourceSynchronously(ExecutionContext& context, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoaderOptions) { - ASSERT(context); - - if (context->isWorkerGlobalScope()) { - WorkerThreadableLoader::loadResourceSynchronously(toWorkerGlobalScope(context), request, client, options); + if (context.isWorkerGlobalScope()) { + WorkerThreadableLoader::loadResourceSynchronously(toWorkerGlobalScope(context), request, client, options, resourceLoaderOptions); return; } - DocumentThreadableLoader::loadResourceSynchronously(toDocument(context), request, client, options); + DocumentThreadableLoader::loadResourceSynchronously(toDocument(context), request, client, options, resourceLoaderOptions); } } // namespace WebCore |