Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8f7a6bbb4ad4d9fd9a99bc158ade012bbf1a2c64 https://github.com/WebKit/WebKit/commit/8f7a6bbb4ad4d9fd9a99bc158ade012bbf1a2c64 Author: Timothy Hatcher <timo...@apple.com> Date: 2022-11-21 (Mon, 21 Nov 2022)
Changed paths: M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/DerivedSources-output.xcfilelist M Source/WebKit/DerivedSources.make M Source/WebKit/Shared/WebExtensionContextParameters.h M Source/WebKit/Shared/WebExtensionContextParameters.serialization.in M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h A Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegatePrivate.h A Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITestCocoa.mm M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h M Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/IDLAttributes.json M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITest.idl M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h M Tools/TestWebKitAPI/SourcesCocoa.txt M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm A Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h A Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm Log Message: ----------- Add browser.test interface for Web Extension API testing. https://bugs.webkit.org/show_bug.cgi?id=248157 Reviewed by Darin Adler. This adds the `browser.test` APIs uses by Firefox and Chrome for extension unit tests. The various assertion methods have default implementations that log to the system console for testing in any client. However, a test harness like TestWebKitAPI can implement the private delegate methods that allows it to tie into the gtest infrastructure. This allows easy unit testing on the JavaScript extension APIs directly in TestWebKitAPI tests. This change adds some unit tests for the existing `browser.runtime` and `browser.extension` APIs. * Source/WebKit/DerivedSources-input.xcfilelist: Updated with the build. * Source/WebKit/DerivedSources-output.xcfilelist: Ditto. * Source/WebKit/DerivedSources.make: Added * Source/WebKit/Shared/WebExtensionContextParameters.h: Added testingMode. * Source/WebKit/Shared/WebExtensionContextParameters.serialization.in: Ditto. * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm: (-[_WKWebExtensionContext _inTestingMode]): Added. (-[_WKWebExtensionContext _setTestingMode:]): Added. * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContextPrivate.h: * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegatePrivate.h: Added. * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITestCocoa.mm: Added. (WebKit::WebExtensionContext::testResult): Added. (WebKit::WebExtensionContext::testEqual): Added. (WebKit::WebExtensionContext::testMessage): Added. (WebKit::WebExtensionContext::testYielded): Added. (WebKit::WebExtensionContext::testFinished): Added. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::setTestingMode): Added. * Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp: (WebKit::WebExtensionContext::parameters const): Set testingMode. * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: (WebKit::WebExtensionContext::inTestingMode const): Added. * Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in: Added test messages. * Source/WebKit/WebKit.xcodeproj/project.pbxproj: Added new files. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm: (WebKit::WebExtensionAPINamespace::isPropertyAllowed): Added. Don't allow test unless in testing mode. (WebKit::WebExtensionAPINamespace::test): Added. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITestCocoa.mm: Added. (WebKit::scriptLocation): (WebKit::WebExtensionAPITest::notifyFail): (WebKit::WebExtensionAPITest::notifyPass): (WebKit::WebExtensionAPITest::yield): (WebKit::WebExtensionAPITest::log): (WebKit::WebExtensionAPITest::fail): (WebKit::WebExtensionAPITest::succeed): (WebKit::WebExtensionAPITest::assertTrue): (WebKit::WebExtensionAPITest::assertFalse): (WebKit::debugString): (WebKit::WebExtensionAPITest::assertDeepEq): (WebKit::WebExtensionAPITest::assertEq): (WebKit::WebExtensionAPITest::assertRejects): (WebKit::WebExtensionAPITest::assertThrows): * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITest.h: Added. * Source/WebKit/WebProcess/Extensions/Bindings/Cocoa/JSWebExtensionWrapperCocoa.mm: (WebKit::serializeJSObject): Use value instead of object for clarity. (functionObjectByName): Removed. (-[JSValue _toJSONString]): Added. (-[JSValue _toSortedJSONString]): Added. (-[JSValue _isFunction]): Added. (-[JSValue _isRegularExpression]): Added. (-[JSValue _isThenable]): Simplified by using JSValue instead of functionObjectByName(). (-[JSValue _awaitThenableResolutionWithCompletionHandler:]): Use better JSValue type for parameters. * Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.h: * Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm: (_installAutomaticExceptions): Check for ValuesAllowed attribute to about isObject check. (_javaScriptTypeCondition): Ditto. * Source/WebKit/WebProcess/Extensions/Bindings/Scripts/IDLAttributes.json: Added ValuesAllowed. * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl: Added test attribute. * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPITest.idl: Added. * Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp: (WebKit::WebExtensionContextProxy::getOrCreate): Set testingMode. * Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h: * Tools/TestWebKitAPI/SourcesCocoa.txt: * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm: Added. (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIRuntime.mm: Added. (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h: Added. (TestWebKitAPI::Util::constructScript): * Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm: Added. (-[TestWebExtensionManager initWithExtension:]): (-[TestWebExtensionManager respondsToSelector:]): (-[TestWebExtensionManager forwardingTargetForSelector:]): (-[TestWebExtensionManager load]): (-[TestWebExtensionManager run]): (-[TestWebExtensionManager loadAndRun]): (-[TestWebExtensionManager _webExtensionController:recordTestAssertionResult:withMessage:andSourceURL:lineNumber:forExtensionContext:]): (-[TestWebExtensionManager _webExtensionController:recordTestEqualityResult:expectedValue:actualValue:withMessage:andSourceURL:lineNumber:forExtensionContext:]): (-[TestWebExtensionManager _webExtensionController:recordTestMessage:andSourceURL:lineNumber:forExtensionContext:]): (-[TestWebExtensionManager _webExtensionController:recordTestYieldedWithMessage:andSourceURL:lineNumber:forExtensionContext:]): (-[TestWebExtensionManager _webExtensionController:recordTestFinishedWithResult:message:andSourceURL:lineNumber:forExtensionContext:]): (TestWebKitAPI::Util::loadAndRunExtension): Canonical link: https://commits.webkit.org/256923@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes