[webkit-changes] [WebKit/WebKit] 3d99c5: Remote Web Inspector: [Cocoa] `inspectable` API

Patrick Angle noreply at github.com
Fri Oct 14 14:43:09 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3d99c5a137548afb19025ccd16979e9357a8cde7
      https://github.com/WebKit/WebKit/commit/3d99c5a137548afb19025ccd16979e9357a8cde7
  Author: Patrick Angle <pangle at apple.com>
  Date:   2022-10-14 (Fri, 14 Oct 2022)

  Changed paths:
    M Source/JavaScriptCore/API/JSContext.h
    M Source/JavaScriptCore/API/JSContext.mm
    M Source/JavaScriptCore/API/JSContextPrivate.h
    M Source/JavaScriptCore/API/JSContextRef.cpp
    M Source/JavaScriptCore/API/JSContextRef.h
    M Source/JavaScriptCore/API/JSContextRefPrivate.h
    M Source/JavaScriptCore/API/JSRemoteInspector.cpp
    M Source/JavaScriptCore/API/JSRemoteInspector.h
    M Source/JavaScriptCore/API/WebKitAvailability.h
    M Source/JavaScriptCore/API/tests/testIncludes.m
    M Source/JavaScriptCore/config.h
    M Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp
    M Source/JavaScriptCore/inspector/remote/RemoteInspectionTarget.cpp
    M Source/JavaScriptCore/inspector/remote/RemoteInspectionTarget.h
    M Source/JavaScriptCore/inspector/remote/RemoteInspector.h
    M Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h
    M Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm
    M Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp
    M Source/JavaScriptCore/inspector/remote/socket/RemoteInspectorSocket.cpp
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
    M Source/JavaScriptCore/runtime/JSGlobalObject.h
    M Source/WTF/wtf/cocoa/RuntimeApplicationChecksCocoa.h
    M Source/WebCore/config.h
    M Source/WebCore/inspector/InspectorController.cpp
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebKit2Prefix.h
    M Source/WebKitLegacy/mac/WebView/WebView.mm
    M Tools/MiniBrowser/mac/WK2BrowserWindowController.m
    M Tools/MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m
    M Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm

  Log Message:
  -----------
  Remote Web Inspector: [Cocoa] `inspectable` API
https://bugs.webkit.org/show_bug.cgi?id=245986
rdar://100736163

Reviewed by Devin Rousso.

Add API to allow applications to explicitly mark a WKWebView or JSContext as inspectable. This flips assumptions about
inspectability of content. Previously the default state for inspectability was `true`, with a platform-specific deamon
making decisions about which applications would actually be inspectable on a system. This patch moves that decision into
WebKit/WebCore/JavaScriptCore instead, and flips the default for inspectability to be `false` unless an application
would have previously been always-inspectable. Those cases include:
- Applications with the `get-task-allow`/`com.apple.security.get-task-allow` development entitlements when linked
against an SDK without the API.
- Applications with the `com.apple.webinspector.allow`/`com.apple.private.webinspector.allow-remote-inspection`
entitlements.

These entitlements will no longer be necessary to enable inspection, and instead the new `inspectable` API should be
used.

