Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8f7a6bbb4ad4d9fd9a99bc158ade012bbf1a2c64
https://github.com/WebKit/WebKit/commit/8f7a6bbb4ad4d9fd9a99bc158ade012bbf1a2c64
Author: Timothy Hatcher <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes