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

Reply via email to