* Source/JavaScriptCore/API/JSContext.h:
* Source/JavaScriptCore/API/JSContext.mm:
(-[JSContext inspectable]):
(-[JSContext setInspectable:]):
(-[JSContext _remoteInspectionEnabled]):
(-[JSContext _setRemoteInspectionEnabled:]):
* Source/JavaScriptCore/API/JSContextPrivate.h:
* Source/JavaScriptCore/API/JSContextRef.cpp:
(JSGlobalContextCreateInGroup):
(JSGlobalContextIsInspectable):
(JSGlobalContextSetInspectable):
(JSGlobalContextGetRemoteInspectionEnabled):
(JSGlobalContextSetRemoteInspectionEnabled):
* Source/JavaScriptCore/API/JSContextRef.h:
* Source/JavaScriptCore/API/JSContextRefPrivate.h:
* Source/JavaScriptCore/API/JSRemoteInspector.cpp:
(mainProcessHasEntitlement):
(defaultStateForRemoteInspectionEnabledByDefault):
(JSRemoteInspectorGetInspectionEnabledByDefault):
* Source/JavaScriptCore/API/JSRemoteInspector.h:
* Source/JavaScriptCore/API/WebKitAvailability.h:
* Source/JavaScriptCore/API/tests/testIncludes.m:
* Source/JavaScriptCore/config.h:
* Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::developerExtrasEnabled const):
* Source/JavaScriptCore/inspector/remote/RemoteInspectionTarget.cpp:
(Inspector::RemoteInspectionTarget::remoteControlAllowed const):
(Inspector::RemoteInspectionTarget::inspectable const):
(Inspector::RemoteInspectionTarget::setInspectable):
(Inspector::RemoteInspectionTarget::pauseWaitingForAutomaticInspection):
(Inspector::RemoteInspectionTarget::setRemoteDebuggingAllowed): Deleted.
* Source/JavaScriptCore/inspector/remote/RemoteInspectionTarget.h:
* Source/JavaScriptCore/inspector/remote/RemoteInspector.h:
* Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:
* Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:
(Inspector::globalStateForNotify):
(Inspector::RemoteInspector::singleton):
(Inspector::RemoteInspector::parentProcessAuditToken):
(Inspector::RemoteInspector::listingForInspectionTarget const):
(Inspector::globalAutomaticInspectionState): Deleted.
* Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp:
(Inspector::RemoteInspector::listingForInspectionTarget const):
* Source/JavaScriptCore/inspector/remote/socket/RemoteInspectorSocket.cpp:
(Inspector::RemoteInspector::listingForInspectionTarget const):
* Source/JavaScriptCore/jsc.cpp:
(CommandLine::parseArguments):
(runJSC):
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::setInspectable):
(JSC::JSGlobalObject::inspectable const):
(JSC::JSGlobalObject::setRemoteDebuggingEnabled): Deleted.
(JSC::JSGlobalObject::remoteDebuggingEnabled const): Deleted.
* Source/JavaScriptCore/runtime/JSGlobalObject.h:
* Source/WTF/wtf/cocoa/RuntimeApplicationChecksCocoa.h:
* Source/WebCore/config.h:
* Source/WebCore/inspector/InspectorController.cpp:
(WebCore::InspectorController::enabled const):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::inspectable const):
(WebCore::Page::setInspectable):
(WebCore::Page::remoteInspectionAllowed const): Deleted.
(WebCore::Page::setRemoteInspectionAllowed): Deleted.
* Source/WebCore/page/Page.h:
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageGetAllowsRemoteInspection):
(WKPageSetAllowsRemoteInspection):
* Source/WebKit/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:
(API::SharedJSContext::ensureContext):
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView inspectable]):
(-[WKWebView setInspectable:]):
(-[WKWebView _allowsRemoteInspection]):
(-[WKWebView _setAllowsRemoteInspection:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:
(-[WKInspectorViewController webView]):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::m_fullscreenVideoTextRecognitionTimer):
(WebKit::WebPageProxy::inspectable const):
(WebKit::WebPageProxy::setInspectable):
(WebKit::WebPageProxy::allowsRemoteInspection const): Deleted.
(WebKit::WebPageProxy::setAllowsRemoteInspection): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebKit2Prefix.h:
* Source/WebKitLegacy/mac/WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
(-[WebView allowsRemoteInspection]):
(-[WebView setAllowsRemoteInspection:]):
* Tools/MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController awakeFromNib]):
* Tools/MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m:
(-[WebViewController createWebView]):
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
(-[TestRunnerWKWebView initWithFrame:configuration:]):

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




More information about the webkit-changes mailing list