Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: WebKit/webkit
...
head fork: burg/timelapse
compare: timelapse
Checking mergeability… Don’t worry, you can still create the pull request.
This comparison is big! We’re only showing the most recent 250 commits
Commits on Jul 24, 2013
Brian J. Burg Inspector: send url, line, column, and expression when a new probe is…
… added.
da95d9a
Commits on Jul 25, 2013
@madonk madonk Add probe on Shift+gutterClick, and display collected samples. ProbeS…
…ideBar has one table per probe.
c9114d0
@madonk madonk Create a ProbeGroupObject for storing multiple probes at the same fil…
…e line.
0ad8b6c
@madonk madonk ProbeSideBar Panel reacts to ProbeGroupObject events, currently only …
…displaying first probe per line.
f7617ba
Commits on Jul 26, 2013
Brian J. Burg Add support for using OrdinalNumbers as hash keys. 6d55b05
Commits on Jul 27, 2013
Brian J. Burg Inspector: convert probes to store their location using TextPosition and
OrdinalNumber classes. Document cases where 0-based or 1-based line and column
numbers must be used.

Closes #318.
18e8bf4
Commits on Jul 28, 2013
Brian J. Burg Merge from WebKit upstream. 50bd854
Brian J. Burg Inspector: extract probe group key to a getter. Add some asserts and …
…remove some logging.
76587a8
Brian J. Burg Inspector: extract probe group sections to ProbeGroupDetailsSection c…
…lass.
7a0e1d5
Commits on Jul 29, 2013
Brian J. Burg Inspector: split the probe group data table into its own class. Start…
… modularizing stuff.
e313c1f
Brian J. Burg Inspector: add some helpful assertion messages to Object.addEventList…
…ener.
a3e4924
@madonk madonk Color picker uses WebInspector.Color, gutter color updates correctly,…
… and fixes add probe button.
f86d43b
@madonk madonk Implement structure to hold samples by row, display data in correct t…
…able columns.
72b2ee0
Commits on Jul 30, 2013
@madonk madonk Switch to using DataGrid instead of HTML Tables to display probe data. 89d8c2c
Commits on Jul 31, 2013
Brian J. Burg Inspector: remove unused style class names that were previously renamed. 21b19c7
Brian J. Burg Inspector: send probe samples as RemoteObjects.
Closes #317.
c6709f1
Brian J. Burg Inspector: keep track of samples in object groups at a per-probe gran…
…ularity.
c9a51d8
Brian J. Burg Inspector: associate a batch id with probe samples. If samples have t…
…he same

batch id, then they were collected at the same program point without any
execution happening between them.

This will simplify the logic for creating probe group rows, since the batch id
provides an accurate means to cluster samples into rows.
4039edf
@madonk madonk Implement removeColumn in ProbesDataGrid. 1ca9952
@madonk madonk Add Column to ProbeDataGrid at specified index. a95ce34
@madonk madonk Restructure ProbeGroupObject to store table information and remove Pr…
…obeGroupDataTable.
85aeab3
Commits on Aug 01, 2013
Brian J. Burg Inspector: add support for removing probes from the frontend and back…
…end.

* Alter the backend so probes are cleared one at a time, rather than all at once.
* Add Probe.removeProbe and Probe.probeRemoved to the inspector protocol.
* Simplify how probe group colors are updated.
* Move the probe group editor gutter marker to ProbeGroupDetailsSection.
* Teach the probe group and manager to remove probes and groups as necessary.
* Change how probe group keys are persisted.
9b7af04
Brian J. Burg Inspector: rename ProbesDataGrid to ProbeGroupDataGrid. 47637f5
Brian J. Burg Inspector: move rules from ProbeGroupObject.css into ProbesSidebarPan…
…el.css.
8a37926
Brian J. Burg Inspector: simplify the style rules for probe group data grid, and fi…
…x some

minor bugs with the probe group gutter marker.
f97c125
Commits on Aug 02, 2013
Brian J. Burg Add a hash implementation for TextPosition. 46e1c41
Brian J. Burg Keep track of probes in the backend by line+column, instead of just l…
…ine number.
7f0e047
Brian J. Burg Inspector: make column numbers mandatory for the protocol's ScriptPro…
…be object.
5604be8
Brian J. Burg Inspector: linkify the probe locations displayed in ProbeGroupDetails…
…Section header.

 * store raw probe source locations with a SourceCodePosition rather than ints
 * when presenting location information to the user, use a SourceCodeLocation
 * create new probes using raw line and column numbers
aad7914
Commits on Aug 03, 2013
Brian J. Burg Inspector: clean up code paths for enabling and disabling the probe a…
…gent.

Support temporarily suspending probe sample collection (Probe.setProbesActive).
2cafdf6
Brian J. Burg Inspector: add a probes DetailsSectionGroup to the DebuggerSidebarPan…
…el, and

hook up Probe.setProbesActive() to the group header toggle icon.
64fbfa6
Commits on Aug 07, 2013
@madonk madonk Inspector: change how multiple probes and single probe details are di…
…splayed.

Move probes to debugger sidebar panel, add probe detail panel for data
display. Make probes highlight purple.

Address cide review comments.
4e0807f
Brian J. Burg Inspector: merge backend class ScriptProbeResolver into InspectorProb…
…eAgent.
8296bdd
Brian J. Burg Add an API to set a singleton pause trigger that pauses execution whe…
…n a specific

probe is executed a certain number of times. This is a building block for
replaying to specific probe hits.
56928ad
Brian J. Burg Change InspectorDebuggerAgent to maintain a set of listeners, rather …
…than a singleton.
b34f73d
Commits on Aug 09, 2013
Brian J. Burg Inspector: use NavigationSidebarPanel.createTreeOutline constructor t…
…o make the probes tree outline. Add an empty message for the probes row.
cbdb630
Brian J. Burg Inspector: specialize a DetailsSectionRow for TreeOutlines. Don't aut…
…omatically attach

