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

Reply via email to