[webkit-changes] [WebKit/WebKit] ec8ff5: Content downloaded with fetch() API when Content-E...
Ryan Reno
noreply at github.com
Wed Nov 16 15:08:07 PST 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ec8ff55e6568cd38eb629339e589d5d97c077d95
https://github.com/WebKit/WebKit/commit/ec8ff55e6568cd38eb629339e589d5d97c077d95
Author: Ryan Reno <rreno at apple.com>
Date: 2022-11-16 (Wed, 16 Nov 2022)
Changed paths:
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.html
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.js
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.serviceworker-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.serviceworker.html
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.sharedworker-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.sharedworker.html
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.worker-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.worker.html
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.octetstream.gz
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.octetstream.gz.headers
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.text.gz
A LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.text.gz.headers
M LayoutTests/platform/mac-wk1/TestExpectations
M Source/WebCore/Modules/fetch/FetchLoader.cpp
M Source/WebCore/loader/ResourceLoader.cpp
M Source/WebCore/loader/ResourceLoader.h
M Source/WebCore/loader/ResourceLoaderOptions.h
M Source/WebCore/loader/ThreadableLoader.cpp
M Source/WebCore/platform/network/BlobResourceHandle.cpp
M Source/WebCore/platform/network/ResourceHandle.cpp
M Source/WebCore/platform/network/ResourceHandle.h
M Source/WebCore/platform/network/ResourceHandleInternal.h
M Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
M Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp
M Source/WebCore/platform/network/mac/ResourceHandleMac.mm
M Source/WebCore/xml/XMLHttpRequest.cpp
M Source/WebKit/NetworkProcess/NetworkLoadParameters.h
M Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
M Source/WebKitLegacy/WebCoreSupport/PingHandle.h
Log Message:
-----------
Content downloaded with fetch() API when Content-Encoding: gzip is set is not decompressed
https://bugs.webkit.org/show_bug.cgi?id=247421
rdar://101935292
Reviewed by Brent Fulgham.
In 195247 at main we adopted CFNetwork SPI to opt-out of content encoding sniffing for XMLHttpRequest.
Content encoding sniffing would cause responses with `Content-Encoding: gzip` and
`Content-Type: application/octet-stream` to be treated as `Content-Type: application/gzip` and
`Content-Encoding: identity` on macOS. The user and developer visible behavior is that the gzipped data
is not decompressed.
This brings that change forward to Fetch requests by setting the ContentEncodingSniffingPolicy flag
in the FetchLoader. As an additional step this also renames the ContentEncodingSniffingPolicy flags to
Default and Disable and replaces raw bools representing those flags with the enum itself.
On iOS the flag has no effect since the default behavior is to opt-out of sniffing.
* LayoutTests/platform/mac-wk1/TestExpectations:
Skip new worker tests since workers are unsupported in WK1.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.js: Added.
(string_appeared_here.forEach.contentType.promise_test.async t):
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.serviceworker-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.serviceworker.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.sharedworker-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.sharedworker.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.worker-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/gzip-body.any.worker.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.octetstream.gz: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.octetstream.gz.headers: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.text.gz: Added.
* LayoutTests/imported/w3c/web-platform-tests/fetch/content-encoding/resources/foo.text.gz.headers: Added.
* Source/WebCore/Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::start):
* Source/WebCore/loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::start):
* Source/WebCore/loader/ResourceLoader.h:
(WebCore::ResourceLoader::contentEncodingSniffingPolicy const):
(WebCore::ResourceLoader::shouldSniffContentEncoding const): Deleted.
* Source/WebCore/loader/ResourceLoaderOptions.h:
(WebCore::ResourceLoaderOptions::ResourceLoaderOptions):
* Source/WebCore/loader/ThreadableLoader.cpp:
(WebCore::ThreadableLoaderOptions::isolatedCopy const):
* Source/WebCore/platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::BlobResourceHandle):
* Source/WebCore/platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::ResourceHandle):
(WebCore::ResourceHandle::create):
(WebCore::ResourceHandle::contentEncodingSniffingPolicy const):
(WebCore::ResourceHandle::shouldContentEncodingSniff const): Deleted.
* Source/WebCore/platform/network/ResourceHandle.h:
* Source/WebCore/platform/network/ResourceHandleInternal.h:
(WebCore::ResourceHandleInternal::ResourceHandleInternal):
* Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::createCFURLConnection):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* Source/WebCore/platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::applySniffingPoliciesIfNeeded):
(WebCore::ResourceHandle::createNSURLConnection):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* Source/WebCore/xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
* Source/WebKit/NetworkProcess/NetworkLoadParameters.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:
(WebKit::ServiceWorkerSoftUpdateLoader::loadFromNetwork):
* Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
* Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::SpeculativeLoadManager::preconnectForSubresource):
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
* Source/WebKitLegacy/WebCoreSupport/PingHandle.h:
Canonical link: https://commits.webkit.org/256755@main
More information about the webkit-changes
mailing list