Bug 137078 - Web Inspector: support replaying to time-indexed outputs
Summary: Web Inspector: support replaying to time-indexed outputs
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
Keywords: InRadar
Depends on: 137079 137083 137162
Blocks: WebReplayUI
  Show dependency treegraph
Reported: 2014-09-24 15:48 PDT by Brian Burg
Modified: 2017-07-10 14:01 PDT (History)
4 users (show)

See Also:

WIP (9.09 KB, patch)
2014-09-24 16:14 PDT, Brian Burg
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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
Comment 2 Radar WebKit Bug Importer 2014-09-24 15:49:35 PDT
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]
Comment 5 Timothy Hatcher 2014-09-24 21:34:47 PDT
Comment on attachment 238620 [details]

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.