[webkit-changes] [WebKit/WebKit] 8f7a6b: Add browser.test interface for Web Extension API t...
Timothy Hatcher
noreply at github.com
Mon Nov 21 23:38:17 PST 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8f7a6bbb4ad4d9fd9a99bc158ade012bbf1a2c64
https://github.com/WebKit/WebKit/commit/8f7a6bbb4ad4d9fd9a99bc158ade012bbf1a2c64
Author: Timothy Hatcher <timothy at 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
More information about the webkit-changes
mailing list