tree outlines created by NavigationSidebarPanel.createContentTreeOutline().
Rename NavigationSidebarPanel.contentTreeOutline to defaultContentTreeOutline.
6338116
Brian J. Burg Inspector: move NavigationSidebarPanel.applyFiltersForTreeElement to …
…TreeElement.applyFilter.
9494151
Brian J. Burg Inspector: move remaining tree-traversal code for filters into
TreeOutline. Adjust initialization order within
NavigationSidebarPanel.
80329aa
Brian J. Burg Inspector: parameterize how NavigationSidebarPanel handles changes to…
… the filter.

Then, teach DebuggerSidebarPanel how to track and filter multiple TreeOutlines.
When the tree outline doesn't match the filter, show an empty message in the outline's
detail section row. (This last part could use better messages.)

Allow subclasses of NavigationSidebarPanel to change the placeholder messages
without immediately displaying said message.
104f3e9
Brian J. Burg Fix an errant use of the BSD 3-clause license. We meant to insert a 2…
…-clause license.
307dacc
Commits on Aug 10, 2013
Brian J. Burg Inspector: NavigationSidebarPanel should pretend that filters were up…
…dated when

it is shown, so that any applicable placeholders can be displayed.
a0d8ce1
Brian J. Burg Inspector: remove unused `console.probe` from Console.idl. f8b3b00
Brian J. Burg Inspector: merge ScriptProbeServer into ScriptDebugServer.
These were performing nearly the same actions, and it was awkward to have two
classes that need to respond to the same debugger events.

This commit also removes the ENABLE(WEB_REPLAY) guard from probes implementation,
and adds the ENABLE(JAVASCRIPT_DEBUGGER) guard to uses of probe functionality.
87b3fc6
Commits on Aug 12, 2013
Brian J. Burg Inspector: probes are not enabled by default. Document the new meaning
of probe enablement.
2c2d6cd
@madonk madonk Inspector: SourceCodeTextEditor should listen to probe group added/re…
…moved events.
29722a8
@madonk madonk Sync gutter element and toggle buttons to correctly reflect probe gro…
…up disabled/enabled state.
9f3b99c
Brian J. Burg Inspector: fix a bug where probes could not be created for the same
 script id if such a probe had been previously deleted.
2afc8da
Brian J. Burg Inspector: remove logging statements from ProbeAgent backend which de…
…pend

on the ENABLE(WEB_REPLAY) guard (which probes does not require).
1909f59
Brian J. Burg Inspector: fix an early element removal bug in the probe details side…
…bar panel.
df1f1fe
Brian J. Burg Inspector: fix typos in DebuggerSidebarPanel that affected subtree re…
…moval.
62f0d5f
Brian J. Burg Inspector: when evaluating probe sample expressions, use the global
ScriptState to obtain an InjectedScript object.

This fixes a crash that occurred when reloading a page after samples had been taken.
a6eecdd
Brian J. Burg Inspector: send ProbeResolved messages to the frontend.
When a probe location is resolved to an parsed script, send a message to the frontend.
3c38ea2
Brian J. Burg Inspector: release probe sample objects on main frame navigation. 2a85d0d
@madonk madonk Create a FutureScriptTreeElement for scripts that have not yet been r…
…esolved.
289f9f3
@madonk madonk Swap FutureScriptTreeElements with real ScriptTreeElements when a scr…
…ipt is added to the debugger sidebar panel.
1297939
Commits on Aug 13, 2013
Brian J. Burg Inspector: enabled probes now cause execution to pause.
Closes #326.
9952360
Brian J. Burg Inspector: sync probe enablement status with sidebar probe tree eleme…
…nts.
154c37c
Brian J. Burg Inspector: remove ProbeAgent.allProbesCleared, as it is not used. d0912a5
Brian J. Burg Inspector: remove color associated with specific probe groups, since …
…it's not necessary.
9618c19
Brian J. Burg Inspector: remove unused colored gutter marker from probe details sid…
…ebar.
bc02735
Brian J. Burg Inspector: remove stubbed probe group toggle button from probe detail…
… sidebar.
d65fef9
Brian J. Burg Inspector: float the probe details section link to the left. 536bb0b
Brian J. Burg Inspector: fix typo in the protocol definition. 8ebd53d
Brian J. Burg Inspector: send probeResolved events to frontend if the probes are re…
…solved immediately.
09c4152
Commits on Aug 14, 2013
Brian J. Burg Inspector: fix bugs in ProbeAgent.createScriptProbe.
* Previously, only the first scriptId for a URL was being saved, so probes would never be resolved
immediately on subsequently-loaded versions of a script.
* Due to bad logic, probes would not be immediately resolved if the frontend is unavailable.
a5f95c8
Commits on Aug 19, 2013
@madonk madonk Inspector: Add animations to probes in the debugger sidebar that
trigger when a sample for that probe group was collected.
c7c1ad0
@madonk madonk Inspector: use an expandable tree view for probe samples that are not
primitive values. Automatically move focus to the text box inside the
probe expression entry popup.
d362cee
@madonk madonk Inspector: Add a trash button to the ProbeGroupDetailsSection that
clears current samples from the probe group.
1f712fc
@madonk madonk Inspector: un-resolve and resolve probes when the main resource changes.
Previously, probes were not unresolved (and UI markers were not
removed from the text editor) when the main resource changed.
16b13be
@madonk madonk Inspector: Fade stale samples and add a separator when the page's mai…
…n resource changes.
31594dd
Brian J. Burg Inspector: probes at (line, 0) should trigger when the first statement
in the line executes. This matches the behavior of breakpoints.
e69d107
Commits on Aug 20, 2013
Brian J. Burg Inspector: remove ProbeGroupObject.hasSamples getter, as it is redund…
…ant.
8b86b6b
Brian J. Burg Manage ScriptDebugServer::m_callingListeners flag using TemporaryChan…
…ge RAII.
12b6166
Brian J. Burg InspectorProbeAgent should be guarded by ENABLE(JAVASCRIPT_DEBUGGER),…
… but was

guarded by ENABLE(WEB_REPLAY) inside InspectorController initialization code.
aae5a9e
Brian J. Burg The inspector backend should send scriptParsed events before probes and
breakpoints are resolved to positions within the newly-parsed script.

 * Split implementations of ScriptDebugListener::didParseSource into
willParseSource and didParseSource, while factoring out common code.

 * Send scriptParsed events to the frontend in the willParseSource callback.

 * Send breakpointResolved and probeResolved events to the frontend in the
didParseSource callback.

(This could be accomplished by tinkering with the initialization order of the
DebuggerAgent and ProbeAgent's debug server listeners, but the order is
determined by commands from the frontend, and would be quite brittle.)
9614f99
Brian J. Burg Inspector: associate tree elements for future scripts with canonical …
…placeholders.
8e93ce3
Brian J. Burg Inspector: TreeElement.hasChildren should be false when all children …
…are removed.
405877b
Brian J. Burg Inspector: remove ProbeGroupObject.disabled getter, as it is redundan…
…t with

ProbeGroupObject.isEnabled.
9452c7d
Brian J. Burg Inspector: fix misuses of the TreeOutline API in the placeholder tree…
… element

replacement code.
acbd2a4
Brian J. Burg Inspector: be more careful to not assume that probes are resolved.
This adds various assertions to ensure ProbeGroupObject.sourceCodeLocation is
only being used when the probe group is resolved. Code that sorts probe source
locations now uses the raw source locations, as display locations may not
be available (and the sort order should be the same).
649c476
@madonk madonk Inspector: Separate replay and live probes into separate tree
outlines. During live execution, only display resolved probes.
1f3c91d
Commits on Aug 21, 2013
Brian J. Burg Merge from upstream WebKit. 0f4b9f2
Commits on Aug 22, 2013
Brian J. Burg Web Replay: improve logging of event loop inputs, DOM events, top-lev…
…el JS function calls, memoized inputs.

This change adds logging for top-level JavaScript functions. It also
adds proper indentation, making the causality between the above input
types visually apparent.
973416f
Commits on Aug 23, 2013
Brian J. Burg Fix misplaced ENABLE(WEB_REPLAY) guards that broke non-Timelapse builds. 7dc2f00
@madonk madonk Inspector: Switch between replay and live probe tree outlines on reco…
…rding loaded/unloaded.

This is accomplished by managing two tree outlines, each with different logic. The
"live" tree outline only shows probes that have been resolved. The "replay" tree outline
shows all probes, even unresolved probes. When a recording is loaded or unloaded, the
probe section's group is swapped between the live and replay versions.
eb96e6f
@madonk madonk Inspector: Reloads without interleaved probe samples should create a …
…single separator.

This moves the reload listener to the ProbeGroupObject (model) rather
than ProbeGroupDetailsSection (view). Adding an empty row to the data
grid causes it to fade prior samples.
94e849d
@madonk madonk Inspector: Use ProbeSampleObject.batchId to form data rows atomically.
On replay, save markIndex and batchIdDelta for each row.
4e3cbfe
@madonk madonk Inspector: Opening probe details panel requires only a single click
after reload. Renamed some confusing things in DebuggerSidebarPanel.
12c7084
@madonk madonk Inspector: Clicking on a script in the debugger sidebar panel doesn't
open the probes panel unless a probe group has already been viewed.

ProbeGroupObject updates the hitCount any time a new input is seen.
1040de3
Brian J. Burg Inspector: simplify some functions in DebuggerSidebarPanel and fix mi…
…s-merges.
f3632e3
Commits on Aug 24, 2013
Brian J. Burg Inspector: rewrite probe data table logic to use classes.
Stub out support for mendable (i.e., replay) data tables that persist data frames across replay runs.
b890957
Commits on Aug 26, 2013
Brian J. Burg Inspector: interlace probe samples from multiple replays, even if som…
…e are partial.

* new implementations of ProbeGroupDataTable.{addFrame, createFrame}
* Sorting and insertion functions in the table and data grid
* new subclass of ProbeGroupDataFrame for replay frames
* fix a script error upon deleting a probe group.
4b70cc7
Commits on Aug 29, 2013
Brian J. Burg Add guards for non-debug builds in InspectorReplayAgent. 58db0bd
Brian J. Burg Fix double-initialization and other nondeterminism regressions in DOM…
…Timer.

Closes #358.
3d456dd
Brian J. Burg Update README.md to point to wiki locations instead of external proje…
…ct page.
380ea67
Brian J. Burg Update the public nightly builder script to work with WebInspectorUI. 60d5068
Brian J. Burg Change replay proxy mode to "open" when a recording is unloaded.
Closes #357.
569bd7f
Brian J. Burg Suspend active DOM objects permanently when capturing stops.
Closes #359.
8733406
Commits on Aug 30, 2013
Brian J. Burg Merge branch 'timelapse' into feature branch 'probeui'. 1c19066
Brian J. Burg Disable screenshot capturing on key press events, since it is not use…
…d by the frontend yet.
962d40a
Brian J. Burg Inspector: fix various style regressions in the Replay Dashboard.
Closes #361.
Closes #362.
Closes #363.
4ff7452
Commits on Sep 03, 2013
Brian J. Burg Capture and replay explicit frame reloads (as triggered by WebKit2's …
…WebPage::reload).

Addresses some parts of #364.
0985065
Brian J. Burg Inspector: fix a bug that prevented the open probe group data frame f…
…rom being

closed automatically after all required probe values have been added.
47faab7
Brian J. Burg Inspector: re-implement placing vertical rules in probe group data gr…
…ids when

the main frame changes.

Separators are now implemented as a flag on the preceding data frame, which
causes a vertical rule to be rendered by the DataGrid subclass.

This is possible due to the simplifying assumption that vertical rules can only
appear after a frame (not before the first frame), and that multiple adjacent
reloads are represented by a single vertical rule.
49c45b0
Commits on Sep 06, 2013
Brian J. Burg Inspector: Fix the probe group tree element's data update animation.
* Use two layers to composite the probe tree element icon and animation.
* Interrupt and restart animations asynchronously so that all data updates cause the animation to restart.
* Use an SVG version of the icon, instead of a -webkit-filter on Plus.svg.
ab97c79
Brian J. Burg Web Inspector: change probe sidebar details table to match Timeline t…
…able style.
7d7bd30
Commits on Sep 07, 2013
Brian J. Burg Web Inspector: fade old probe samples on page navigation.
* Overhaul the row styles so old samples are faded (on non-replay executions).
* Mark missing samples with linear gradient 'barbershop' hatching.
* Copy the TreeOutline selection gradient style as the default for all DataGrid instances.
034a6a6
Brian J. Burg Web Inspector: animate probe table rows as they are created/added. 9645452
Brian J. Burg Merge branch 'upstream' into branch 'timelapse'. 73248f6
Brian J. Burg Inspector: Fix the probe group tree element's data update animation.
* Use two layers to composite the probe tree element icon and animation.
* Interrupt and restart animations asynchronously so that all data updates cause the animation to restart.
* Use an SVG version of the icon, instead of a -webkit-filter on Plus.svg.
8328e60
Brian J. Burg Web Inspector: change probe sidebar details table to match Timeline t…
…able style.
ea5bae0
Brian J. Burg Web Inspector: fade old probe samples on page navigation.
* Overhaul the row styles so old samples are faded (on non-replay executions).
* Mark missing samples with linear gradient 'barbershop' hatching.
* Copy the TreeOutline selection gradient style as the default for all DataGrid instances.
001f289
Brian J. Burg Web Inspector: animate probe table rows as they are created/added. b911e3b
Brian J. Burg Fixup from merging branch 'upstream' into branch 'timelapse'. 1ade418
Brian J. Burg Merge branch 'timelapse' of ssh://github.com/burg/timelapse into time…
…lapse
aff849d
Commits on Sep 11, 2013
Brian J. Burg Web Replay: use references in various replay-related interfaces.
* The replay controller and all input proxies attached to the Page are
never null, so convert to const OwnPtr and remove null checks.
* Remove an unused EventLoopInputDispatcher instance for ReplayController.
* Make ReplayController own its CacheController instance.
* Change EventLoopInput::dispatch() to provide references.
4ce6a8a
Commits on Sep 12, 2013
Brian J. Burg Web Inspector: update future, past probe data grid row styles during …
…replay.
ae32d95
Commits on Sep 13, 2013
Brian J. Burg Web Inspector: capture and replay stopLoading() and stopLoadingFrame(…
…) commands that come from WebKit2 embedders.
1cb281d
Commits on Sep 20, 2013
Brian J. Burg Web Replay: Rename Input{Encoder, Decoder} to {Encoder, Decoder}Context. 304ba21
Brian J. Burg Web Replay: Refactor input serialization to not be stack-based. Instead,
explicit encoding contexts (lists or maps) are used.
9531ec8
Brian J. Burg Web Replay: move recording memory size summation code to ReplayRecord…
…ing.
4682fc2
Commits on Sep 21, 2013
Brian J. Burg Web Inspector: capture and replay main frame URL loading commands fro…
…m WebKit2.
32299c6
Brian J. Burg Web Inspector: strengthen a guard in ResourceTreeElement._updateStatu… 04c2da5
Brian J. Burg Merge upstream WebKit into branch 'timelapse'. b0659df
Commits on Sep 26, 2013
Brian J. Burg Web Inspector: change probe details sidebar to use SVG icons instead …
…of PDF icons.
27ccfda
Brian J. Burg Web Inspector: use an explicit class for probe group data grid row an…
…imations.

This prevents the entire table from flashing when the related probe group tree element is clicked.
b4463f4
Commits on Oct 14, 2013
Brian J. Burg Merge branch 'upstream' into branch 'timelapse'.
N.B. This merge includes upstream changes that remove the old Web Inspector UI,
and remove the QT port from the tree.
c58b7ec
Commits on Oct 15, 2013
Brian J. Burg Remove templating from EventSender; add EventSenderClient and virtual…
…ize EventSenderClient::dispatchPendingEvent().
61afc6c
Brian J. Burg EventSender should be able to send arbitrary DOM event names per sender.
Change EventSender's APIs to include the DOM event name that should be fired.
Do not accept and store an event name in the EventSender constructor.
7e2bdd1
Commits on Oct 16, 2013
Brian J. Burg Use one EventSender instance per Document, rather than several static…
… local instances shared among event types.

