[webkit-changes] [WebKit/WebKit] 2f1690: Replace ResourceResponse with ResourceResponse::Cr...

Sihui noreply at github.com
Fri Mar 24 15:17:37 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2f169036ec502e5451e1a00f5d9d268cf4ffe6bd
      https://github.com/WebKit/WebKit/commit/2f169036ec502e5451e1a00f5d9d268cf4ffe6bd
  Author: Sihui Liu <sihui_liu at apple.com>
  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




More information about the webkit-changes mailing list