[webkit-changes] [WebKit/WebKit] 1e7cb6: Don't fire window or tab events until the browser ...

Timothy Hatcher noreply at github.com
Mon Feb 5 10:09:00 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1e7cb6de6869907b5b840532a65c37783bf9b41e
      https://github.com/WebKit/WebKit/commit/1e7cb6de6869907b5b840532a65c37783bf9b41e
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2024-02-05 (Mon, 05 Feb 2024)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm

  Log Message:
  -----------
  Don't fire window or tab events until the browser calls didOpenTab: and didOpenWindow:.
https://webkit.org/b/268671
rdar://122143707

Reviewed by Brian Weinstein.

Be more protective of when we fire window and tab events, so we never fire events
if the window or tab hasn't fired the onCreated event. Also add more smart pointer
use, assertions, and error logging to catch misuse.

While fixing this, I discovered the WKWebExtensionAPITabs.QueryWithPrivateAccess
test was not correct and was missing the tests for the incognito windows. Fixed
things up there, and added optional chaining to avoid exceptions when things are
incorrectly undefined / null.

* Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionContext.mm:
(toAPI):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::postAsyncNotification):
(WebKit::WebExtensionContext::removeGrantedPermissionMatchPatterns):
(WebKit::WebExtensionContext::getOrCreateWindow const):
(WebKit::WebExtensionContext::getWindow const):
(WebKit::WebExtensionContext::forgetWindow const):
(WebKit::WebExtensionContext::getOrCreateTab const):
(WebKit::WebExtensionContext::getTab const):
(WebKit::WebExtensionContext::getCurrentTab const):
(WebKit::WebExtensionContext::forgetTab const):
(WebKit::WebExtensionContext::populateWindowsAndTabs):
(WebKit::WebExtensionContext::isValidWindow):
(WebKit::WebExtensionContext::isValidTab):
(WebKit::WebExtensionContext::openWindows const):
(WebKit::WebExtensionContext::openTabs const):
(WebKit::WebExtensionContext::frontmostWindow const):
(WebKit::WebExtensionContext::didOpenWindow):
(WebKit::WebExtensionContext::didCloseWindow):
(WebKit::WebExtensionContext::didFocusWindow):
(WebKit::WebExtensionContext::didOpenTab):
(WebKit::WebExtensionContext::didCloseTab):
(WebKit::WebExtensionContext::didActivateTab):
(WebKit::WebExtensionContext::didSelectOrDeselectTabs):
(WebKit::WebExtensionContext::didMoveTab):
(WebKit::WebExtensionContext::didReplaceTab):
(WebKit::WebExtensionContext::didChangeTabProperties):
(WebKit::WebExtensionContext::resourceLoadDidSendRequest):
(WebKit::WebExtensionContext::resourceLoadDidPerformHTTPRedirection):
(WebKit::WebExtensionContext::resourceLoadDidReceiveChallenge):
(WebKit::WebExtensionContext::resourceLoadDidReceiveResponse):
(WebKit::WebExtensionContext::resourceLoadDidCompleteWithError):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionTabCocoa.mm:
(WebKit::WebExtensionTab::parameters const):
(WebKit::WebExtensionTab::index const):
(WebKit::WebExtensionTab::parentTab const):
(WebKit::WebExtensionTab::mainWebView const):
(WebKit::WebExtensionTab::webViews const):
(WebKit::WebExtensionTab::isOpen const):
(WebKit::WebExtensionTab::isActive const):
(WebKit::WebExtensionTab::isPrivate const):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionWindowCocoa.mm:
(WebKit::WebExtensionWindow::activeTab const):
(WebKit::WebExtensionWindow::isOpen const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::openTabs const): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
(WebKit::WebExtensionTab::didOpen):
(WebKit::WebExtensionTab::didClose):
* Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h:
(WebKit::WebExtensionWindow::didOpen):
(WebKit::WebExtensionWindow::didClose):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm:
(TestWebKitAPI::TEST):

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




More information about the webkit-changes mailing list