Add a new API that dispatches all pending events with a specific type.
484160a
Commits on Oct 17, 2013
Brian J. Burg Record and replay sending of pending events.
* Store an InputIterator pointer on Document, and replace uses of ReplayUtilities with accesses to the Document's InputIterator.
* EventSender stores a reference to its Document, and dispatches differently during capture and replay.
* Remove uses of Node::dispatchAsyncEvent that now are deterministic because EventSender is deterministic.
bd4914d
Brian J. Burg Web Replay: fix spammy function call tracing when not capturing or re…
…playing.
9b6d600
Brian J. Burg Web Replay: Only call function tracing instrumentation in InspectorRe…
…playAgent in debug builds.
9b43478
Commits on Oct 18, 2013
Brian J. Burg Web Replay: clean up header includes and guards in NetworkProxy. 7152db0
Brian J. Burg Web Replay: improve error diagnostics in NetworkProxy for missing or …
…mismatched resource requests.
8091cd0
Brian J. Burg Web Replay: memoize document.lastModified.
The last modified value for a document is nondeterministically generated from the current system time
if no Last-Modified header was found for the original resource (the common case).
8046cc8
Commits on Oct 19, 2013
Brian J. Burg Web Replay: rename DOM event count to 'execution ticks' throughout.
Add a uniform interface for increasing execution ticks to InputIterator.
Clean up uses of EventLoopInput and remove unnecessary comments.
40ecc52
Brian J. Burg Web Replay: remove EventLoopInputDispatcher from EventLoopInput::disp…
…atch parameters,

and remove didDispatch() calls from all inputs.

Closes #386.
98f00ea
Brian J. Burg Reimplement Document's asynchronous delayed load events with EventSen…
…der.

This addresses nondeterminism that leads up to a 'readystatechange' DOM event.
f9bf6ac
Brian J. Burg Web Inspector: fix regression related to updating the resource sideba…
…r placeholder text.
82de965
Brian J. Burg Web Replay: HTMLLinkElement and HTMLStyleElement should not use dispa…
…tchAsyncEvent().

This is unnecessary because event dispatching is mediated through EventSender.
e5f6656
Commits on Oct 20, 2013
Brian J. Burg Minor changes to the EventSender API.
Make the EventSender API more verbose; expose hasPendingEventsForSender() for
debug and release builds (as a replacement for uses of Timer::isActive()).
1cd1781
Brian J. Burg Capture DOMTimer firings within InstrumentedDOMTimer::fired.
Previously, inputs for DOMTimer firings were created by ReplayController using
inspector instrumentation for willFireTimer. This dependency is unnecessary.
840c578
Brian J. Burg Web Replay: mediate DocumentEventQueue nondeterminism with EventSender.
Instead of using a suspendable timer, DocumentEventQueue itself implements the
ActiveDOMObject interface, and defers scheduling to EventSender. This allows
us to not forcibly flush the event queue on every EventLoopInput dispatch,
improving performance.

Closes #384.
59e1174
Brian J. Burg Web Replay: ensure that DOM events are prefixed by an event loop input.
Closes #385.

A DOM event should always be causally related to an event loop input that was
captured or is being replayed. If it is not, then the DOM event could have been
dispatched nondeterministically, as we did not account for it's causal source.

In practice, this invariant boils down to whether a DOM event is dispatched while
an input is being captured or replayed earlier in the call stack.

This patch adds a simple assertion for this invariant during replay. To assert
the invariant during capturing, we model the effective 'extent' of a captured
event loop input by using the EventLoopInputExtent RAII helper class.
f0ce9b0
Brian J. Burg Web Replay: capture and replay the Page Visibility API (visibilitycha…
…nge event).

Closes #383.
8d49816
Brian J. Burg Web Replay: animation and transition events should be mediated by Eve…
…ntSender.

Closes #388.
43c1a6d
Commits on Oct 21, 2013
Brian J. Burg Web Replay: remove useless dispatchAsyncEvent indirection.
Closes #291.

Since we address nondeterminism at the timer level where possible, there are now
no cases where EventHandler::dispatchAsyncEvent is actually used to control
nondeterminism. So, we remove DispatchAsyncEvent and DispatchEventBase.

Helper methods for serializing and deserializing document and frame indexes
were moved to EventLoopInput.
bd82f28
Commits on Oct 23, 2013
Brian J. Burg Web Replay: remove unnecessary didDispatchEvent callbacks from replay…
… machinery.

As event loop input dispatch is synchronous now, there's no reason why we
need to try and run inputs after a DOM event has almost finished being dispatched.
aa6b810
Brian J. Burg Web Replay: clean up comments and remove unused debug hooks from Repl…
…ayController.
5bcb7ae
Brian J. Burg Web Replay: don't save global tick count for each input.
Previously, EventLoopInput instances stored both the expected
number of ticks produced by the input, and the global number of
ticks that happened before the input. Since dispatch is now
synchronous and DOM events cannot trigger an event loop input
dispatch, there is no need to keep track of the global tick
count. Besides, if any preceding input has tick underflow or
overflow, then the number will be wrong anyway.

This commit also irons out the EventLoopInputDispatcher class so
that it reflects the more simple replay model that is now used.
It now also checks for tick underflow and memoization erros
immediately after dispatching an event loop input.
ca31ac3
Brian J. Burg Web Replay: Page owns ReplayController, so replay controller should u…
…se Page references.
a97593b
Brian J. Burg Web Replay: use std::unique_ptr for replay-related Page objects. b3f00b9
Commits on Oct 25, 2013
Brian J. Burg Merge branch 'upstream' into branch 'timelapse'.
No major changes concerning replay.
041abec
Commits on Oct 26, 2013
Brian J. Burg Web Replay: use nullptr and std::unique_ptr throughout replay code. 3ac4c1a
Commits on Oct 28, 2013
Brian J. Burg Web Replay: add option that forces scrolling to be deterministic.
Threaded scrolling in the mac port uses a thread-safe scroll tree
data structure to asynchronously update and render scrolls. The
new code paths for threaded scrolling avoid WebPage and
UserInputProxy, which is how we capture and simulate wheel events.

