[webkit-changes] [WebKit/WebKit] 9d8de9: CacheStorageRecordInformation is not isolated copi...
Sihui
noreply at github.com
Fri Jan 24 08:02:47 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9d8de91ee2cbfa9731b1b8171818b193c254daf7
https://github.com/WebKit/WebKit/commit/9d8de91ee2cbfa9731b1b8171818b193c254daf7
Author: Sihui Liu <sihui_liu at apple.com>
Date: 2025-01-24 (Fri, 24 Jan 2025)
Changed paths:
M Source/WTF/wtf/CrossThreadCopier.h
M Source/WTF/wtf/MediaTime.cpp
M Source/WTF/wtf/MediaTime.h
M Source/WebCore/Modules/cookie-store/CookieChangeSubscription.h
M Source/WebCore/Modules/webtransport/WebTransportBidirectionalStreamConstructionParameters.h
M Source/WebCore/contentextensions/ContentExtensionsBackend.h
M Source/WebCore/fileapi/URLKeepingBlobAlive.h
M Source/WebCore/platform/ContentType.h
M Source/WebCore/platform/graphics/VideoPlaybackQualityMetrics.h
M Source/WebCore/platform/mediastream/PhotoCapabilities.h
M Source/WebCore/platform/mediastream/PhotoSettings.h
M Source/WebCore/platform/network/OrganizationStorageAccessPromptQuirk.h
M Source/WebKit/NetworkProcess/storage/CacheStorageRecord.cpp
M Source/WebKit/NetworkProcess/storage/CacheStorageRecord.h
M Source/WebKit/Shared/RTCNetwork.cpp
M Source/WebKit/Shared/RTCNetwork.h
M Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.mm
Log Message:
-----------
CacheStorageRecordInformation is not isolated copied when passed across threads
https://bugs.webkit.org/show_bug.cgi?id=286393
rdar://108372325
Reviewed by Chris Dumez.
CacheStorageRecordInformation only has isolatedCopy function for rvalue reference, but in
CacheStorageDiskStore::readRecordsInternal(), isolatedCopy() is not invoked on rvalue reference. In this case,
CrossThreadCopier will fall back to use copy constructor, and CacheStorageRecordInformation is not properly copied. To
fix it, add CacheStorageRecordInformation::isolatedCopy() for lvalue reference and make sure CrossThreadCopier will
invoke that.
Also, to make the code more robust, now types involved in crossThreadCopy() are required to provide isolatedCopy()
function -- CrossThreadCopier will no longer use default copy constructor. This helps catch a few issues where objects
are not properly copied due to missing isolatedCopy function.
* Source/WTF/wtf/CrossThreadCopier.h:
* Source/WTF/wtf/MediaTime.cpp:
(WTF::MediaTime::isolatedCopy const):
* Source/WTF/wtf/MediaTime.h:
* Source/WebCore/Modules/cookie-store/CookieChangeSubscription.h:
(WebCore::CookieChangeSubscription::isolatedCopy const):
(WebCore::CookieChangeSubscription::isolatedCopy):
* Source/WebCore/Modules/webtransport/WebTransportBidirectionalStreamConstructionParameters.h:
(WebCore::WebTransportBidirectionalStreamConstructionParameters::isolatedCopy):
* Source/WebCore/contentextensions/ContentExtensionsBackend.h:
(WebCore::ContentExtensions::ContentExtensionsBackend::isolatedCopy):
(WebCore::ContentExtensions::ContentExtensionsBackend::ContentExtensionsBackend):
* Source/WebCore/fileapi/URLKeepingBlobAlive.h:
* Source/WebCore/platform/ContentType.h:
(WebCore::ContentType::isolatedCopy const):
(WebCore::ContentType::isolatedCopy):
* Source/WebCore/platform/graphics/VideoPlaybackQualityMetrics.h:
(WebCore::VideoPlaybackQualityMetrics::isolatedCopy const):
* Source/WebCore/platform/mediastream/PhotoCapabilities.h:
(WebCore::PhotoCapabilities::isolatedCopy const):
* Source/WebCore/platform/mediastream/PhotoSettings.h:
(WebCore::PhotoSettings::isolatedCopy const):
* Source/WebCore/platform/network/OrganizationStorageAccessPromptQuirk.h:
(WebCore::OrganizationStorageAccessPromptQuirk::isolatedCopy const):
(WebCore::OrganizationStorageAccessPromptQuirk::isolatedCopy):
* Source/WebKit/NetworkProcess/storage/CacheStorageRecord.cpp:
(WebKit::CacheStorageRecordInformation::isolatedCopy):
(WebKit::CacheStorageRecordInformation::isolatedCopy const):
* Source/WebKit/NetworkProcess/storage/CacheStorageRecord.h:
* Source/WebKit/Shared/RTCNetwork.cpp:
(WebKit::RTCNetwork::isolatedCopy const):
* Source/WebKit/Shared/RTCNetwork.h:
(WebKit::RTC::Network::IPAddress::isolatedCopy const):
(WebKit::RTC::Network::InterfaceAddress::isolatedCopy const):
* Source/WebKit/UIProcess/Cocoa/ExtensionCapabilityGranter.mm:
(WebKit::PlatformExtensionCapabilityGrants::isolatedCopy const):
Canonical link: https://commits.webkit.org/289347@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list