Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: daecaef2cb817911209fd87b2250903593139b7e
https://github.com/WebKit/WebKit/commit/daecaef2cb817911209fd87b2250903593139b7e
Author: Devin Rousso <[email protected]>
Date: 2025-11-14 (Fri, 14 Nov 2025)
Changed paths:
M LayoutTests/inspector/timeline/recording-start-stop-timestamps.html
M LayoutTests/inspector/timeline/resources/timeline-event-utilities.js
M LayoutTests/inspector/timeline/timeline-recording.html
M Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js
M Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js
M Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js
M Source/WebInspectorUI/UserInterface/Views/TimelineOverview.js
M Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js
M Source/WebInspectorUI/UserInterface/Views/TimelineRecordingProgressView.js
M Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js
Log Message:
-----------
REGRESSION(302776@main): Made
inspector/timeline/timeline-event-TimerInstall.html flakey
https://bugs.webkit.org/show_bug.cgi?id=302413
<rdar://problem/164574854>
Reviewed by BJ Burg.
Previously, there was a counter variable used to ensure that the frontend only
reported that the recording was stopped once all instruments had stopped.
This didn't work when recording over a cross-origin navigation as the backend
is disconnected before any messages can be sent (i.e. the frontend is told that
there's a new WebProcess instead of that each instrument has stopped recording).
Ultimately, the primary purpose of that count in the frontend was to prevent
the developer from starting a new recording before a previous recording had
finished (assuming it existed).
The nature of WebKit's IPC means that the frontend can leverage the fact that
messages are guaranteed to be delivered in the order that they're sent, so it
frequently will dispatch multiple commands/events without waiting for the
previous to finish.
Similarly, the frontend can wait to dispatch
`WI.TimelineManager.Event.CapturingStateChanged` until any pending events from
the backend have been handled.
* Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.startCapturing):
(WI.TimelineManager.prototype.stopCapturing):
(WI.TimelineManager.prototype.capturingStarted):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype._updateCapturingState): Deleted.
Include additional information about the `WI.TimelineManager.CapturingState`
since `WI.TimelineManager.Event.CapturingStateChanged` is now delayed until
after pending dispatches, some of which may affect the
`WI.timelineManager.capturingState`.
* Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._handleTimelineCapturingStateChanged):
* Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStateChanged):
* Source/WebInspectorUI/UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged):
* Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._currentContentViewDidChange):
(WI.TimelineRecordingContentView.prototype._handleTimelineCapturingStateChanged):
(WI.TimelineRecordingContentView.prototype._updateProgressView):
* Source/WebInspectorUI/UserInterface/Views/TimelineRecordingProgressView.js:
(WI.TimelineRecordingProgressView.prototype.set visible):
(WI.TimelineRecordingProgressView.prototype._updateState):
(WI.TimelineRecordingProgressView.prototype._handleTimelineCapturingStateChanged):
* Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.prototype._updateNavigationBarButtons):
(WI.TimelineTabContentView.prototype._handleTimelineCapturingStateChanged):
(WI.TimelineTabContentView.prototype._globalModifierKeysDidChange):
(WI.TimelineTabContentView.prototype._continueButtonClicked):
Use the `WI.TimelineManager.CapturingState` included in
`WI.TimelineManager.Event.CapturingStateChanged` instead of
`WI.timelineManager.capturingState`.
* LayoutTests/inspector/timeline/resources/timeline-event-utilities.js:
(InspectorTest.TimelineEvent.captureTimelineWithScript):
(InspectorTest.TimelineEvent.captureTimelineWithMarker):
* LayoutTests/inspector/timeline/recording-start-stop-timestamps.html:
* LayoutTests/inspector/timeline/timeline-recording.html:
Canonical link: https://commits.webkit.org/303033@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications