Closed Bug 1503936 Opened 6 years ago Closed 5 years ago

It should be possible to zoom in the timeline

Categories

(Core Graveyard :: Web Replay, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: jlast, Unassigned)

References

Details

It would be helpful if the user could focus their debugging on a portion of a timeline. This would let them 

a) better see the events that occurred in that time 
b) keep them from rewinding or playing outside of that section of the timeline

some nice user interactions:

a) right click on the timeline to select the current pause position as the start or end of the timeline
b) right click on the timeline and select that position as the start or end of the timeline
c) right click on the start or end of the timeline and reset the start or end.


Addendum:

It would be nice if the console also had markers for the start and end if it was different from the default. This would be similar to how it currently shows the pause location.
No longer depends on: 1496600
Blocks: replay-player
No longer blocks: replay-polish
It would also be nice if the user could:

1. right click on a console message and set a start or end
2. right click on a pause line in the debugger and set it as the start or end
3. right click on a frame in the call stack and set it as the start or end

If a user wants to set an arbitrary line in the debugger as the start or end, they could rewind/play to that line and then set it as the start or end
I think we can implement the functionality in the debugger server. The easiest way to do it would be to add two new endpoints `setStart` `setStop` which would receive a source location (source id, line, column) and execution point. 

- The endpoint can then set a breakpoint at that location and when the breakpoint is hit we can check to see if the execution point is equal to the start or stop point.
- If we are paused at a start|stop point we can prevent subsequent resume or rewinds.
- The debugger can disable these buttons in the UI.
- The timeline can update based on the start|stop points.

We can do something similar for navigations 
- we set a start point at the navigation, which will set a breakpoint at that location|execution point and prevent the debugger from continuing past it
Blocks: 1503930
No longer blocks: 1503930
from bhackett,

I think it might be best to think in terms of the BreakpointPosition and ExecutionPoint primitives used in the interface between the replaying/middleman JS and the C++ infrastructure itself.  This is pretty close but slightly different from the 'source location (source id, line, column) and execution point' part of the comment
the C++ representation of these is defined in toolkit/recordreplay/ipc/JSControl.h and there are analogues for how they look in JSON (undocumented unfortunately)
but the relationship between ExecutionPoint and BreakpointPosition is pretty straightforward (an ExecutionPoint is a particular place where a BreakpointPosition is hit) and otherwise the comment looks good
for navigation, is there ever a time we would want to rewind past a navigation?  it might be simpler to just close the recording and start a new one when the user navigates
Depends on: 1504909
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.