Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 77f45808a77b04e50c14eb0baeedbf0b5dcedd75 https://github.com/WebKit/WebKit/commit/77f45808a77b04e50c14eb0baeedbf0b5dcedd75 Author: Timothy Hatcher <timo...@apple.com> Date: 2022-11-04 (Fri, 04 Nov 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/WebCoreSupport/WebMessagePortChannelProvider.h M Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp M Tools/Scripts/webkitpy/generate_xcfilelists_lib/generators.py 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 WebCorePrivateHeaders 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/256350@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes