Bug 137078

Summary: Web Inspector: support replaying to time-indexed outputs
Product: WebKit Reporter: Brian Burg <burg>
Component: Web InspectorAssignee: Nobody <webkit-unassigned>
Status: RESOLVED LATER    
Severity: Normal CC: graouts, inspector-bugzilla-changes, syoichi, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on: 137079, 137083, 137162    
Bug Blocks: 136292    
Attachments:
Description Flags
WIP none

Description Brian Burg 2014-09-24 15:48:16 PDT
The idea of time-indexed outputs is that the user often wants to navigate a recording by console outputs or probe samples gathered during the playback. We can do that using replay and breakpoints.

<brrian> Given a position in a recording and a source code position and a count, the replayToIndexedStatement(PlaybackPosition, url, SourcePosition, count) command replays to the count'th execution of the statement at that position starting from the recording position. count is relative to the combination of PlaybackPosition+SourceCodeLocation.

<brrian> So, if you can tag outputs with a counter value that resets for each replay input, you can replay to any output that's tagged.
Comment 1 Radar WebKit Bug Importer 2014-09-24 15:49:34 PDT
<rdar://problem/18447456>
Comment 2 Radar WebKit Bug Importer 2014-09-24 15:49:35 PDT
<rdar://problem/18447455>
Comment 3 Brian Burg 2014-09-24 15:55:11 PDT
(In reply to comment #2)
> <rdar://problem/18447455>

Double-imported :(
Comment 4 Brian Burg 2014-09-24 16:14:17 PDT
Created attachment 238620 [details]
WIP
Comment 5 Timothy Hatcher 2014-09-24 21:34:47 PDT
Comment on attachment 238620 [details]
WIP

View in context: https://bugs.webkit.org/attachment.cgi?id=238620&action=review

> Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js:482
> +            // Disable the breakpoints that are unrelated to this command.
> +            for (var breakpoint of WebInspector.debuggerManager.breakpoints) {
> +                breakpointStateMap.set(breakpoint, breakpoint.disabled);
> +                breakpoint.disabled = true;
> +            }

This likely fires a bunch of events that are pointless and confuse the UI. Should we suppress them?

> Source/WebInspectorUI/UserInterface/Controllers/ReplayManager.js:538
> +            manager.playbackSpeed = WebInspector.ReplayManager.PlaybackSpeed.RealTime;
> +            for (var [breakpoint, wasDisabled] of breakpointStateMap)
> +                breakpoint.disabled = wasDisabled;

What happens if the user toggled one since the state was stored?
Comment 6 BJ Burg 2017-07-10 14:01:25 PDT
Closing web replay-related bugs until we resume working on the feature again.