Title: [210514] trunk/Source/WebCore
Revision
210514
Author
commit-qu...@webkit.org
Date
2017-01-09 10:26:58 -0800 (Mon, 09 Jan 2017)

Log Message

Merging ThreadableLoader redundant options on filtering responses

Merge OpaqueResponseBodyPolicy and ResponseFilteringPolicy ThreadableLoader options
https://bugs.webkit.org/show_bug.cgi?id=166843

Patch by Youenn Fablet <youe...@gmail.com> on 2017-01-09
Reviewed by Darin Adler.

Covered by existing tests.

Removing OpaqueResponseBodyPolicy option.
When ResponseFilteringPolicy is set to Enable, the body is filtered out in DocumentThreadableLoader.

* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::start):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::didReceiveResponse): Implementing body filtering based on ResponseFilteringPolicy option.
* loader/ThreadableLoader.cpp:
(WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions):
* loader/ThreadableLoader.h:
* loader/WorkerThreadableLoader.cpp:
(WebCore::LoaderTaskOptions::LoaderTaskOptions):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (210513 => 210514)


--- trunk/Source/WebCore/ChangeLog	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/ChangeLog	2017-01-09 18:26:58 UTC (rev 210514)
@@ -1,3 +1,32 @@
+2017-01-09  Youenn Fablet  <youe...@gmail.com>
+
+        Merging ThreadableLoader redundant options on filtering responses
+
+        Merge OpaqueResponseBodyPolicy and ResponseFilteringPolicy ThreadableLoader options
+        https://bugs.webkit.org/show_bug.cgi?id=166843
+
+        Reviewed by Darin Adler.
+
+        Covered by existing tests.
+
+        Removing OpaqueResponseBodyPolicy option.
+        When ResponseFilteringPolicy is set to Enable, the body is filtered out in DocumentThreadableLoader.
+
+        * Modules/fetch/FetchLoader.cpp:
+        (WebCore::FetchLoader::start):
+        * loader/DocumentThreadableLoader.cpp:
+        (WebCore::DocumentThreadableLoader::didReceiveResponse): Implementing body filtering based on ResponseFilteringPolicy option.
+        * loader/ThreadableLoader.cpp:
+        (WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions):
+        * loader/ThreadableLoader.h:
+        * loader/WorkerThreadableLoader.cpp:
+        (WebCore::LoaderTaskOptions::LoaderTaskOptions):
+        * workers/WorkerScriptLoader.cpp:
+        (WebCore::WorkerScriptLoader::loadSynchronously):
+        (WebCore::WorkerScriptLoader::loadAsynchronously):
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::createRequest):
+
 2017-01-09  Daniel Bates  <daba...@apple.com>
 
         Evaluating window named element may return wrong result

Modified: trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp (210513 => 210514)


--- trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp	2017-01-09 18:26:58 UTC (rev 210514)
@@ -77,7 +77,7 @@
     ThreadableLoaderOptions options(request.fetchOptions(), ConsiderPreflight,
         context.shouldBypassMainWorldContentSecurityPolicy() ? ContentSecurityPolicyEnforcement::DoNotEnforce : ContentSecurityPolicyEnforcement::EnforceConnectSrcDirective,
         String(cachedResourceRequestInitiators().fetch),
-        OpaqueResponseBodyPolicy::DoNotReceive, ResponseFilteringPolicy::Enable);
+        ResponseFilteringPolicy::Enable);
     options.sendLoadCallbacks = SendCallbacks;
     options.dataBufferingPolicy = DoNotBufferData;
     options.sameOriginDataURLFlag = SameOriginDataURLFlag::Set;

Modified: trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp (210513 => 210514)


--- trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp	2017-01-09 18:26:58 UTC (rev 210514)
@@ -281,13 +281,18 @@
 void DocumentThreadableLoader::didReceiveResponse(unsigned long identifier, const ResourceResponse& response, ResourceResponse::Tainting tainting)
 {
     ASSERT(m_client);
+    ASSERT(response.type() != ResourceResponse::Type::Error);
 
     InspectorInstrumentation::didReceiveThreadableLoaderResponse(*this, identifier);
 
-    ASSERT(response.type() != ResourceResponse::Type::Error);
+    if (options().filteringPolicy == ResponseFilteringPolicy::Disable) {
+        m_client->didReceiveResponse(identifier, response);
+        return;
+    }
+
     if (response.type() == ResourceResponse::Type::Default) {
-        m_client->didReceiveResponse(identifier, options().filteringPolicy == ResponseFilteringPolicy::Enable ? ResourceResponse::filterResponse(response, tainting) : response);
-        if (tainting == ResourceResponse::Tainting::Opaque && options().opaqueResponse == OpaqueResponseBodyPolicy::DoNotReceive) {
+        m_client->didReceiveResponse(identifier, ResourceResponse::filterResponse(response, tainting));
+        if (tainting == ResourceResponse::Tainting::Opaque) {
             clearResource();
             if (m_client)
                 m_client->didFinishLoading(identifier, 0.0);

Modified: trunk/Source/WebCore/loader/ThreadableLoader.cpp (210513 => 210514)


--- trunk/Source/WebCore/loader/ThreadableLoader.cpp	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/loader/ThreadableLoader.cpp	2017-01-09 18:26:58 UTC (rev 210514)
@@ -52,12 +52,11 @@
 {
 }
 
-ThreadableLoaderOptions::ThreadableLoaderOptions(const ResourceLoaderOptions& baseOptions, PreflightPolicy preflightPolicy, ContentSecurityPolicyEnforcement contentSecurityPolicyEnforcement, String&& initiator, OpaqueResponseBodyPolicy opaqueResponse, ResponseFilteringPolicy filteringPolicy)
+ThreadableLoaderOptions::ThreadableLoaderOptions(const ResourceLoaderOptions& baseOptions, PreflightPolicy preflightPolicy, ContentSecurityPolicyEnforcement contentSecurityPolicyEnforcement, String&& initiator, ResponseFilteringPolicy filteringPolicy)
     : ResourceLoaderOptions(baseOptions)
     , preflightPolicy(preflightPolicy)
     , contentSecurityPolicyEnforcement(contentSecurityPolicyEnforcement)
     , initiator(WTFMove(initiator))
-    , opaqueResponse(opaqueResponse)
     , filteringPolicy(filteringPolicy)
 {
 }

Modified: trunk/Source/WebCore/loader/ThreadableLoader.h (210513 => 210514)


--- trunk/Source/WebCore/loader/ThreadableLoader.h	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/loader/ThreadableLoader.h	2017-01-09 18:26:58 UTC (rev 210514)
@@ -57,11 +57,6 @@
         EnforceScriptSrcDirective,
     };
 
-    enum class OpaqueResponseBodyPolicy {
-        Receive,
-        DoNotReceive
-    };
-
     enum class ResponseFilteringPolicy {
         Enable,
         Disable,
@@ -69,14 +64,13 @@
 
     struct ThreadableLoaderOptions : ResourceLoaderOptions {
         ThreadableLoaderOptions();
-        ThreadableLoaderOptions(const ResourceLoaderOptions&, PreflightPolicy, ContentSecurityPolicyEnforcement, String&& initiator, OpaqueResponseBodyPolicy, ResponseFilteringPolicy);
+        ThreadableLoaderOptions(const ResourceLoaderOptions&, PreflightPolicy, ContentSecurityPolicyEnforcement, String&& initiator, ResponseFilteringPolicy);
         ~ThreadableLoaderOptions();
 
         PreflightPolicy preflightPolicy { ConsiderPreflight };
         ContentSecurityPolicyEnforcement contentSecurityPolicyEnforcement { ContentSecurityPolicyEnforcement::EnforceConnectSrcDirective };
         String initiator; // This cannot be an AtomicString, as isolatedCopy() wouldn't create an object that's safe for passing to another thread.
-        OpaqueResponseBodyPolicy opaqueResponse { OpaqueResponseBodyPolicy::Receive };
-        ResponseFilteringPolicy filteringPolicy { ResponseFilteringPolicy::Enable };
+        ResponseFilteringPolicy filteringPolicy { ResponseFilteringPolicy::Disable };
     };
 
     // Useful for doing loader operations from any thread (not threadsafe,

Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp (210513 => 210514)


--- trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp	2017-01-09 18:26:58 UTC (rev 210514)
@@ -92,7 +92,7 @@
 };
 
 LoaderTaskOptions::LoaderTaskOptions(const ThreadableLoaderOptions& options, const String& referrer, Ref<SecurityOrigin>&& origin)
-    : options(options, options.preflightPolicy, options.contentSecurityPolicyEnforcement, options.initiator.isolatedCopy(), options.opaqueResponse, options.filteringPolicy)
+    : options(options, options.preflightPolicy, options.contentSecurityPolicyEnforcement, options.initiator.isolatedCopy(), options.filteringPolicy)
     , referrer(referrer.isolatedCopy())
     , origin(WTFMove(origin))
 {

Modified: trunk/Source/WebCore/workers/WorkerScriptLoader.cpp (210513 => 210514)


--- trunk/Source/WebCore/workers/WorkerScriptLoader.cpp	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/workers/WorkerScriptLoader.cpp	2017-01-09 18:26:58 UTC (rev 210514)
@@ -66,7 +66,6 @@
     options.mode = mode;
     options.sendLoadCallbacks = SendCallbacks;
     options.contentSecurityPolicyEnforcement = contentSecurityPolicyEnforcement;
-    options.filteringPolicy = ResponseFilteringPolicy::Disable;
 
     WorkerThreadableLoader::loadResourceSynchronously(downcast<WorkerGlobalScope>(*scriptExecutionContext), WTFMove(*request), *this, options);
 }
@@ -92,7 +91,6 @@
     options.mode = mode;
     options.sendLoadCallbacks = SendCallbacks;
     options.contentSecurityPolicyEnforcement = contentSecurityPolicyEnforcement;
-    options.filteringPolicy = ResponseFilteringPolicy::Disable;
 
     // During create, callbacks may happen which remove the last reference to this object.
     Ref<WorkerScriptLoader> protectedThis(*this);

Modified: trunk/Source/WebCore/xml/XMLHttpRequest.cpp (210513 => 210514)


--- trunk/Source/WebCore/xml/XMLHttpRequest.cpp	2017-01-09 18:14:52 UTC (rev 210513)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.cpp	2017-01-09 18:26:58 UTC (rev 210514)
@@ -669,6 +669,7 @@
     options.contentSecurityPolicyEnforcement = scriptExecutionContext()->shouldBypassMainWorldContentSecurityPolicy() ? ContentSecurityPolicyEnforcement::DoNotEnforce : ContentSecurityPolicyEnforcement::EnforceConnectSrcDirective;
     options.initiator = cachedResourceRequestInitiators().xmlhttprequest;
     options.sameOriginDataURLFlag = SameOriginDataURLFlag::Set;
+    options.filteringPolicy = ResponseFilteringPolicy::Enable;
 
     if (m_timeoutMilliseconds) {
         if (!m_async)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to