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

Reply via email to