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)