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

Reply via email to