Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1d2141761faac89e4a85fc49cf2f9fc3fb15c145
https://github.com/WebKit/WebKit/commit/1d2141761faac89e4a85fc49cf2f9fc3fb15c145
Author: Brian Weinstein <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WTF/wtf/PlatformEnableCocoa.h
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
A Source/WebKit/Shared/Extensions/WebExtensionOffscreenDocumentParameters.h
A
Source/WebKit/Shared/Extensions/WebExtensionOffscreenDocumentParameters.serialization.in
M Source/WebKit/Shared/Extensions/WebExtensionPermission.cpp
M Source/WebKit/Shared/Extensions/WebExtensionPermission.h
M Source/WebKit/SourcesCocoa.txt
A
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIOffscreenCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtension.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/WebExtensionAPIOffscreenCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIKeys.h
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIOffscreen.h
M
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl
A
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIOffscreen.idl
M Tools/TestWebKitAPI/SourcesCocoa.txt
A Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIOffscreen.mm
Log Message:
-----------
Web Extensions: Add support for the offscreen API
https://bugs.webkit.org/show_bug.cgi?id=321216
Work towards: rdar://184269255
Reviewed by Kiara Rose and Timothy Hatcher.
This PR adds the start of support for the Web Extensions offscreen API,
described in:
https://developer.chrome.com/docs/extensions/reference/api/offscreen
The API is currently compiled off, and once it is compiled on, will be in
testable mode to start.
This PR doesn't actually implement the API functionality, it just puts us into
a position to do so. We now support:
- The `offscreen` permission gating access to `browser.offscreen`.
- Argument validation for `browser.offscreen.createDocument`.
- Web Process -> UI process communication for the `browser.offscreen` APIs.
- Tests for presence of the APIs and argument validation for
`browser.offscreen.createDocument`.
Future PRs will implement actually creating and loading a web view in the UI
process, and implementing the other
APIs.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIOffscreen.mm
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/PlatformEnableCocoa.h:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Shared/Extensions/WebExtensionOffscreenDocumentParameters.h:
Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.
*
Source/WebKit/Shared/Extensions/WebExtensionOffscreenDocumentParameters.serialization.in:
Added.
* Source/WebKit/Shared/Extensions/WebExtensionPermission.cpp:
(WebKit::WebExtensionPermission::offscreen):
* Source/WebKit/Shared/Extensions/WebExtensionPermission.h:
* Source/WebKit/SourcesCocoa.txt:
*
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIOffscreenCocoa.mm:
Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.
(WebKit::WebExtensionContext::isOffscreenMessageAllowed):
(WebKit::WebExtensionContext::offscreenCreateDocument):
(WebKit::WebExtensionContext::offscreenCloseDocument):
(WebKit::WebExtensionContext::offscreenHasDocument):
* Source/WebKit/UIProcess/Extensions/WebExtension.cpp:
(WebKit::WebExtension::supportedPermissions):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
*
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::offscreen):
*
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIOffscreenCocoa.mm:
Added.
(WebKit::WebExtensionAPIOffscreen::createDocument):
(WebKit::WebExtensionAPIOffscreen::closeDocument):
(WebKit::WebExtensionAPIOffscreen::hasDocument):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIKeys.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIOffscreen.h: Copied
from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIOffscreen.idl:
Copied from Source/WebKit/Shared/Extensions/WebExtensionPermission.h.
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPIOffscreen.mm:
Added.
(TestWebKitAPI::WKWebExtensionAPIOffscreen::WKWebExtensionAPIOffscreen):
(TestWebKitAPI::WKWebExtensionAPIOffscreen::getManagerFor):
(TestWebKitAPI::TEST_F(WKWebExtensionAPIOffscreen,
APISUnavailableWhenManifestDoesNotRequest)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPIOffscreen,
OffscreenAPIAvailableWhenManifestRequests)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPIOffscreen,
OffscreenCreateDocumentArgumentValidation)):
Canonical link: https://commits.webkit.org/318833@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications