Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3db54ba8bc59c2b0226d5400edb63a60a2b86a4e
      
https://github.com/WebKit/WebKit/commit/3db54ba8bc59c2b0226d5400edb63a60a2b86a4e
  Author: Basuke Suzuki <[email protected]>
  Date:   2025-11-13 (Thu, 13 Nov 2025)

  Changed paths:
    M Source/JavaScriptCore/API/APIUtils.h
    M Source/JavaScriptCore/API/JSBase.cpp
    M Source/JavaScriptCore/API/JSValue.mm
    M Source/JavaScriptCore/inspector/InjectedScript.cpp
    M Source/JavaScriptCore/inspector/InjectedScriptBase.cpp
    M Source/JavaScriptCore/inspector/InjectedScriptBase.h
    M Source/JavaScriptCore/inspector/InjectedScriptManager.cpp
    M Source/JavaScriptCore/inspector/InjectedScriptManager.h
    M Source/JavaScriptCore/inspector/InjectedScriptModule.cpp
    M Source/JavaScriptCore/inspector/InspectorAgentBase.h
    M Source/JavaScriptCore/inspector/InspectorEnvironment.h
    M Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h
    M Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorAgent.h
    M Source/JavaScriptCore/inspector/agents/InspectorAuditAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp
    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/InspectorScriptProfilerAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorScriptProfilerAgent.h
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
    M Source/JavaScriptCore/runtime/JSGlobalObject.h
    M Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp
    M Source/WebCore/inspector/FrameInspectorController.h
    M Source/WebCore/inspector/InspectorController.h
    M Source/WebCore/inspector/InspectorWebAgentBase.h
    M Source/WebCore/inspector/InstrumentingAgents.h
    M Source/WebCore/inspector/WorkerInspectorController.h
    M Source/WebCore/inspector/agents/InspectorAnimationAgent.cpp
    M Source/WebCore/inspector/agents/InspectorCPUProfilerAgent.cpp
    M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
    M Source/WebCore/inspector/agents/InspectorMemoryAgent.cpp
    M Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
    M Source/WebCore/inspector/agents/InspectorPageAgent.cpp
    M Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp
    M Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp
    M 
Source/WebKitLegacy/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
    M Source/WebKitLegacy/mac/WebInspector/WebNodeHighlightView.mm

  Log Message:
  -----------
  Inspector agents should use CheckedRef for InspectorEnvironment references.
https://bugs.webkit.org/show_bug.cgi?id=302416
rdar://164582768

Reviewed by BJ Burg and Devin Rousso.

Inspector agents hold references to their InspectorEnvironment through the 
AgentContext
structure. This changes the raw reference to CheckedRef to provide runtime 
lifetime
checking.

This ensures that if there's a bug causing an agent to outlive its environment, 
we get
an immediate, actionable crash rather than undefined behavior.

No new tests.

