Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 83c2523fa0c911e3459629da626ea6d3e6c6d5fc https://github.com/WebKit/WebKit/commit/83c2523fa0c911e3459629da626ea6d3e6c6d5fc Author: Alex Christensen <achristen...@apple.com> Date: 2025-02-28 (Fri, 28 Feb 2025)
Changed paths: M Source/JavaScriptCore/API/JSValue.mm M Source/WebCore/bindings/js/SerializedScriptValue.cpp M Source/WebKit/Shared/API/APIArray.h M Source/WebKit/Shared/API/APISerializedScriptValue.h M Source/WebKit/Shared/InspectorExtensionTypes.h M Source/WebKit/Shared/JavaScriptEvaluationResult.cpp M Source/WebKit/Shared/JavaScriptEvaluationResult.h M Source/WebKit/Shared/JavaScriptEvaluationResult.mm M Source/WebKit/Shared/JavaScriptEvaluationResult.serialization.in M Source/WebKit/Shared/WTFArgumentCoders.serialization.in M Source/WebKit/Shared/cf/CoreIPCNumber.h A Source/WebKit/Shared/cf/CoreIPCNumber.mm M Source/WebKit/UIProcess/API/APIInspectorExtension.cpp M Source/WebKit/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h M Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.mm M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in M Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm M Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp M Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h M Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.messages.in M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm Log Message: ----------- Replace JavaScriptEvaluationResult's IPC format with a structured map https://bugs.webkit.org/show_bug.cgi?id=288788 rdar://145804771 Reviewed by Sihui Liu. In order to maintain maximum compatibility, we continue to do a roundtrip through SerializedScriptValue, but we do so now entirely inside the web content process. This preserves some strange behavior related to things like blob serialization which we may want to revisit later, but for now we don't change any observable behavior. This is verified by some excellent tests that I got from Simon Lewis and included in this PR from his work on a slightly different approach in https://github.com/WebKit/WebKit/pull/40911 Simon's tests are more extensive than anything we've tested before, which is why they hit several assertions I needed to remove. The serialization format is a map of identifiers to values of different types with a root identifier of where to start. This allows us to preserve pointer equality of dictionaries that contain each other and keys that are reused as values and other interesting things. I also adopt JavaScriptEvaluationResult for the places where the extensions code deserializes a JavaScript evaluation result, such as Messages::WebInspectorUIExtensionController::EvaluateScriptForExtension. * Source/WebKit/Shared/API/APISerializedScriptValue.h: * Source/WebKit/Shared/JavaScriptEvaluationResult.cpp: (WebKit::JavaScriptEvaluationResult::toWK const): * Source/WebKit/Shared/JavaScriptEvaluationResult.h: (WebKit::JavaScriptEvaluationResult::root const): (WebKit::JavaScriptEvaluationResult::map const): (WebKit::JavaScriptEvaluationResult::wireBytes const): * Source/WebKit/Shared/JavaScriptEvaluationResult.mm: (WebKit::JavaScriptEvaluationResult::JavaScriptEvaluationResult): (WebKit::JavaScriptEvaluationResult::toID const): (WebKit::JavaScriptEvaluationResult::toVariant): (WebKit::JavaScriptEvaluationResult::addObjectToMap): (WebKit::roundTripThroughSerializedScriptValue): (WebKit::convertToObjC): (WebKit::JavaScriptEvaluationResult::extract): * Source/WebKit/Shared/JavaScriptEvaluationResult.serialization.in: * Source/WebKit/Shared/WTFArgumentCoders.serialization.in: * Source/WebKit/Shared/cf/CoreIPCNumber.h: (WebKit::CoreIPCNumber::numberHolderForNumber): Deleted. (WebKit::CoreIPCNumber::CoreIPCNumber): Deleted. (WebKit::CoreIPCNumber::createCFNumber const): Deleted. (WebKit::CoreIPCNumber::get const): Deleted. (WebKit::CoreIPCNumber::toID const): Deleted. * Source/WebKit/Shared/cf/CoreIPCNumber.mm: Added. (WebKit::CoreIPCNumber::numberHolderForNumber): (WebKit::CoreIPCNumber::CoreIPCNumber): (WebKit::CoreIPCNumber::createCFNumber const): (WebKit::CoreIPCNumber::get const): (WebKit::CoreIPCNumber::toID const): * Source/WebKit/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm: (API::SerializedScriptValue::deserializationContext): * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::runJavaScript): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm: (ReturnTypes)): Canonical link: https://commits.webkit.org/291332@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes