diff options
Diffstat (limited to 'Source/WebCore/workers/WorkerScriptLoader.cpp')
-rw-r--r-- | Source/WebCore/workers/WorkerScriptLoader.cpp | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/Source/WebCore/workers/WorkerScriptLoader.cpp b/Source/WebCore/workers/WorkerScriptLoader.cpp index aec3e84d2..b6aa26755 100644 --- a/Source/WebCore/workers/WorkerScriptLoader.cpp +++ b/Source/WebCore/workers/WorkerScriptLoader.cpp @@ -11,10 +11,10 @@ * 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 + * THIS SOFTWARE IS PROVIDED BY APPLE 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 + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE 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 @@ -22,32 +22,23 @@ * 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. - * */ #include "config.h" - #include "WorkerScriptLoader.h" -#include "CrossThreadTask.h" +#include "ContentSecurityPolicy.h" #include "ResourceResponse.h" #include "ScriptExecutionContext.h" -#include "SecurityOrigin.h" #include "TextResourceDecoder.h" #include "WorkerGlobalScope.h" #include "WorkerScriptLoaderClient.h" #include "WorkerThreadableLoader.h" -#include <wtf/OwnPtr.h> #include <wtf/Ref.h> -#include <wtf/RefPtr.h> namespace WebCore { WorkerScriptLoader::WorkerScriptLoader() - : m_client(0) - , m_failed(false) - , m_identifier(0) - , m_finishing(false) { } @@ -55,42 +46,55 @@ WorkerScriptLoader::~WorkerScriptLoader() { } -void WorkerScriptLoader::loadSynchronously(ScriptExecutionContext* scriptExecutionContext, const URL& url, CrossOriginRequestPolicy crossOriginRequestPolicy) +void WorkerScriptLoader::loadSynchronously(ScriptExecutionContext* scriptExecutionContext, const URL& url, FetchOptions::Mode mode, ContentSecurityPolicyEnforcement contentSecurityPolicyEnforcement, const String& initiatorIdentifier) { + ASSERT(scriptExecutionContext); + m_url = url; - OwnPtr<ResourceRequest> request(createResourceRequest()); + std::unique_ptr<ResourceRequest> request(createResourceRequest(initiatorIdentifier)); if (!request) return; - ASSERT_WITH_SECURITY_IMPLICATION(scriptExecutionContext->isWorkerGlobalScope()); + ASSERT_WITH_SECURITY_IMPLICATION(is<WorkerGlobalScope>(scriptExecutionContext)); + + // Only used for importScripts that prescribes NoCors mode. + ASSERT(mode == FetchOptions::Mode::NoCors); ThreadableLoaderOptions options; - options.allowCredentials = AllowStoredCredentials; - options.crossOriginRequestPolicy = crossOriginRequestPolicy; + options.credentials = FetchOptions::Credentials::Include; + options.mode = mode; options.sendLoadCallbacks = SendCallbacks; + options.contentSecurityPolicyEnforcement = contentSecurityPolicyEnforcement; - WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerGlobalScope*>(scriptExecutionContext), *request, *this, options); + WorkerThreadableLoader::loadResourceSynchronously(downcast<WorkerGlobalScope>(*scriptExecutionContext), WTFMove(*request), *this, options); } - -void WorkerScriptLoader::loadAsynchronously(ScriptExecutionContext* scriptExecutionContext, const URL& url, CrossOriginRequestPolicy crossOriginRequestPolicy, WorkerScriptLoaderClient* client) + +void WorkerScriptLoader::loadAsynchronously(ScriptExecutionContext* scriptExecutionContext, const URL& url, FetchOptions::Mode mode, ContentSecurityPolicyEnforcement contentSecurityPolicyEnforcement, const String& initiatorIdentifier, WorkerScriptLoaderClient* client) { ASSERT(client); + ASSERT(scriptExecutionContext); + m_client = client; m_url = url; - OwnPtr<ResourceRequest> request(createResourceRequest()); + std::unique_ptr<ResourceRequest> request(createResourceRequest(initiatorIdentifier)); if (!request) return; + // Only used for loading worker scripts in classic mode. + // FIXME: We should add an option to set credential mode. + ASSERT(mode == FetchOptions::Mode::SameOrigin); + ThreadableLoaderOptions options; - options.allowCredentials = AllowStoredCredentials; - options.crossOriginRequestPolicy = crossOriginRequestPolicy; + options.credentials = FetchOptions::Credentials::SameOrigin; + options.mode = mode; options.sendLoadCallbacks = SendCallbacks; + options.contentSecurityPolicyEnforcement = contentSecurityPolicyEnforcement; // During create, callbacks may happen which remove the last reference to this object. - Ref<WorkerScriptLoader> protect(*this); - m_threadableLoader = ThreadableLoader::create(scriptExecutionContext, this, *request, options); + Ref<WorkerScriptLoader> protectedThis(*this); + m_threadableLoader = ThreadableLoader::create(*scriptExecutionContext, *this, WTFMove(*request), options); } const URL& WorkerScriptLoader::responseURL() const @@ -99,11 +103,12 @@ const URL& WorkerScriptLoader::responseURL() const return m_responseURL; } -PassOwnPtr<ResourceRequest> WorkerScriptLoader::createResourceRequest() +std::unique_ptr<ResourceRequest> WorkerScriptLoader::createResourceRequest(const String& initiatorIdentifier) { - OwnPtr<ResourceRequest> request = adoptPtr(new ResourceRequest(m_url)); - request->setHTTPMethod("GET"); - return request.release(); + auto request = std::make_unique<ResourceRequest>(m_url); + request->setHTTPMethod(ASCIILiteral("GET")); + request->setInitiatorIdentifier(initiatorIdentifier); + return request; } void WorkerScriptLoader::didReceiveResponse(unsigned long identifier, const ResourceResponse& response) @@ -125,9 +130,9 @@ void WorkerScriptLoader::didReceiveData(const char* data, int len) if (!m_decoder) { if (!m_responseEncoding.isEmpty()) - m_decoder = TextResourceDecoder::create("text/javascript", m_responseEncoding); + m_decoder = TextResourceDecoder::create(ASCIILiteral("text/javascript"), m_responseEncoding); else - m_decoder = TextResourceDecoder::create("text/javascript", "UTF-8"); + m_decoder = TextResourceDecoder::create(ASCIILiteral("text/javascript"), "UTF-8"); } if (!len) @@ -158,11 +163,6 @@ void WorkerScriptLoader::didFail(const ResourceError&) notifyError(); } -void WorkerScriptLoader::didFailRedirectCheck() -{ - notifyError(); -} - void WorkerScriptLoader::notifyError() { m_failed = true; |