* Source/JavaScriptCore/API/APIUtils.h:
(handleExceptionIfNeeded):
(setException):
* Source/JavaScriptCore/API/JSBase.cpp:
(JSEvaluateScriptInternal):
(JSCheckScriptSyntax):
* Source/JavaScriptCore/API/JSValue.mm:
(reportExceptionToInspector):
* Source/JavaScriptCore/inspector/InjectedScript.cpp:
(Inspector::InjectedScript::execute):
(Inspector::InjectedScript::evaluate):
(Inspector::InjectedScript::awaitPromise):
(Inspector::InjectedScript::callFunctionOn):
(Inspector::InjectedScript::evaluateOnCallFrame):
(Inspector::InjectedScript::getFunctionDetails):
(Inspector::InjectedScript::functionDetails):
(Inspector::InjectedScript::getPreview):
(Inspector::InjectedScript::getProperties):
(Inspector::InjectedScript::getDisplayableProperties):
(Inspector::InjectedScript::getInternalProperties):
(Inspector::InjectedScript::getCollectionEntries):
(Inspector::InjectedScript::saveResult):
(Inspector::InjectedScript::wrapCallFrames const):
(Inspector::InjectedScript::wrapObject const):
(Inspector::InjectedScript::wrapJSONString const):
(Inspector::InjectedScript::wrapTable const):
(Inspector::InjectedScript::previewValue const):
(Inspector::InjectedScript::setEventValue):
(Inspector::InjectedScript::clearEventValue):
(Inspector::InjectedScript::setExceptionValue):
(Inspector::InjectedScript::clearExceptionValue):
(Inspector::InjectedScript::findObjectById const):
(Inspector::InjectedScript::inspectObject):
(Inspector::InjectedScript::releaseObject):
(Inspector::InjectedScript::releaseObjectGroup):
(Inspector::InjectedScript::createCommandLineAPIObject const):
* Source/JavaScriptCore/inspector/InjectedScriptBase.cpp:
(Inspector::InjectedScriptBase::hasAccessToInspectedScriptState const):
* Source/JavaScriptCore/inspector/InjectedScriptBase.h:
(Inspector::InjectedScriptBase::inspectorEnvironment const):
(Inspector::InjectedScriptBase::checkedInspectorEnvironment const):
* Source/JavaScriptCore/inspector/InjectedScriptManager.cpp:
(Inspector::InjectedScriptManager::injectedScriptFor):
* Source/JavaScriptCore/inspector/InjectedScriptManager.h:
(Inspector::InjectedScriptManager::checkedInspectorEnvironment const):
* Source/JavaScriptCore/inspector/InjectedScriptModule.cpp:
(Inspector::InjectedScriptModule::ensureInjected):
* Source/JavaScriptCore/inspector/InspectorAgentBase.h:
* Source/JavaScriptCore/inspector/InspectorEnvironment.h:
* Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h:
* Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp:
(Inspector::InspectorAgent::initialized):
* Source/JavaScriptCore/inspector/agents/InspectorAgent.h:
* Source/JavaScriptCore/inspector/agents/InspectorAuditAgent.cpp:
(Inspector::InspectorAuditAgent::InspectorAuditAgent):
* Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent):
(Inspector::InspectorDebuggerAgent::didPause):
(Inspector::InspectorDebuggerAgent::breakpointActionProbe):
(Inspector::InspectorDebuggerAgent::didContinue):
* Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp:
(Inspector::InspectorHeapAgent::enable):
(Inspector::InspectorHeapAgent::disable):
(Inspector::InspectorHeapAgent::gc):
(Inspector::InspectorHeapAgent::snapshot):
(Inspector::InspectorHeapAgent::nodeForHeapObjectIdentifier):
(Inspector::InspectorHeapAgent::getPreview):
(Inspector::InspectorHeapAgent::getRemoteObject):
(Inspector::InspectorHeapAgent::willGarbageCollect):
(Inspector::InspectorHeapAgent::didGarbageCollect):
(Inspector::InspectorHeapAgent::heapSnapshotBuilderIgnoreNode):
(Inspector::InspectorHeapAgent::clearHeapSnapshots):
* Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.h:
* Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::InspectorRuntimeAgent):
(Inspector::m_vm):
* Source/JavaScriptCore/inspector/agents/InspectorScriptProfilerAgent.cpp:
(Inspector::InspectorScriptProfilerAgent::willDestroyFrontendAndBackend):
(Inspector::InspectorScriptProfilerAgent::startTracking):
(Inspector::InspectorScriptProfilerAgent::stopTracking):
(Inspector::InspectorScriptProfilerAgent::willEvaluateScript):
(Inspector::InspectorScriptProfilerAgent::didEvaluateScript):
(Inspector::InspectorScriptProfilerAgent::trackingComplete):
(Inspector::InspectorScriptProfilerAgent::stopSamplingWhenDisconnecting):
* Source/JavaScriptCore/inspector/agents/InspectorScriptProfilerAgent.h:
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::~JSGlobalObject):
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::inspectorController const):
(JSC::JSGlobalObject::checkedInspectorController const):
* Source/JavaScriptCore/runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::inspectorController const): Deleted.
* Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp:
(JSC::JSGlobalObjectDebuggable::connect):
(JSC::JSGlobalObjectDebuggable::disconnect):
(JSC::JSGlobalObjectDebuggable::dispatchMessageFromRemote):
* Source/WebCore/inspector/FrameInspectorController.h:
* Source/WebCore/inspector/InspectorController.h:
* Source/WebCore/inspector/InspectorWebAgentBase.h:
(WebCore::InspectorAgentBase::InspectorAgentBase):
(WebCore::InspectorAgentBase::checkedEnvironment const):
* Source/WebCore/inspector/InstrumentingAgents.h:
* Source/WebCore/inspector/WorkerInspectorController.h:
* Source/WebCore/inspector/agents/InspectorAnimationAgent.cpp:
(WebCore::InspectorAnimationAgent::startTracking):
(WebCore::InspectorAnimationAgent::stopTracking):
(WebCore::InspectorAnimationAgent::willApplyKeyframeEffect):
(WebCore::InspectorAnimationAgent::stopTrackingStyleOriginatedAnimation):
* Source/WebCore/inspector/agents/InspectorCPUProfilerAgent.cpp:
(WebCore::InspectorCPUProfilerAgent::startTracking):
(WebCore::InspectorCPUProfilerAgent::stopTracking):
(WebCore::InspectorCPUProfilerAgent::collectSample):
* Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::mediaMetricsTimerFired):
* Source/WebCore/inspector/agents/InspectorMemoryAgent.cpp:
(WebCore::InspectorMemoryAgent::startTracking):
(WebCore::InspectorMemoryAgent::stopTracking):
(WebCore::InspectorMemoryAgent::didHandleMemoryPressure):
(WebCore::InspectorMemoryAgent::collectSample):
* Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::timestamp):
(WebCore::InspectorNetworkAgent::didFinishLoading):
* Source/WebCore/inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::enable):
(WebCore::InspectorPageAgent::timestamp):
* Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::internalStart):
(WebCore::InspectorTimelineAgent::internalStop):
(WebCore::InspectorTimelineAgent::timestamp):
(WebCore::InspectorTimelineAgent::timestampFromMonotonicTime):
* Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp:
(WebCore::PageTimelineAgent::internalStart):
(WebCore::PageTimelineAgent::didCompleteRenderingFrame):
* Source/WebKitLegacy/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebKitLegacy/mac/WebInspector/WebNodeHighlightView.mm:
(-[WebNodeHighlightView drawRect:]):

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



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

Reply via email to