Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9467789fc16e972b2496b0f4e854bbd925b14c55
https://github.com/WebKit/WebKit/commit/9467789fc16e972b2496b0f4e854bbd925b14c55
Author: Patrick Griffis <[email protected]>
Date: 2026-09-23 (Wed, 23 Sep 2026)
Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/platform/glib/TestExpectations
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-001.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-002.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-dictionary-hashes.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-clear-site-data-cache.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-compressed-fetch-with-link-match-dest.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-compressed.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-decompression.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-decompression.tentative.https.h2-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-no-cors.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element-baseURL.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element-in-body.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-header.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-match.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-registration.tentative.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/resource-timing/decoded-body-size-compressed.https-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/resource-timing/encoded-body-size-cached.https-expected.txt
M Source/WebCore/platform/network/ResourceResponseBase.cpp
M Source/WebCore/platform/network/ResourceResponseBase.h
M Source/WebKit/NetworkProcess/NetworkLoadChecker.h
M Source/WebKit/NetworkProcess/NetworkLoadParameters.h
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
M Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
M Source/WebKit/NetworkProcess/cache/NetworkCache.h
M
Source/WebKit/NetworkProcess/cache/NetworkCacheCompressionDictionaryEntry.cpp
M
Source/WebKit/NetworkProcess/cache/NetworkCacheCompressionDictionaryEntry.h
M Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp
M Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h
M Source/cmake/OptionsGTK.cmake
M Source/cmake/OptionsWPE.cmake
Log Message:
-----------
Advertise stored compression dictionaries and decode dcb and dcz responses
https://bugs.webkit.org/show_bug.cgi?id=324295
Reviewed by Alex Christensen.
Look up the best matching stored dictionary for an outgoing request and hand its
hash and ID to libsoup, which adds Available-Dictionary, extends Accept-Encoding
with dcb and dcz, and asks for the dictionary bytes when the server answers with
one.
Matching walks the CompressionDictionary records of the request's cache
partition
and ranks them per RFC 9842. The matched key is then used later to retrieve the
dictionary.
This also corrects match-dest handling from 320786@main. An omitted or empty
list
matches every destination and a list naming only unsupported ones matches none;
previously an empty list dropped the registration.
A same-origin no-cors request is allowed a dictionary. Step 3 of the fetch falls
back for any no-cors request, but what that guards against is an opaque
response,
which a same-origin request cannot produce. Chromium does the same and the tests
expect it, and the spec text is being corrected in whatwg/fetch#1854.
NetworkLoadChecker already tracks same-origin and clears it on a cross-origin
redirect.
* LayoutTests/TestExpectations:
* LayoutTests/platform/glib/TestExpectations:
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-001.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-002.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/compressed-large-resources-dictionary-hashes.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-clear-site-data-cache.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-compressed-fetch-with-link-match-dest.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-compressed.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-decompression.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-decompression.tentative.https.h2-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-no-cors.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element-baseURL.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element-in-body.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-element.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-fetch-with-link-header.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-match.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/compression-dictionary/dictionary-registration.tentative.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/resource-timing/decoded-body-size-compressed.https-expected.txt:
Added.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/resource-timing/encoded-body-size-cached.https-expected.txt:
Added.
* Source/WebCore/platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::removeHTTPHeaderField):
* Source/WebCore/platform/network/ResourceResponseBase.h:
* Source/WebKit/NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::isSameOriginRequest const):
* Source/WebKit/NetworkProcess/NetworkLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::shouldFetchWithCompressionDictionary const):
(WebKit::NetworkResourceLoader::continueStartNetworkLoad):
(WebKit::isCompressionDictionaryEncoded):
(WebKit::NetworkResourceLoader::processUseAsDictionaryHeader):
(WebKit::NetworkResourceLoader::continueDidReceiveResponseAfterLocalNetworkAccessCheck):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::isBetterCompressionDictionaryMatch):
(WebKit::NetworkCache::Cache::retrieveCompressionDictionaryBestMatch):
(WebKit::NetworkCache::Cache::retrieveCompressionDictionary):
* Source/WebKit/NetworkProcess/cache/NetworkCache.h:
* Source/WebKit/NetworkProcess/cache/NetworkCacheCompressionDictionaryEntry.cpp:
(WebKit::NetworkCache::CompressionDictionaryEntry::CompressionDictionaryEntry):
(WebKit::NetworkCache::CompressionDictionaryEntry::buffer const):
(WebKit::NetworkCache::CompressionDictionaryEntry::encodeAsStorageRecord const):
* Source/WebKit/NetworkProcess/cache/NetworkCacheCompressionDictionaryEntry.h:
(WebKit::NetworkCache::CompressionDictionaryEntry::timeStamp const):
* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::shouldBlockCookies const):
(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::continueCreateRequestForRedirection):
(WebKit::NetworkDataTaskSoup::requestCompressionDictionaryCallback):
(WebKit::NetworkDataTaskSoup::requestCompressionDictionary):
* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:
Canonical link: https://commits.webkit.org/321688@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications