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

Reply via email to