[webkit-changes] [WebKit/WebKit] 2713db: Add support for more browser.extension incognito W...

Timothy Hatcher noreply at github.com
Mon Oct 9 11:56:12 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2713dbbe432dc19ca160330e3a76ac4296021d7c
      https://github.com/WebKit/WebKit/commit/2713dbbe432dc19ca160330e3a76ac4296021d7c
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2023-10-09 (Mon, 09 Oct 2023)

  Changed paths:
    A Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.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/UIProcess/Extensions/WebExtensionController.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h
    M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIExtension.idl
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm

  Log Message:
  -----------
  Add support for more browser.extension incognito Web Extension APIs.
https://bugs.webkit.org/show_bug.cgi?id=262848
rdar://problem/116629181

Reviewed by Brady Eidson.

- Fixes some more cases that needed to check if content can be injected in private tabs.
- Added support for the incognito APIs on browser.extension.
- Added support for file scheme API that always return false.
- Added better window and tab test support, specifically for closing windows and tabs.

* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIExtensionCocoa.mm: Added.
(WebKit::WebExtensionContext::extensionIsAllowedIncognitoAccess):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::setHasAccessInPrivateBrowsing): Added.
(WebKit::WebExtensionContext::removeGrantedPermissions): Return a bool.
(WebKit::WebExtensionContext::removeGrantedPermissionMatchPatterns): Ditto.
(WebKit::WebExtensionContext::removeDeniedPermissions): Ditto.
(WebKit::WebExtensionContext::removeDeniedPermissionMatchPatterns): Ditto.
(WebKit::WebExtensionContext::removePermissions): Ditto.
(WebKit::WebExtensionContext::removePermissionMatchPatterns): Ditto.
(WebKit::WebExtensionContext::removeExpired): Call updateInjectedContent to remove scripts from expired patterns.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::addUserContentController): Track private controllers too. Only add injected content
if the extension has access to that controller.
(WebKit::WebExtensionController::removeUserContentController): Remove from private controller set.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const): Infer return type.
(WebKit::WebExtensionContext::pageListensForEvent const): Check hasAccessInPrivateBrowsing().
(WebKit::WebExtensionContext::processes const): Ditto.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::setHasAccessInPrivateBrowsing): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
(WebKit::WebExtensionController::allUserContentControllers const):
(WebKit::WebExtensionController::allPrivateUserContentControllers const):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm:
(WebKit::WebExtensionAPIExtension::getURL):
(WebKit::WebExtensionAPIExtension::isInIncognitoContext): Added.
(WebKit::WebExtensionAPIExtension::isAllowedFileSchemeAccess): Added.
(WebKit::WebExtensionAPIExtension::isAllowedIncognitoAccess): Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h:
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIExtension.idl:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIExtension.mm:
(TestWebKitAPI::TEST): Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST): Use class tab type.
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionManager initForExtension:]): Default to an empty yield message.
(-[TestWebExtensionManager closeWindow:]): Close all tabs, set defaultWindow to the next window and focus it.
(-[TestWebExtensionManager run]): Clear yield message.
(-[TestWebExtensionManager runForTimeInterval:]): Ditto.
(-[TestWebExtensionManager _webExtensionController:recordTestYieldedWithMessage:andSourceURL:lineNumber:forExtensionContext:]):
Always set a non-nil yield message.
(-[TestWebExtensionTab initWithWindow:extensionController:]): Use class type.
(-[TestWebExtensionTab activateForWebExtensionContext:completionHandler:]): Ditto.
(-[TestWebExtensionTab isSelectedForWebExtensionContext:]): Ditto.
(-[TestWebExtensionTab closeForWebExtensionContext:completionHandler:]): Ditto.
(-[TestWebExtensionWindow tabs]): Ditto.
(-[TestWebExtensionWindow setTabs:]): Close and open tabs as needed.
(-[TestWebExtensionWindow openNewTabAtIndex:]): Use class type.
(-[TestWebExtensionWindow closeTab:]): Call closeTab:windowIsClosing:.
(-[TestWebExtensionWindow closeTab:windowIsClosing:]): Added. Close the web view. Update activeTab if needed.
(-[TestWebExtensionWindow replaceTab:withTab:]): Close the web view on the replaced tab.
(-[TestWebExtensionWindow moveTab:toIndex:]): Use class type.

Canonical link: https://commits.webkit.org/269087@main




More information about the webkit-changes mailing list