Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0d554516d6f8d662d907d5200b95b9c321e29d62
      
https://github.com/WebKit/WebKit/commit/0d554516d6f8d662d907d5200b95b9c321e29d62
  Author: Timothy Hatcher <timo...@apple.com>
  Date:   2022-10-28 (Fri, 28 Oct 2022)

  Changed paths:
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources-output.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/Scripts/generate-derived-sources.sh
    M Source/WebKit/SourcesCocoa.txt
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
    A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm
    A 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm
    A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h
    A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
    A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h
    A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h
    A 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm
    A Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrappable.h
    A Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp
    A Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h
    A 
Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm
    A Source/WebKit/WebProcess/Extensions/Bindings/Scripts/IDLAttributes.json
    A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIExtension.idl
    A 
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl
    A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl
    M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h
    M Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp

  Log Message:
  -----------
  Add Web Extension code generator scripts, bindings glue, and some IDL files.
https://bugs.webkit.org/show_bug.cgi?id=246410

Reviewed by Brian Weinstein.

This stands up the code generator for the JavaScript bindings for Web 
Extensions.
This has been tested with all the IDL files, but I'm only adding a couple 
partial
interfaces with stub implementations to keep this change small. The rest of the
interfaces files will be added as the API areas are added.

For each IDL file in WebProcess/Extensions/Interfaces, a corresponding header 
and
implementation is expected in WebProcess/Extensions/API.

The bulk of the binding helpers are defined in JSWebExtensionWrapper.h, with 
converter
functions and the JSWebExtensionWrapper and WebExtensionCallbackHandler classes.

The WebExtensionCallbackHandler class handles the two ways Web Extensions can
process async results — the Manifest v2 callback function way, or the Manifest 
v3
Promise result method. This lets the API layer be agnostic about which one the
JavaScript is using and report results or errors consistently.

This is untested (besides successfully building) until API injection can be 
done.
Most of this was copied from Safari's existing implementation and changed for
WebKit to use more C++, and use WebCore's bindings scripts.

* Source/WebKit/DerivedSources-input.xcfilelist: Auto generated.
* Source/WebKit/DerivedSources-output.xcfilelist: Ditto.
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Scripts/generate-derived-sources.sh: Added WebCoreScripts var.
* Source/WebKit/SourcesCocoa.txt: Added new file.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj: Added new files.
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm: 
Added.
(WebKit::WebExtensionAPIExtension::isPropertyAllowed):
(WebKit::WebExtensionAPIExtension::getURL):
* 
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm: 
Added.
(WebKit::WebExtensionAPINamespace::extension):
(WebKit::WebExtensionAPINamespace::runtime):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm: 
Added.
(WebKit::WebExtensionAPIRuntimeBase::reportErrorForCallbackHandler):
(WebKit::WebExtensionAPIRuntime::getURL):
(WebKit::WebExtensionAPIRuntime::getManifest):
(WebKit::WebExtensionAPIRuntime::runtimeIdentifier):
(WebKit::WebExtensionAPIRuntime::getPlatformInfo):
(WebKit::WebExtensionAPIRuntime::lastError):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIObject.h: Added.
(WebKit::WebExtensionAPIObject::WebExtensionAPIObject):
(WebKit::WebExtensionAPIObject::forMainWorld const):
(WebKit::WebExtensionAPIObject::isForMainWorld const):
(WebKit::WebExtensionAPIObject::runtime):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h: Added.
* 
Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm:
 Added.
(WebKit::WebExtensionCallbackHandler::WebExtensionCallbackHandler):
(WebKit::WebExtensionCallbackHandler::~WebExtensionCallbackHandler):
(WebKit::WebExtensionCallbackHandler::callbackFunction const):
(WebKit::callWithArguments):
(WebKit::WebExtensionCallbackHandler::reportError):
(WebKit::WebExtensionCallbackHandler::call):
(WebKit::functionObjectByName):
(WebKit::toNSObject):
(WebKit::toNSString):
(WebKit::toNSDictionary):
(WebKit::toJSValue):
(WebKit::toJSCallbackHandler):
(WebKit::deserializeJSONString):
(WebKit::serializeJSObject):
(-[JSValue _awaitThenableResolutionWithCompletionHandler:]):
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrappable.h: Added.
(WebKit::JSWebExtensionWrappable::~JSWebExtensionWrappable):
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp: Added.
(WebKit::JSWebExtensionWrapper::wrap):
(WebKit::JSWebExtensionWrapper::unwrap):
(WebKit::unwrapObject):
(WebKit::JSWebExtensionWrapper::initialize):
(WebKit::JSWebExtensionWrapper::finalize):
* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h: Added.
(WebKit::WebExtensionCallbackHandler::create):
(WebKit::WebExtensionCallbackHandler::globalContext const):
(WebKit::toWebFrame):
(WebKit::toWebPage):
(WebKit::toJSString):
(WebKit::toJSNullIfNull):
(WebKit::toJS):
(WebKit::toJSPromiseCallbackHandler):
(WebKit::toJSErrorCallbackHandler):
(WebKit::toJSValue):
(WebKit::toJSError):
* 
Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm:
 Added.
* Source/WebKit/WebProcess/Extensions/Bindings/Scripts/IDLAttributes.json: 
Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIExtension.idl: 
Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl: 
Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIRuntime.idl: 
Added.
* Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp: Build fix for 
Sources.txt change.
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp: Ditto.
* Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp: Ditto.

Canonical link: https://commits.webkit.org/256120@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to