[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