While scrolling is deoptimized to the main thread when wheel
event handlers exist, replay needs to capture *all* scrolls
whether they could fire event handlers or not. So, we added a
flag that effectively forces scrolling to always deoptimize, and
set it active during capturing only. Once the scrolls have been
captured, they can be replayed on the main thread even if new
scrolls would have been directed to the scrolling thread.
f6874e4
Commits on Oct 29, 2013
Brian J. Burg Fix a regression in DocumentEventQueue.
Due to some inconsistent guards, the event queue could improperly resume
its callbacks when suspended through ActiveDOMObject APIs. Now, an
EventSender callback is only re-added if there are events remaining that
need to be dispatched.
9a00895
Brian J. Burg Web Replay: don't show beforeunload dialog when navigating into a rec…
…ording.

If we are about to unload a frame but the page itself is being captured or replayed,
then we should not delay capturing or replaying with the dialog.
99865c8
Brian J. Burg Web Replay: memoize and replay result of beforeunload user dialog.
Closes #394.
93b28b4
Commits on Oct 30, 2013
Brian J. Burg Web Replay: build fix for !ENABLE(WEB_REPLAY). 2867a48
Brian J. Burg Web Replay: reduce edit overhead of adding new inputs.
We now use macrology to generate most of the encode method
disambiguation cases in JSONEncoderContext. This piggybacks on
the macro used by ReplayInputTypes, but it had to be modified
somewhat to only enumerate non-template classes.

To make disambiguation work with AutoMemoized specializations, we
create the AutoMemoizedBase class. It has a virtual encode()
method that calls the right specialized InputCoder<T>::encode method.

Lastly, header includes for all input types was moved to
AllInputTypes.h since header includes can't be generated by the
preprocessor easily.
4dd8107
Brian J. Burg Web Replay: improve capture and replay of page closing.

Closes #389.

WebPage now goes through NavigationProxy when trying to close an
entire page. This allows distinguishing between deterministic and
nondeterministic page closes, and tracking of any subsequent
beforeunload DOM events.

If the embedder wants to close the page when we are capturing,
then we end capturing unconditionally if shouldClose() returns
true. If it returns false, then we capture this unsuccessful
close as an event loop input to be simulated later.

If the embedder wants to close the page when we are replaying,
then we cancel playback and close the page if the page close
request is not being simulated (i.e., the live user requested it
during the replay, not the simulated user during the
capture). Otherwise, we continue replay and follow the normal
steps to determine whether to close the page or not.
0969d81
Commits on Oct 31, 2013
Brian J. Burg Web Replay: store and load AutoMemoized inputs using AtomicString names.
Closes #404.
a281764
Commits on Nov 01, 2013
Brian J. Burg Web Replay: add support to encode/decode the unsigned long ctype. 3fa642f
Commits on Nov 04, 2013
Brian J. Burg Web Replay: add helper function to get a frame's index without its do…
…cument.
79dc587
Brian J. Burg PluginStreamLoader should have an identifier before registering.
It seems that before, a plugin loader was registered with the
DocumentLoader unconditionally before it was initalized.
Since ResourceLoader::init() can fail, there's a chance that
some plugin loaders were being uselessly registered.
8b20dfa
Brian J. Burg Move createUniqueIdentifier() from ProgressTracker to NetworkProxy. 0b88d67
Brian J. Burg Change DocumentLoader's set of resource loaders to a map.
It is indexed based on the loader identifier, which is unique.
This will allow us to dig out a loader and call it on replay.
f4a3cb3
Brian J. Burg Web Replay: unify deterministic loaderId and resource load identifiers.
The network proxy used to number resource handles based on its own
counter which was memoized during replay. This patch gets rid of this
special-purpose counter and uses resource load identifiers instead. It
also makes createUniqueIdentifier() deterministic.
a00da89
Brian J. Burg Web Replay: simulate network callbacks directly by calling ResourceLo…
…ader.

We still capture network callbacks using ResourceHandle shims, but on
replay we simulate the callbacks by digging a ResourceLoader out of
the active document loader and calling the correct callback. This
removes handle ids from callback input subclasses and adds a frameIndex.
ce43d0e
Brian J. Burg Web Replay: remove NetworkProxy handle map, consolidate callback clas…
…ses.

ResourceHandles are no longer stored or used during replay.

Variants of ResourceDidFail were folded into one class. The memoized
ResourceLoaderDestroyed was removed, since it never worked anyway.

Remove callbacks from Capturing ResourceHandleClient that don't implement
any capturing functionality.
4379898
Brian J. Burg Web Replay: don't let ResourceLoaders load during replay.
Also, don't make dummy ResourceHandles and clients.
627deb5
Brian J. Burg Web Replay: remove unused NetworkProxy::expectsPageLoad() flag. 9fdba89
Brian J. Burg Web Replay: capture network callback inputs from inside SubresourceLo…
…ader.

Additionally, don't schedule network requests with NetworkProcess if replaying.
ba5db41
Brian J. Burg Web Replay: remove ResourceHandle-based capture shim, since it's no l…
…onger used.

Closes #405.
Closes #183.
7bec30c
Brian J. Burg Web Replay: use the correct iterator to cancel outgoing resource requ…
…ests.

The code was using the document's iterator, but this is not the correct iterator
to look at when a frame is in the middle of a provisional load.
e8013ed
Brian J. Burg Web Replay: remove unused ResourceWillSendRequest input.
This API call is deterministic so we don't need to capture nor replay it.
db4d910
Commits on Nov 06, 2013
Brian J. Burg Web Replay: consolidate four replay proxies into one.
Since two of them have been reduced to nearly nothing, we might
as well combine all into one class to save space and complexity.
036dc7a
Commits on Nov 09, 2013
Brian J. Burg Web Replay: simplify when the controller changes the replay proxy's m…
…ode.
5e3962f
Katie Madonna Highlight ProbeGroupDataGrid row when debugger pauses at a given inst…
…ance of a probe.
0eb1a32
Katie Madonna Replay to probe sample on double click of ProbeGroupDataGrid row. 6433cae
Brian J. Burg Merge branch 'upstream' into branch 'timelapse'.
This introduces upstream changes to the JavaScript debugger.
For now, the implementation of probes has been disabled. It
will be rewritten in followup commits.
d04e9e8
Commits on Nov 14, 2013
Brian J. Burg Consolidate various snapshot methods into DragImage. aea3601
Brian J. Burg Implement Page.captureScreenshot in the backend. f2786c5
Commits on Nov 18, 2013
Brian J. Burg Web Inspector: asynchronously initialize saved breakpoints.
This ensures that all managers learn about restored breakpoints
in the same order, regardless of manager initialization order.
1ce22d7
Brian J. Burg Probes: fix a typo that broke additional sidebar panels from appearing. e8cbd6f
Brian J. Burg Web Inspector: convert breakpoints to have a tri-state 'mode'.
The mode can be 'enabled', 'autocontinue', or 'disabled'. The UI
reflects these different modes with opacity settings. Clicking the
breakpoint markers will cycle between these modes.

The auto-continue mode only makes sense if there are actions
to evaluate, otherwise there is no effect from hitting. So, cycling
will not go to the auto-continue state unless the breakpoint has
actions.

Lastly, the breakpoint edit popover hides auto-continue when there
are no actions added for the breakpoint.
af70dac
Brian J. Burg Probes: remove dead code that won't be coming back. 3103c0d
Brian J. Burg Probes: remove the Probes domain from the Web Inspector. 0811252
Brian J. Burg Probes: add new 'probe' breakpoint action type, which currently does …
…nothing.
526b11c
Brian J. Burg Probes: obtain and pass breakpoint action identifier to backend. 0aacc8e
Brian J. Burg Probes: collect probe samples and send them through to the frontend. 7188bd0
Brian J. Burg Probes: Reimplement the probes model in the frontend.
ProbeGroups have been renamed to ProbeSet. Each probe and probe set is
associated with a Breakpoint instance, which may or may not be
resolved in the backend. Probes cannot be enabled or disabled
themselves.
aa5f845
Brian J. Burg Probes: make the probe details sidebar eligible for display again. 896c987
Brian J. Burg Probes: fix the button to clear an entire probe set. 478f7da
Brian J. Burg Web Inspector: remove breakpoint actions prior to firing breakpoint r…
…emoved event.
6ffe7d2
Brian J. Burg Probes: show all probe sets in the sidebar for the currently-open file. db5d001
Brian J. Burg Probes: breakpoints created for the sake of an added probe should def…
…ault to auto-continue mode.
9e8aac2
Brian J. Burg Probes: fix the data grid which displays probe samples. 4bd3f1a
Commits on Nov 19, 2013
Brian J. Burg WIP: Try to fix exception reporting during probe evaluation. 9f98f42
Brian J. Burg Merge branch 'new-probes' into timelapse.
Includes merge of 'upstream' into 'new-probes' on November 9, 2013.
Includes rewrite of probes to piggyback on breakpoint actions.
e72e5c4
Commits on Nov 20, 2013
Brian J. Burg Merge branch 'upstream' into timelapse.
Includes fixes for crashes when an exception is thrown during probing.
44492f7
Brian J. Burg Remove unnecessary FrameSnapshottingMac include in WebHTMLView.mm. db931e3
Brian J. Burg Fix missing PassOwnPtr.h include in InspectorRecordingsAgent (broke r…
…elease build).
43c2a0e
Commits on Nov 21, 2013
Brian J. Burg Web Inspector: clarify naming conventions for using cookies to
restore represented objects and view state of content views.
2e6cd41
Brian J. Burg Web Inspector: Fix a bug where childless TreeElements never look
expanded even when children are later added and selected.
b256ee1
Brian J. Burg Probes: show number, string, null, bool samples in the probe data grid. e522130
Brian J. Burg Workaround for an assertion where multiple back-forward list items
think they are visible at the same time.

https://bugs.webkit.org/show_bug.cgi?id=124685
03d29c9
Brian J. Burg Web Inspector: restore the last content view state the main resource …
…changes.

Closes #412.
0d824c5
Commits on Nov 28, 2013
Brian J. Burg Fix issues detected by check-webkit-style in all web replay backend c…
…ode.

Also fix various other issues, such as missing or misplaced ENABLE guards,
incorrect copyright line formatting, and use of nullptr, unique_ptr, etc.
5cf7b29
Brian J. Burg Web Inspector: Merge the recordings domain into the replay domain. 19a4c69
Brian J. Burg Web Inspector: track dependencies for the Replay domain's specificati…
…on file.
b568951
Brian J. Burg Web Inspector: remove unused Replay.imageCaptured inspector instrumen…
…tation.
d4ef8eb
Commits on Nov 29, 2013
Brian J. Burg Web Inspector: restore sidebar selection state after reloading or reo…
…pening inspector.

Closes #413. Closes #414.

The previous strategy for restoring content views after inspector re-open did not
consider the active sidebar and its selection, and tried to recreate the appropriate
selection from the saved content view. However, doesn't work for tree elements in
NavigationSidebarPanel that don't change views when selected---such as script
breakpoints, special breakpoints, call stack, timeline sections, etc.

The patch implements a new strategy that saves the navigation sidebar panel's
view state by serializing the selected element's represented object to a cookie.

Relevant represented object classes implement the saveIdentifierToCookie() method.
Each represented object class also adds a TypeIdentifier property to its
constructor, to aid inexact matching based on represented object type, rather
than its complete identity.

When restoring, the inspector tries to match any added tree elements against
the pending cookie, and selects the element if it matches. A represented object
matches if its serialized identity matches the one that was previously saved.

The inspector view state is now only saved on the page hide event (for saving
across reopen) and before the main frame commits its provisional load (for
saving across same-page reloads). It consolidates 5 view state settings into a
single setting in Main.js.
943de47
Commits on Nov 30, 2013
Brian J. Burg Web Inspector: remove unused ContentView.saveViewStateToCookie implem…
…entations.
7298753
Commits on Dec 09, 2013
Brian J. Burg Merge branch 'upstream' into 'timelapse'.
Fixes #415.
48a2c9b
Brian J. Burg Probes: animate breakpoint tree element when a probe sample is gathered.
This re-adds the old animation behavior.

Fixes #418.
d262590
Brian J. Burg Probes: fix breakpoint mode inconsistency when creating from popup menu.
Fixes #419.

This fixes two things:

The Breakpoint.mode setter didn't check the validity of the supplied mode.
Now, if you try to set auto-continue when no actions are attached, it will
instead set the mode to enabled.

There was a race between setting the probe breakpoint action and setting
the breakpoint's mode to auto-continue. A short timer was added as a
temporary workaround until Breakpoints have an API for batching mutations.
2f28b50
Brian J. Burg Probes: move the new probe expression entry popup to gutter context m…
…enu.

Fixes #309.

We used to want the quick-add for probe expressions to be in the gutter,
but CodeMirror bugs prevented that from working. So instead it was added
as a shift-click gutter action. Now that the gutter has a context menu,
the quick-add dialog is triggered from the "Add Probe Expression" context
menu item.
81593e4
Brian J. Burg Probes: enable code completion within quick-add probe expression popup.
Fixes #356.
0df59b9
Commits on Dec 20, 2013
Brian J. Burg Add missing enumeration value to wheelEventPhaseToString(). 9250a76
Brian J. Burg Document::scriptRunner() should return a reference. 116291e
Commits on Dec 21, 2013
Brian J. Burg Inspector: Remove old initialization code for RecordingsObserver. e5adfa1
Brian J. Burg Fix the build for !ENABLE(TIMELAPSE).
Closes #424.
2d0a090
Brian J. Burg Rename the TimerFired and TimerCreated inputs to DOMTimerFired and DO…
…MTimerCreated.
cca38cd
Brian J. Burg Add a replayable timer implementation whose instances are tracked by …
…ReplayProxy.

Closes #411.
3e22d50
Brian J. Burg Reimplement deterministic async script running with AsyncTimer mechan…
…ism.
220a911
Brian J. Burg Reimplement capture/replay of fake mouse move using ReplayTimer. eee9e56
Brian J. Burg Reimplement EventSender to use ReplayableTimer. 15a18f6
Brian J. Burg Revert spurious changes between trunk and timelapse branch. Most of t…
…hese were

introduced as my editor automatically cleaned up trailing whitespace. Some
unnecessary header includes are also removed.
032c598
Commits on Dec 24, 2013
Brian J. Burg Remove outdated timelapse docs from repository. 559ad71
Brian J. Burg Inspector: remove unused and unnecessary “enabled” flag for ReplayAgent. 191450e
Commits on Dec 25, 2013
Brian J. Burg Make PostMessageTimer release itself using std::unique_ptr. e76b7b6
Brian J. Burg Rename ReplayableTimer::invokeCallback to ::fired, to preserve compat…
…ibility with Timer.
bba7d28
Brian J. Burg Make PostMessageTimer subclass ReplayableTimer. 5cd61ba
Commits on Dec 31, 2013
Brian J. Burg Reimplement ReplayableTimers.
Each document stores a map from identifier to timer instance. Timers are added
to the map when they request a timeout via ReplayableTimer:::startOneShot().
A timer could be in multiple documents’ maps if its owner (such as a frame) moves
between several documents. Documents clear their timer maps when they are
destroyed.
a66646c
Brian J. Burg Convert FrameLoader’s checkTimer to be a replayable timer. 0afba99
Brian J. Burg Fix copyrights that should belong to the University of Washington. 7c63292
Commits on Jan 01, 2014
Brian J. Burg Merge branch ‘upstream’ into branch ‘timelapse’. d69e4f0
Brian J. Burg Web Replay: Remove accounting methods for tracking memory usage of sp…
…ecific inputs.
7cba6ad
Brian J. Burg Move dispatchTypeSpecificEncodeMethod from the JSON encoder to the ge…
…neric EncoderContext.
baf3635
Commits on Jan 02, 2014
Brian J. Burg Web Replay: nuke toString() methods from orbit, instead just stringif…
…y the JSON serialization for each input. It’s somewhat more spammy, but a better pretty printer could be hooked up easily as a new EncoderContext.
9a8cdb5
Brian J. Burg Convert CSSFontSelector to use a ReplayableTimer instance.
This fixes replay divergences in the Wikipedia en-us front page.
b70b341
Brian J. Burg Fix the !ENABLE(TIMELAPSE) build. A “using namespace” was incorrectly…
… guarded.
9b2b323
Commits on Jan 03, 2014
Brian J. Burg Somehow, a bunch of *.orig files got committed in the last merge. Rem…
…ove them.
56304d4
Brian J. Burg Revert conversion of AnimationController’s style update timer to use …
…EventSender.
046e4a5
Commits on Jan 06, 2014
@rjbailey rjbailey Sessions: Add session-related protocol messages to Replay protocol. 9e8a6fa
@rjbailey rjbailey Sessions: Implement session-related protocol messages in the backend. 32bf6d1
@rjbailey rjbailey Sessions: Update frontend to interface with the session-based protocol. b0a4c3d