Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d2111fcd749ce5779f95a077b9d592ac46679aa7
      
https://github.com/WebKit/WebKit/commit/d2111fcd749ce5779f95a077b9d592ac46679aa7
  Author: Qianlang Chen <[email protected]>
  Date:   2026-01-30 (Fri, 30 Jan 2026)

  Changed paths:
    M Source/JavaScriptCore/SaferCPPExpectations/ForwardDeclCheckerExpectations
    M Source/JavaScriptCore/inspector/InjectedScriptManager.h
    M Source/JavaScriptCore/inspector/InspectorAgentBase.h
    M Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorAuditAgent.h
    M Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h
    M Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h
    M Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.h
    M Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h
    M Source/JavaScriptCore/inspector/agents/JSGlobalObjectAuditAgent.cpp
    M Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp
    M Source/WebCore/SaferCPPExpectations/ForwardDeclCheckerExpectations
    M Source/WebCore/inspector/FrameInspectorController.cpp
    M Source/WebCore/inspector/FrameInspectorController.h
    M Source/WebCore/inspector/PageInspectorController.cpp
    M Source/WebCore/inspector/WebInjectedScriptManager.cpp
    M Source/WebCore/inspector/WebInjectedScriptManager.h
    M Source/WebCore/inspector/WorkerInspectorController.cpp
    M Source/WebCore/inspector/agents/InspectorAnimationAgent.cpp
    M Source/WebCore/inspector/agents/InspectorAnimationAgent.h
    M Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp
    M Source/WebCore/inspector/agents/InspectorCanvasAgent.h
    M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
    M Source/WebCore/inspector/agents/InspectorDOMAgent.h
    M Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp
    M Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h
    M Source/WebCore/inspector/agents/InspectorIndexedDBAgent.cpp
    M Source/WebCore/inspector/agents/InspectorIndexedDBAgent.h
    M Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
    M Source/WebCore/inspector/agents/InspectorNetworkAgent.h
    M Source/WebCore/inspector/agents/WebConsoleAgent.cpp
    M Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp
    M Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp

  Log Message:
  -----------
  Web Inspector: Use CheckedRef/Ptr of InjectedScriptManager for safer C++
https://webkit.org/b/305992

Reviewed by Anne van Kesteren.

Address all places where (Web)InjectedScriptManager is stored in a
member variable as a raw reference, mostly in inspector agents, to use
CheckedRef instead. These agents do not outlive the page and frame
targets.

No new tests: no expected change in observable behavior.

* Source/WebCore/inspector/WebInjectedScriptManager.h:
Remove the FIXME that suggests making the base class InjectedScriptManager
ref-counted, as the base class currently only ever has a unique owner
(JSGlobalObjectInspectorController).

Keep using a Ref rather than CheckedRef in FrameInspectorController
because, despite the frame uses its parent page's ISM, it's actually
possible and a well-defined case that a WebCore::LocalFrame may outlive
its WebCore::Page (e.g. due to lambda captures). Therefore, we can't
expect the FrameIC to always be destroyed before the parent PageIC,
and we must let WebInjectedScriptManager stay ref-counted.

* Source/JavaScriptCore/SaferCPPExpectations/ForwardDeclCheckerExpectations:
* Source/WebCore/SaferCPPExpectations/ForwardDeclCheckerExpectations:
Unmark progressed file.

* Source/JavaScriptCore/inspector/InjectedScriptManager.h:
* Source/JavaScriptCore/inspector/InspectorAgentBase.h:
* Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::jsAgentContext):
* Source/JavaScriptCore/inspector/agents/InspectorAuditAgent.h:
* Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::developerExtrasEnabled const):
(Inspector::InspectorConsoleAgent::clearMessages):
* Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h:
* Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::removeBreakpoint):
(Inspector::InspectorDebuggerAgent::getFunctionDetails):
(Inspector::InspectorDebuggerAgent::evaluateOnCallFrame):
(Inspector::InspectorDebuggerAgent::debuggerScopeExtensionObject):
(Inspector::InspectorDebuggerAgent::didPause):
(Inspector::InspectorDebuggerAgent::breakpointActionProbe):
(Inspector::InspectorDebuggerAgent::didContinue):
(Inspector::InspectorDebuggerAgent::clearExceptionValue):
* Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h:
* Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp:
(Inspector::InspectorHeapAgent::getPreview):
(Inspector::InspectorHeapAgent::getRemoteObject):
* Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.h:
* Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::awaitPromise):
(Inspector::InspectorRuntimeAgent::callFunctionOn):
(Inspector::InspectorRuntimeAgent::getPreview):
(Inspector::InspectorRuntimeAgent::getProperties):
(Inspector::InspectorRuntimeAgent::getDisplayableProperties):
(Inspector::InspectorRuntimeAgent::getCollectionEntries):
(Inspector::InspectorRuntimeAgent::setSavedResultAlias):
(Inspector::InspectorRuntimeAgent::releaseObject):
(Inspector::InspectorRuntimeAgent::releaseObjectGroup):
* Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h:
* Source/WebCore/inspector/FrameInspectorController.cpp:
(WebCore::FrameInspectorController::frameAgentContext):
* Source/WebCore/inspector/FrameInspectorController.h:
* Source/WebCore/inspector/PageInspectorController.cpp:
(WebCore::PageInspectorController::pageAgentContext):
* Source/WebCore/inspector/WebInjectedScriptManager.cpp:
(WebCore::WebInjectedScriptManager::create):
* Source/WebCore/inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::workerAgentContext):
* Source/WebCore/inspector/agents/InspectorAnimationAgent.cpp:
(WebCore::InspectorAnimationAgent::resolveAnimation):
* Source/WebCore/inspector/agents/InspectorAnimationAgent.h:
* Source/WebCore/inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::resolveContext):
* Source/WebCore/inspector/agents/InspectorCanvasAgent.h:
* Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::focusNode):
(WebCore::InspectorDOMAgent::nodeForObjectId):
(WebCore::InspectorDOMAgent::resolveNode):
* Source/WebCore/inspector/agents/InspectorDOMAgent.h:
* Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
(WebCore::InspectorDOMDebuggerAgent::didHandleEvent):
* Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h:
* Source/WebCore/inspector/agents/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::requestData):
* Source/WebCore/inspector/agents/InspectorIndexedDBAgent.h:
* Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::resolveWebSocket):
* Source/WebCore/inspector/agents/InspectorNetworkAgent.h:
* Source/WebCore/inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::frameWindowDiscarded):
Use CheckedRef to replace InjectedScriptManager& members.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to