Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2f169036ec502e5451e1a00f5d9d268cf4ffe6bd
https://github.com/WebKit/WebKit/commit/2f169036ec502e5451e1a00f5d9d268cf4ffe6bd
Author: Sihui Liu <[email protected]>
Date: 2023-03-24 (Fri, 24 Mar 2023)
Changed paths:
M Source/WebCore/Modules/cache/DOMCacheEngine.cpp
M Source/WebCore/Modules/cache/DOMCacheEngine.h
M Source/WebCore/loader/CrossOriginAccessControl.cpp
M Source/WebCore/loader/CrossOriginAccessControl.h
M Source/WebCore/platform/network/ResourceResponseBase.cpp
M Source/WebCore/platform/network/ResourceResponseBase.h
M Source/WebKit/NetworkProcess/storage/CacheStorageCache.cpp
M Source/WebKit/NetworkProcess/storage/CacheStorageCache.h
M Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in
M Source/WebKit/Scripts/generate-serializers.py
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp
Log Message:
-----------
Replace ResourceResponse with ResourceResponse::CrossThreadData in
CacheStorage messages
https://bugs.webkit.org/show_bug.cgi?id=254231
rdar://107020237
Reviewed by Youenn Fablet.
NetworkStorageManager receives and handles CacheStorage messages on a
WorkQueue, which is not tied to one thread.
ResourceResponse contains AtomSring members, which can only be accessed from
the thread where they are created. To avoid
threading issues, we replace ResourceResponse with
ResourceResponse::CrossThreadData in CacheStorage messages that are
sent to and sent from NetworkStorageManager.
To make this change, this patch introduces DOMCacheEngine::CrossThreadRecord
and adds encode/decode functions for
ResourceResponse::CrossThreadData. It also adds members to
ResourceResponse::CrossThreadData so that it contains all
information needed for persistence encoding/decoding.
* Source/WebCore/Modules/cache/DOMCacheEngine.cpp:
(WebCore::DOMCacheEngine::toCrossThreadRecord):
(WebCore::DOMCacheEngine::fromCrossThreadRecord):
* Source/WebCore/Modules/cache/DOMCacheEngine.h:
(WebCore::DOMCacheEngine::CrossThreadRecord::CrossThreadRecord):
* Source/WebCore/loader/CrossOriginAccessControl.cpp:
(WebCore::shouldCrossOriginResourcePolicyCancelLoad):
(WebCore::validateCrossOriginResourcePolicy):
* Source/WebCore/loader/CrossOriginAccessControl.h:
* Source/WebCore/platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::CrossThreadData::isolatedCopy const):
(WebCore::ResourceResponseBase::crossThreadData const):
(WebCore::ResourceResponseBase::fromCrossThreadData):
(WTF::Persistence::Coder<WebCore::ResourceResponseBase::CrossThreadData>::encode):
(WTF::Persistence::Coder<WebCore::ResourceResponseBase::CrossThreadData>::decode):
* Source/WebCore/platform/network/ResourceResponseBase.h:
(WebCore::ResourceResponseBase::CrossThreadData::CrossThreadData):
* Source/WebKit/NetworkProcess/storage/CacheStorageCache.cpp:
(WebKit::toCacheStorageRecord):
(WebKit::CacheStorageCache::retrieveRecords):
(WebKit::CacheStorageCache::putRecords):
* Source/WebKit/NetworkProcess/storage/CacheStorageCache.h:
* Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.cpp:
(WebKit::decodeRecordHeader):
(WebKit::readRecordInfoFromFileData):
(WebKit::CacheStorageDiskStore::readRecordFromFileData):
(WebKit::encodeRecordHeader):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::cacheStorageRetrieveRecords):
(WebKit::NetworkStorageManager::cacheStoragePutRecords):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in:
* Source/WebKit/Scripts/generate-serializers.py:
(SerializedType.__init__):
(generate_headers_for_header):
(generate_header):
(parse_serialized_types):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::retrieveRecords):
(WebKit::WebCacheStorageConnection::batchPutOperation):
Canonical link: https://commits.webkit.org/262102@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes