Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add interfaces and stubs for the Web Extensions DevTools APIs. #24091

Merged
merged 1 commit into from
Feb 8, 2024

Conversation

xeenon
Copy link
Contributor

@xeenon xeenon commented Feb 8, 2024

2e8b1a8f95355a402aabc5616497df31b4ec1146

Add support for loading and connecting the Web Extension devtools background page.
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by NOBODY (OOPS!).

Hook up loading the devtools_page when Web Inspector opens, or an extension is loaded
when Inspectors are already open during load, or private browsing is toggled.

* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h:
* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::hasInspectorBackgroundPage):
(WebKit::WebExtension::inspectorBackgroundPagePath):
(WebKit::WebExtension::populateInspectorPropertiesIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::load):
(WebKit::WebExtensionContext::setHasAccessInPrivateBrowsing):
(WebKit::WebExtensionContext::inspectorBackgroundPageIdentifiers const):
(WebKit::WebExtensionContext::decidePolicyForNavigationAction):
(WebKit::WebExtensionContext::webViewWebContentProcessDidTerminate):
(WebKit::WebExtensionContext::inspectorBackgroundPageURL const):
(WebKit::WebExtensionContext::openInspectors const):
(WebKit::WebExtensionContext::loadedInspectors const):
(WebKit::WebExtensionContext::isInspectorBackgroundPage const):
(WebKit::WebExtensionContext::loadInspectorBackgroundPagesDuringLoad):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPages):
(WebKit::WebExtensionContext::loadInspectorBackgroundPagesForPrivateBrowsing):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPagesForPrivateBrowsing):
(WebKit::WebExtensionContext::loadInspectorBackgroundPage):
(WebKit::WebExtensionContext::unloadInspectorBackgroundPage):
(WebKit::WebExtensionContext::inspectorWillOpen):
(WebKit::WebExtensionContext::inspectorWillClose):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::load):
(WebKit::WebExtensionController::unload):
(WebKit::WebExtensionController::unloadAll):
(WebKit::WebExtensionController::addProcessPool):
(WebKit::WebExtensionController::removeProcessPool):
(WebKit::WebExtensionController::addUserContentController):
(WebKit::WebExtensionController::removeUserContentController):
(WebKit::WebExtensionController::removeWebsiteDataStore):
(WebKit::WebExtensionController::cookiesDidChange):
(WebKit::WebExtensionController::extensionContext const):
(WebKit::WebExtensionController::extensions const):
(WebKit::WebExtensionController::addItemsToContextMenu):
(WebKit::WebExtensionController::didStartProvisionalLoadForFrame):
(WebKit::WebExtensionController::didCommitLoadForFrame):
(WebKit::WebExtensionController::didFinishLoadForFrame):
(WebKit::WebExtensionController::didFailLoadForFrame):
(WebKit::WebExtensionController::handleContentRuleListNotification):
(WebKit::WebExtensionController::purgeOldMatchedRules):
(WebKit::WebExtensionController::resourceLoadDidSendRequest):
(WebKit::WebExtensionController::resourceLoadDidPerformHTTPRedirection):
(WebKit::WebExtensionController::resourceLoadDidReceiveChallenge):
(WebKit::WebExtensionController::resourceLoadDidReceiveResponse):
(WebKit::WebExtensionController::resourceLoadDidCompleteWithError):
(WebKit::WebExtensionController::inspectorWillOpen):
(WebKit::WebExtensionController::inspectorWillClose):
* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp:
(WebKit::WebInspectorUIProxy::openLocalInspectorFrontend):
(WebKit::WebInspectorUIProxy::closeFrontendPageAndWindow):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm:
(WebKit::WebExtensionAPIDevToolsInspectedWindow::tabId):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h:
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::getOrCreate):
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm:
(WebKit::WebExtensionControllerProxy::globalObjectIsAvailableForFrame):
(WebKit::WebExtensionControllerProxy::serviceWorkerGlobalObjectIsAvailableForFrame):
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::tabIdentifier const):
(WebKit::WebExtensionContextProxy::addInspectorBackgroundPageIdentifier):
(WebKit::WebExtensionContextProxy::addInspectorBackgroundPage):
(WebKit::WebExtensionContextProxy::isInspectorBackgroundPage const):
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm: Added.
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSuspendAllMediaPlayback.mm:
* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.mm:
(-[TestWebExtensionTab initWithWindow:extensionController:]):

@xeenon xeenon self-assigned this Feb 8, 2024
@xeenon xeenon added the WebKit Extensions Bugs related to extension support. label Feb 8, 2024
*/

[
Conditional=WK_WEB_EXTENSIONS & INSPECTOR_EXTENSIONS,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't know it was supposed to be & instead of && for the conditional here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that's what the IDL parser requires. It turns into:

#if ENABLE(INSPECTOR_EXTENSIONS) && ENABLE(WK_WEB_EXTENSIONS)

@xeenon xeenon added the unsafe-merge-queue Applied to send a pull request to merge-queue, but skip building and testing label Feb 8, 2024
https://webkit.org/b/246485
rdar://problem/114823326

Reviewed by Brian Weinstein.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsCocoa.mm: Added.
(WebKit::WebExtensionAPIDevTools::inspectedWindow):
(WebKit::WebExtensionAPIDevTools::network):
(WebKit::WebExtensionAPIDevTools::panels):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsElementsPanelCocoa.mm: Added.
(WebKit::WebExtensionAPIDevToolsElementsPanel::createSidebarPane):
(WebKit::WebExtensionAPIDevToolsElementsPanel::onSelectionChanged):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionPanelCocoa.mm: Added.
(WebKit::WebExtensionAPIDevToolsExtensionPanel::onShown):
(WebKit::WebExtensionAPIDevToolsExtensionPanel::onHidden):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsExtensionSidebarPaneCocoa.mm: Added.
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setPage):
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setExpression):
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::setObject):
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::onShown):
(WebKit::WebExtensionAPIDevToolsExtensionSidebarPane::onHidden):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsInspectedWindowCocoa.mm: Added.
(WebKit::WebExtensionAPIDevToolsInspectedWindow::isPropertyAllowed):
(WebKit::WebExtensionAPIDevToolsInspectedWindow::eval):
(WebKit::WebExtensionAPIDevToolsInspectedWindow::reload):
(WebKit::WebExtensionAPIDevToolsInspectedWindow::getResources):
(WebKit::WebExtensionAPIDevToolsInspectedWindow::tabId):
(WebKit::WebExtensionAPIDevToolsInspectedWindow::onResourceAdded):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsNetworkCocoa.mm: Added.
(WebKit::WebExtensionAPIDevToolsNetwork::getHAR):
(WebKit::WebExtensionAPIDevToolsNetwork::onNavigated):
(WebKit::WebExtensionAPIDevToolsNetwork::onRequestFinished):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDevToolsPanelsCocoa.mm: Added.
(WebKit::WebExtensionAPIDevToolsPanels::createTab):
(WebKit::WebExtensionAPIDevToolsPanels::elements):
(WebKit::WebExtensionAPIDevToolsPanels::themeName):
(WebKit::WebExtensionAPIDevToolsPanels::onThemeChanged):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm:
(WebKit::WebExtensionAPIExtension::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINamespaceCocoa.mm:
(WebKit::WebExtensionAPINamespace::isPropertyAllowed):
(WebKit::WebExtensionAPINamespace::declarativeNetRequest):
(WebKit::WebExtensionAPINamespace::devtools):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm:
(WebKit::WebExtensionAPIRuntime::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm:
(WebKit::WebExtensionAPIStorageArea::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageCocoa.mm:
(WebKit::WebExtensionAPIStorage::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm:
(WebKit::WebExtensionAPITabs::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm:
(WebKit::WebExtensionAPIWindows::isPropertyAllowed):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevTools.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsElementsPanel.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionPanel.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsExtensionSidebarPane.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsInspectedWindow.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsNetwork.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIDevToolsPanels.h: Added.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINamespace.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorage.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h:
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h:
* Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm:
(_callString):
(_dynamicAttributesImplementation):
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevTools.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsElementsPanel.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionPanel.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsExtensionSidebarPane.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsInspectedWindow.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsNetwork.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIDevToolsPanels.idl: Added.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINamespace.idl:

Canonical link: https://commits.webkit.org/274306@main
@webkit-commit-queue
Copy link
Collaborator

Committed 274306@main (91a979b): https://commits.webkit.org/274306@main

Reviewed commits have been landed. Closing PR #24091 and removing active labels.

@webkit-commit-queue webkit-commit-queue merged commit 91a979b into WebKit:main Feb 8, 2024
@webkit-commit-queue webkit-commit-queue removed the unsafe-merge-queue Applied to send a pull request to merge-queue, but skip building and testing label Feb 8, 2024
@xeenon xeenon deleted the bug/246485 branch February 8, 2024 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
WebKit Extensions Bugs related to extension support.
Projects
None yet
4 participants