[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