Web Inspector: JSContext inspection should report exceptions in the console
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2014-02-21  Joseph Pecoraro  <pecoraro@apple.com>
2
3         Web Inspector: JSContext inspection should report exceptions in the console
4         https://bugs.webkit.org/show_bug.cgi?id=128776
5
6         Reviewed by Timothy Hatcher.
7
8         * UserInterface/ConsoleMessageImpl.js:
9         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
10         (WebInspector.ConsoleMessageImpl.prototype._shouldHideURL):
11         (WebInspector.ConsoleMessageImpl.prototype._firstNonNativeCallFrame):
12         (WebInspector.ConsoleMessageImpl.prototype._populateStackTraceTreeElement):
13         Provide better handling for "[native code]" and legacy "undefined"
14         call frame URLs. Never linkify these. Also, when showing a link
15         for an exception, always use the first non-native call frame as
16         the link location.
17
18 2014-02-21  Antoine Quint  <graouts@webkit.org>
19
20         Web Inspector: scrollbar may appear when selecting a stop in gradient editor
21         https://bugs.webkit.org/show_bug.cgi?id=129149
22
23         Reviewed by Timothy Hatcher.
24
25         Ensure the angle input is not focused as we update the size of the gradient editor's
26         popover content since, if it were, it'd make a scrollbar appear as we animate the
27         popover's frame to fit its new content.
28
29         * UserInterface/CodeMirrorGradientEditingController.js:
30         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected):
31
32 2014-02-20  Antoine Quint  <graouts@webkit.org>
33
34         Web Inspector: rich editing of CSS gradients
35         https://bugs.webkit.org/show_bug.cgi?id=119686
36
37         Reviewed by Timothy Hatcher.
38
39         Look for gradient definitions in CSS resources and implement a gradient-specific CodeMirrorEditingController
40         to edit those CSS gradients. The CodeMirrorGradientEditingController consists of a GradientSlider, a new widget
41         allowing the editing of gradient stops, a <select> to pick between various gradient types, a text input to edit
42         the gradient angle (for linear gradients) and finally a ColorPicker when a gradient stop is picked for editing.
43
44         * Localizations/en.lproj/localizedStrings.js:
45         New localized strings for the content of the gradient editing controller popover.
46
47         * UserInterface/CodeMirrorAdditions.js:
48         New .createGradientMarkers() method which, similar to .createColorMarkers(), takes in an optional TextRange, and
49         looks for all gradients specified in CSS to create TextMarkers with new type WebInspector.TextMarker.Type.Gradient.
50         In order to fully identify these CSS gradient strings, we implement a tokenizer to look for the final closing
51         parenthesis since there can be nested opening and closing parentheses as colors are specified for stops.
52
53         * UserInterface/CodeMirrorGradientEditingController.css: Added.
54         (.gradient-editing-controller):
55         (.gradient-editing-controller.edits-color):
56         (.gradient-editing-controller.radial-gradient):
57         (.gradient-editing-controller.edits-color.radial-gradient):
58         (.gradient-editing-controller select):
59         (.gradient-editing-controller .gradient-slider):
60         (.gradient-editing-controller .color-picker):
61         (.gradient-editing-controller > .color-picker > .slider):
62         (.gradient-editing-controller > .color-picker > .brightness):
63         (.gradient-editing-controller > .color-picker > .opacity):
64         (.gradient-editing-controller > label):
65         (.gradient-editing-controller.radial-gradient > label):
66         (.gradient-editing-controller.edits-color > label):
67         (.gradient-editing-controller > label > input):
68
69         * UserInterface/CodeMirrorGradientEditingController.js: Added.
70         (WebInspector.CodeMirrorGradientEditingController):
71         (WebInspector.CodeMirrorGradientEditingController.prototype.get initialValue):
72         (WebInspector.CodeMirrorGradientEditingController.prototype.get cssClassName):
73         (WebInspector.CodeMirrorGradientEditingController.prototype.get popoverPreferredEdges):
74         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverTargetFrameWithRects):
75         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverWillPresent):
76         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverDidPresent):
77         Implementation of CodeMirrorEditingController methods meant to be overridden. This allows us
78         to customize the popover's appearance, mostly to control how it attaches to the gradient
79         strings in the editor.
80
81         (WebInspector.CodeMirrorGradientEditingController.prototype.handleEvent):
82         Event handler for changes in the <select> governing gradient type and <input> for the angle.
83
84         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopsDidChange):
85         Implementation of a GradientSlider delegation method, we use this to update the .text property
86         in order to propagate the stops change to the editor.
87
88         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected):
89         Implementation of a GradientSlider delegation method, we use this to control the display of the
90         ColorPicker used to edit the color of a selected stop.
91
92         (WebInspector.CodeMirrorGradientEditingController.prototype._handleInputEvent):
93         Deal with changes in the <input> for the angle, ensuring we have a "º" string added to the value.
94
95         (WebInspector.CodeMirrorGradientEditingController.prototype._handleChangeEvent):
96         Deal with changes in the <select> for the type, preserving the stops list from one gradient type
97         to the other. Gradient type-specific information (angle for linear gradients, sizing for radial
98         gradients) is lost as we toggle between gradient types.
99
100         (WebInspector.CodeMirrorGradientEditingController.prototype._colorPickerColorChanged):
101         Propagate a color change in the ColorPicker to the stop being edited in the GradientSlider and
102         and update the .text property in order to propagate the stops change to the editor.
103
104         (WebInspector.CodeMirrorGradientEditingController.prototype._updateCSSClassForGradientType):
105         As we toggle the gradient type in ._handleChangeEvent(), update the CSS class used to hide or show
106         the angle <input> which is only relevant for linear gradients.
107
108         * UserInterface/ColorPicker.js:
109         (WebInspector.ColorPicker):
110         Adopt the new Checkers.svg file to display the checkers pattern in the background of the opacity slider.
111
112         (WebInspector.ColorPicker.prototype.get colorWheel):
113         Expose the ColorWheel such that it can be sized by ColorPicker clients.
114
115         (WebInspector.ColorPicker.prototype._updateColor):
116         Drive-by fix for a bug where we'd attempt to use the RGB components of a color to get the alpha-aware version
117         of the color even though the base format was HSL.
118
119         * UserInterface/Gradient.js: Added.
120         Parser for gradient strings as passed from the CodeMirror .createGradientMarkers() extension method. In the case
121         of linear gradients, we parse all values, save for lengths, and in the case of radial gradients, we preserve the
122         sizing information as a string and parse only the gradient stops as the sizing information is only useful to show
123         in an editor if attached to an element with metrics.
124         
125         Since instances of Gradient are used as the .value property of CodeMirrorGradientEditingController, we implement
126         the required .copy() and .toString() methods. The .toString() implementations are aware of default values for angles
127         and color stop offsets and only print those as necessary and use shorthands when possible.
128
129         (WebInspector.Gradient.fromString):
130         (WebInspector.Gradient.stopsWithComponents):
131         (WebInspector.Gradient.stringFromStops):
132         (WebInspector.LinearGradient):
133         (WebInspector.LinearGradient.linearGradientWithComponents):
134         (WebInspector.LinearGradient.prototype.copy):
135         (WebInspector.LinearGradient.prototype.toString):
136         (WebInspector.RadialGradient):
137         (WebInspector.RadialGradient.radialGradientWithComponents):
138         (WebInspector.RadialGradient.prototype.copy):
139         (WebInspector.RadialGradient.prototype.toString):
140
141         * UserInterface/GradientSlider.css: Added.
142         (.gradient-slider):
143         (.gradient-slider > canvas):
144         (.gradient-slider > .add-area):
145         (.gradient-slider-knob):
146         (.gradient-slider-knob.shadow):
147         (.gradient-slider-knob.selected):
148         (.gradient-slider-knob.detaching):
149         (.gradient-slider-knob.fade-out):
150         (.gradient-slider-knob > div):
151         (.gradient-slider-knob > img):
152
153         * UserInterface/GradientSlider.js: Added.
154         Widget used to edit a list of stops for a gradient, linear or radial. The widget features a <canvas> element
155         that draws the gradient as a linear gradient from left to right with checkers in the background to correctly
156         display transparent colors. Attached to this background, individual knobs are shown for each stop in the provided
157         stops array. These knobs can be dragged from left to right to change the matching stop offset, but also down to
158         detach the knob and remove this stop. Additionally, knobs can be clicked to toggle their selected state, where only
159         one knob can be selected at a time. The Esc. key is used to remove selection of the currently selected knob.
160
161         (WebInspector.GradientSlider):
162         (WebInspector.GradientSlider.prototype.get element):
163         (WebInspector.GradientSlider.prototype.get stops):
164         (WebInspector.GradientSlider.prototype.set stops):
165         (WebInspector.GradientSlider.prototype.get selectedStop):
166         (WebInspector.GradientSlider.prototype.handleEvent):
167         (WebInspector.GradientSlider.prototype.handleKeydownEvent):
168         (WebInspector.GradientSlider.prototype.knobXDidChange):
169         (WebInspector.GradientSlider.prototype.knobCanDetach):
170         (WebInspector.GradientSlider.prototype.knobWillDetach):
171         (WebInspector.GradientSlider.prototype.knobSelectionChanged):
172         (WebInspector.GradientSlider.prototype._handleMouseover):
173         (WebInspector.GradientSlider.prototype._handleMousemove):
174         (WebInspector.GradientSlider.prototype._handleMouseout):
175         (WebInspector.GradientSlider.prototype._handleClick):
176         (WebInspector.GradientSlider.prototype._updateShadowKnob):
177         (WebInspector.GradientSlider.prototype._sortStops):
178         (WebInspector.GradientSlider.prototype._updateStops):
179         (WebInspector.GradientSlider.prototype._updateCanvas):
180         (WebInspector.GradientSlider.prototype._updateKnobs):
181         (WebInspector.GradientSliderKnob):
182         (WebInspector.GradientSliderKnob.prototype.get element):
183         (WebInspector.GradientSliderKnob.prototype.get stop):
184         (WebInspector.GradientSliderKnob.prototype.set stop):
185         (WebInspector.GradientSliderKnob.prototype.get x):
186         (WebInspector.GradientSliderKnob.prototype.set x):
187         (WebInspector.GradientSliderKnob.prototype.get y):
188         (WebInspector.GradientSliderKnob.prototype.set y):
189         (WebInspector.GradientSliderKnob.prototype.get wellColor):
190         (WebInspector.GradientSliderKnob.prototype.set wellColor):
191         (WebInspector.GradientSliderKnob.prototype.get selected):
192         (WebInspector.GradientSliderKnob.prototype.set selected):
193         (WebInspector.GradientSliderKnob.prototype.handleEvent):
194         (WebInspector.GradientSliderKnob.prototype._handleMousedown):
195         (WebInspector.GradientSliderKnob.prototype._handleMousemove):
196         (WebInspector.GradientSliderKnob.prototype._handleMouseup):
197         (WebInspector.GradientSliderKnob.prototype._handleTransitionEnd):
198         (WebInspector.GradientSliderKnob.prototype._updateTransform):
199
200         * UserInterface/Images/Checkers.svg: Added.
201         New asset to draw checkers for color wells.
202
203         * UserInterface/Images/GradientStop.png: Added.
204         * UserInterface/Images/GradientStop@2x.png: Added.
205         * UserInterface/Images/GradientStopSelected.png: Added.
206         * UserInterface/Images/GradientStopSelected@2x.png: Added.
207         New assets used by the gradient slider.
208
209         * UserInterface/Main.html:
210         Link to the new source files.
211
212         * UserInterface/SourceCodeTextEditor.js:
213         (WebInspector.SourceCodeTextEditor.prototype._updateEditableMarkers):
214         Add a call to .createGradientMarkers() such that we support editing of CSS gradients in such editors.
215
216         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
217         Also recognize gradient markers as valid editable markers.
218
219         * UserInterface/TextEditor.js:
220         (WebInspector.TextEditor.prototype.createGradientMarkers):
221         Wrapper for the CodeMirror extension method .createGradientMarkers() such that it may be used by subclasses
222         that have no knowledge of CodeMirror.
223
224         (WebInspector.TextEditor.prototype.editingControllerForMarker):
225         Return a CodeMirrorGradientEditingController for TextMarkers with WebInspector.TextMarker.Type.Gradient type.
226
227         * UserInterface/TextMarker.js:
228         Add the WebInspector.TextMarker.Type.Gradient type.
229
230 2014-02-20  Antoine Quint  <graouts@webkit.org>
231
232         Web Inspector: create a CodeMirrorEditingController superclass
233         https://bugs.webkit.org/show_bug.cgi?id=129094
234
235         Reviewed by Timothy Hatcher.
236
237         Take code that is generic to editing of any text marker out of CodeMirrorColorEditingController to
238         create a new CodeMirrorEditingController superclass that'll be fit to use for future editing controllers.
239         Additioanlly, we fix existing issues with such editing by supporting text markers spread across several
240         lines and more robustly handling the Esc. key being pressed to dismiss a controller's popover.
241
242         * UserInterface/CSSStyleDeclarationTextEditor.js:
243         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
244         Adopt the new .createColorMarkers() method signature to provide a TextRange parameter rather than a single
245         line number.
246
247         * UserInterface/CodeMirrorAdditions.js:
248         Remove the .boundsForRange() method in favor of a .rectsForRange() method which will allow us to draw better
249         menus when hovering over a text range by providing tight bounds rather than a large box. We also handle any
250         line wrapping produced by CodeMirror and remove any leading white-space so that the rects are tight to the
251         actual characters in the text marker.
252
253         We also change .createColorMarkers() to take in a TextRange parameter rather than a line number in order to
254         better deal with text markers spread across multiple lines.
255
256         * UserInterface/CodeMirrorColorEditingController.js:
257         Remove any code that is adequate for any editing controller (which is moving to CodeMirrorEditingController).
258         We also adopt new interfaces exposed by CodeMirrorEditingController.
259
260         (WebInspector.CodeMirrorColorEditingController):
261         (WebInspector.CodeMirrorColorEditingController.prototype.get initialValue):
262         (WebInspector.CodeMirrorColorEditingController.prototype.get cssClassName):
263         (WebInspector.CodeMirrorColorEditingController.prototype.popoverWillPresent):
264         (WebInspector.CodeMirrorColorEditingController.prototype.popoverDidPresent):
265         (WebInspector.CodeMirrorColorEditingController.prototype._colorPickerColorChanged):
266
267         * UserInterface/CodeMirrorEditingController.js: Copied from Source/WebInspectorUI/UserInterface/CodeMirrorColorEditingController.js.
268         New class meant to be subclassed by any future editing controller, and already subclassed by
269         CodeMirrorColorEditingController. This class exposes several hooks for subclasses to customize its behavior:
270         
271         .initialValue: a value we can revert to if the editing is canceled
272         .cssClassName: a CSS class name that can be added to the editing controller's container
273         .popoverPreferredEdges: a list of preferredEdges as passed to Popover.prototype.present() with a sensible default
274         .popoverTargetFrameWithRects: a targetFrame passed to Popover.prototype.present(), defaults to a union of provided rects
275         .popoverWillPresent: called as the popover is about to be presented, typically overridden to set the popover's content
276         .popoverDidPresent: called as the popover just was presented, typically overridden when content needs to tuned only after
277         being added to the DOM and setting of the necessary machinery to update the serialized value in the editor based on interaction
278         within the popover without changing the serialized value upon showing the popover the very first time.
279         
280         Additionally, the .value property must be an object supporting .toString() and .copy() method.
281
282         Finally, the .editingControllerDidStartEditing() and .editingControllerDidFinishEditing() delegate methods are fired
283         as editing begins and finishes. 
284
285         (WebInspector.CodeMirrorEditingController):
286         (WebInspector.CodeMirrorEditingController.prototype.get marker):
287         (WebInspector.CodeMirrorEditingController.prototype.get range):
288         (WebInspector.CodeMirrorEditingController.prototype.get value):
289         (WebInspector.CodeMirrorEditingController.prototype.set value):
290         (WebInspector.CodeMirrorEditingController.prototype.get delegate):
291         (WebInspector.CodeMirrorEditingController.prototype.set delegate):
292         (WebInspector.CodeMirrorEditingController.prototype.get text):
293         (WebInspector.CodeMirrorEditingController.prototype.set text):
294         (WebInspector.CodeMirrorEditingController.prototype.get initialValue):
295         (WebInspector.CodeMirrorEditingController.prototype.get cssClassName):
296         (WebInspector.CodeMirrorEditingController.prototype.get popover):
297         (WebInspector.CodeMirrorEditingController.prototype.get popoverPreferredEdges):
298         (WebInspector.CodeMirrorEditingController.prototype.popoverTargetFrameWithRects):
299         (WebInspector.CodeMirrorEditingController.prototype.presentHoverMenu):
300         (WebInspector.CodeMirrorEditingController.prototype.dismissHoverMenu):
301         (WebInspector.CodeMirrorEditingController.prototype.popoverWillPresent):
302         (WebInspector.CodeMirrorEditingController.prototype.popoverDidPresent):
303
304         (WebInspector.CodeMirrorEditingController.prototype.handleKeydownEvent):
305         Event handler for keydown events as registered via the new WebInspector.addWindowKeydownListener() method.
306
307         (WebInspector.CodeMirrorEditingController.prototype.hoverMenuButtonWasPressed):
308         (WebInspector.CodeMirrorEditingController.prototype.didDismissPopover):
309
310         * UserInterface/Geometry.js:
311         (WebInspector.Rect.unionOfRects):
312         (WebInspector.Rect.prototype.unionWithRect):
313         New utilities to get a Rect that is the union of the provided Rect or array of Rects.
314
315         (WebInspector.Polygon):
316         (WebInspector.Polygon.prototype.bounds):
317         New class used to store a list of points for a polygon and get its bounds, used by the HoverMenu class.
318
319         * UserInterface/HoverMenu.css:
320         (.hover-menu):
321         (.hover-menu > svg):
322         (.hover-menu > svg > rect):
323         (.hover-menu > img):
324
325         * UserInterface/HoverMenu.js:
326         We remove the assumption that a HoverMenu is only used to draw a single rounded rect based on a simple
327         Rect and instead support presentation based on an array of Rects where we either:
328         
329         - draw a single rounded rectangle if there is only a single Rect provided
330         - draw two disconnected open-ended rects if we're provided with two non-overlapping Rects
331         - draw a polygon surrounding all provided Rects in all other cases
332
333         No matter how the HoverMenu is drawn, the drawing is performed in SVG with either <rect> or a <path> elements.
334
335         (WebInspector.HoverMenu):
336         (WebInspector.HoverMenu.prototype.present):
337         (WebInspector.HoverMenu.prototype.dismiss):
338         (WebInspector.HoverMenu.prototype.handleEvent):
339         (WebInspector.HoverMenu.prototype._handleClickEvent):
340         (WebInspector.HoverMenu.prototype._drawOutline):
341         (WebInspector.HoverMenu.prototype._addRect):
342         (WebInspector.HoverMenu.prototype._addPath):
343         (WebInspector.HoverMenu.prototype._drawSingleLine):
344         (WebInspector.HoverMenu.prototype._drawTwoNonOverlappingLines):
345         (WebInspector.HoverMenu.prototype._drawOverlappingLines):
346
347         * UserInterface/Main.html:
348         Link to the new CodeMirrorEditingController class.
349
350         * UserInterface/Main.js:
351         Expose a new mechanism to deal with window-level handling of keydown events in order to allow
352         a list of handlers to accept or reject dealing with the provided keydown event based on the order
353         they were registered, in most recent to oldest registered handler. This allows, for instance, for
354         a more graceful handling of the Esc. key being pressed in the CodeMirrorEditingController and
355         bypasses the DOM structure allowing for objects managing elements in different DOM hierarchies
356         to compete with handling of keydown events.
357
358         (WebInspector.loaded):
359         (WebInspector.addWindowKeydownListener):
360         (WebInspector.removeWindowKeydownListener):
361         (WebInspector._updateWindowKeydownListener):
362         (WebInspector._sharedWindowKeydownListener):
363
364         * UserInterface/SourceCodeTextEditor.css:
365         (.hover-menu.color > img):
366         Update the offset applied to a HoverMenu button based on the change of layout for such buttons which
367         are now absolutely positioned in code by HoverMenu rather than being laid out using the flex-box model.
368
369         * UserInterface/SourceCodeTextEditor.js:
370         Abstrct away the assumption that only a color editing controller may be used to edit text markers in
371         a source code text editor.
372
373         (WebInspector.SourceCodeTextEditor.prototype.hidden):
374         Ensure we remove any currently-displayed hover menu for an editing controller when the editor is hidden.
375         This would happen in the situation where a keyboard shortcut was used to jump to another part of the
376         Web Inspector UI without using the mouse.
377
378         (WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
379         Since we're now working with text ranges rather than lines, remove the code where we'd work out a set of
380         changed lines and call ._updateEditableMarkers() with the changed range directly instead.
381
382         (WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
383         (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
384         (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerMouseOutOfHoveredMarker):
385         Adopt the more generic method names rather than color-specific ones.
386
387         (WebInspector.SourceCodeTextEditor.prototype._showPopover):
388         When showing the popover outside of the use of a CodeMirrorEditingController, such as a JavaScript expression
389         when debugging, also deal with the possibility of the highlighted range containing multiple lines rather
390         than assume a single line.
391
392         (WebInspector.SourceCodeTextEditor.prototype._updateEditableMarkers):
393         More generic method name to support future, non-color editing controllers.
394
395         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
396         Find the outermost marker in the list of markers provided such that a marker containing other markers
397         shows the UI for the containing marker. For instance, a gradient marker would contain several color
398         markers and it's preferable to show the editing UI for the whole gradient rather than a specific color.
399
400         Additionally, adopt more generic ivars and method names to support future, non-color editing controllers.
401
402         (WebInspector.SourceCodeTextEditor.prototype._dismissEditingController):
403         Support for new parameter instructing that the editing controller dismissal should be instant rather than
404         animated, which is the default. This is useful when, for instance, the text editor is cleared.
405
406         (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidStartEditing):
407         (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidFinishEditing):
408         Adopt the more generic method names rather than color-specific ones.
409
410         * UserInterface/TextEditor.js:
411         (WebInspector.TextEditor.prototype.rectsForRange):
412         Remove .boundsForRange() in favor of this new method where we return a series of rects so that we may
413         draw a more pleasing HoverMenu.
414
415         (WebInspector.TextEditor.prototype.createColorMarkers):
416         Use a TextRanger rather than a single line number to match the underlying CodeMirror extension method.
417
418         (WebInspector.TextEditor.prototype.editingControllerForMarker):
419         Use the provided TextMarker's type to provide the most adequate CodeMirrorEditingController class.
420
421         * UserInterface/TextMarker.js:
422         (WebInspector.TextMarker.prototype.get rects):
423         Remove the .bounds property in favor of .rects to match the underlying CodeMirror extension method.
424
425 2014-02-20  Antoine Quint  <graouts@webkit.org>
426
427         Web Inspector: Popover should animate its frame to display its refreshed content
428         https://bugs.webkit.org/show_bug.cgi?id=129088
429
430         Reviewed by Timothy Hatcher.
431
432         When calling .update(), we now check whether we can animate the change of frame provided the
433         new computed frame to best fit the current content still matches the edge the popover uses
434         to attach to the target frame. If we find that we can do so, we animate the background frame
435         of the popover while ensuring the anchor point remains stable during the animation such that
436         only the popover's frame seems to animate.
437
438         * UserInterface/Geometry.js:
439         (WebInspector.Rect.prototype.round):
440         Returns a new Rect with rounded values, using a floor for the position and a ceil for the size.
441
442         * UserInterface/Main.html:
443         Link to the new UnitBezier.js source file.
444
445         * UserInterface/Popover.js:
446         (WebInspector.Popover):
447         Make ._anchorPoint an ivar such that we don't need to pass a reference to the anchorPoint into
448         the various calls leading to an update of the popover's background drawing.
449
450         (WebInspector.Popover.prototype.set frame):
451         We no longer round the values of the frame here, instead calling the new .round() method on Rect
452         in places where we compute a new frame.
453
454         (WebInspector.Popover.prototype.set content):
455         (WebInspector.Popover.prototype.update):
456         Update the calls to ._update() to set the new shouldAnimate flag to true in situations where the
457         popover is already visible.
458
459         (WebInspector.Popover.prototype._update):
460         In the situation where there is a preference to animate the frame, as set by the new shouldAnimate
461         parameter, check that we can indeed animate by ensuring that the edge the popover uses to attach to
462         the target frame remains the same upon computing the new best metrics for the new content size. If
463         we can indeed animate, call _animateFrame(), otherwise set the new frame, anchor point and frame
464         drawing discretely like we used to.
465
466         (WebInspector.Popover.prototype._setAnchorPoint):
467         New method to ensure we floor the position of the anchor point to ensure, when animating, that the
468         anchor point remains stationary.
469
470         (WebInspector.Popover.prototype._animateFrame):
471         Using the new UnitBezier class, animate the popover frame from its previous value to its newly computed
472         value while ensuring the anchor point remains, at all times, the same absolute position such that it
473         remains stationary during the animation. The spline used to animate the frame is the same that a CSS
474         transition set with an "ease" timing-function (default value) would use.
475
476         (WebInspector.Popover.prototype._drawBackground):
477         (WebInspector.Popover.prototype._drawFrame):
478         Adopt new ._edge and ._anchorPoint ivars.
479
480         * UserInterface/UnitBezier.js: Added.
481         New class used to perform animations using a timing function specified with a cubic Bézier curve. The code
482         is directly adapted from the Source/WebCore/platform/graphics/UnitBezier.h file.
483
484         (WebInspector.UnitBezier):
485         (WebInspector.UnitBezier.prototype.solve):
486         (WebInspector.UnitBezier.prototype._sampleCurveX):
487         (WebInspector.UnitBezier.prototype._sampleCurveY):
488         (WebInspector.UnitBezier.prototype._sampleCurveDerivativeX):
489         (WebInspector.UnitBezier.prototype._solveCurveX):
490
491 2014-02-20  Antoine Quint  <graouts@webkit.org>
492
493         Web Inspector: content using a CSS transition within a popover causes the popover to disappear
494         https://bugs.webkit.org/show_bug.cgi?id=129089
495
496         Reviewed by Timothy Hatcher.
497
498         Simply check that the element being transitioned is indeed the popover's container before assuming
499         that the "transitonend" received was for a fade-out transition.
500
501         * UserInterface/Popover.js:
502         (WebInspector.Popover.prototype.handleEvent):
503
504 2014-02-20  Antoine Quint  <graouts@webkit.org>
505
506         Web Inspector: clicking on a color swatch in the Computed styles tab shouldn't show the color editing popover
507         https://bugs.webkit.org/show_bug.cgi?id=129093
508
509         Reviewed by Timothy Hatcher.
510
511         If the current editor is read-only, only allow cycling between color types since it wouldn't make sense to edit
512         such colors.
513
514         * UserInterface/CSSStyleDeclarationTextEditor.js:
515
516 2014-02-19  Joseph Pecoraro  <pecoraro@apple.com>
517
518         Web Inspector: Remove unused InspectorBackend member variable
519         https://bugs.webkit.org/show_bug.cgi?id=129053
520
521         Reviewed by Timothy Hatcher.
522
523         * UserInterface/InspectorBackend.js:
524         (InspectorBackendClass):
525         (InspectorBackendClass.prototype.registerCommand):
526         (InspectorBackendClass.prototype.registerEnum):
527         (InspectorBackendClass.prototype.registerEvent):
528
529 2014-02-19  James Craig  <jcraig@apple.com>
530
531         Web Inspector: AX: clarify reason for ignored state where possible (hidden, default for tag, etc)
532         https://bugs.webkit.org/show_bug.cgi?id=129037
533
534         Reviewed by Timothy Hatcher.
535
536         Passing back hidden and ignoredByDefault attrs to clarify some reasons for "ignored" status.
537
538         * Localizations/en.lproj/localizedStrings.js:
539         * UserInterface/DOMNode.js:
540         * UserInterface/DOMNodeDetailsSidebarPanel.js:
541
542 2014-02-18  James Craig  <jcraig@apple.com>
543
544         Web Inspector: AX: more properties: exists, required, and invalid (exists was previously combined with ignored)
545         https://bugs.webkit.org/show_bug.cgi?id=128504
546
547         Reviewed by Timothy Hatcher.
548
549         Additions to the accessibility node inspector: exists, required, invalid.
550
551         * Localizations/en.lproj/localizedStrings.js:
552         * UserInterface/DOMNode.js:
553         * UserInterface/DOMNodeDetailsSidebarPanel.js:
554
555 2014-02-18  Antoine Quint  <graouts@webkit.org>
556
557         Web Inspector: editing a color in the Styles sidebar using the color picker only works once for a given color
558         https://bugs.webkit.org/show_bug.cgi?id=128965
559
560         Reviewed by Timothy Hatcher.
561
562         Use the WebInspector.TextMarker backing the CodeMirror TextMarker object to inspect its type in
563         order to identify color markers that were created for a color. This fixes a regression introduced
564         in http://webkit.org/b/125695 when we abstracted CodeMirror TextMarker objects.
565
566         * UserInterface/CSSStyleDeclarationTextEditor.js:
567         (WebInspector.CSSStyleDeclarationTextEditor.prototype._colorSwatchClicked.updateCodeMirror.update):
568         (WebInspector.CSSStyleDeclarationTextEditor.prototype._colorSwatchClicked.updateCodeMirror):
569
570 2014-02-18  Antoine Quint  <graouts@webkit.org>
571
572         Web Inspector: Editing transparent color shows incorrect opacity slider
573         https://bugs.webkit.org/show_bug.cgi?id=128975
574
575         Reviewed by Joseph Pecoraro.
576
577         The opacity slider should show a range of colors from transparent to the full opacity of the tinted color.
578
579         * UserInterface/ColorPicker.js:
580         (WebInspector.ColorPicker.prototype._updateSliders):
581
582 2014-02-18  Joseph Pecoraro  <pecoraro@apple.com>
583
584         Web Inspector: shift-clicking #fff swatch results in bad rgb value
585         https://bugs.webkit.org/show_bug.cgi?id=128954
586
587         Reviewed by Daniel Bates.
588
589         parseInt("FF", 16) is already 255. Do not multiply the result by 255.
590
591         * UserInterface/Color.js:
592         (WebInspector.Color.fromString):
593
594 2014-02-18  Antoine Quint  <graouts@webkit.org>
595
596         Web Inspector: color picker sliders sometime look wrong on Retina display
597         https://bugs.webkit.org/show_bug.cgi?id=128963
598
599         Reviewed by Timothy Hatcher.
600
601         Round the values used to position and size popovers in order to ensure that their content don't suffer
602         from poor pixel alignment on Retina displays.
603
604         * UserInterface/Popover.js:
605         (WebInspector.Popover.prototype.set frame):
606
607 2014-02-17  Antoine Quint  <graouts@webkit.org>
608
609         Web Inspector: CSS selectors containing a color name shouldn't be considered for color editing
610         https://bugs.webkit.org/show_bug.cgi?id=128909
611
612         Reviewed by Joseph Pecoraro.
613
614         Disregard any text that might be contained within a CSS selector.
615
616         * UserInterface/CodeMirrorAdditions.js:
617
618 2014-02-15  Chris J. Shull  <chrisjshull@gmail.com>
619
620         Web Inspector: scope chain details sidebar doesn't update values modified via console
621         https://bugs.webkit.org/show_bug.cgi?id=126855
622
623         Reviewed by Timothy Hatcher.
624
625         Add a RuntimeManager event that the scope chain details sidebar can 
626         listen to to trigger refresh.
627
628         Testing on this is blocked by http://webkit.org/b/128724
629         (Web Inspector: Issue testing breakpoints).
630
631         * UserInterface/RuntimeManager.js:
632         (WebInspector.RuntimeManager.prototype.evalCallback):
633         (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
634         * UserInterface/ScopeChainDetailsSidebarPanel.js:
635         (WebInspector.ScopeChainDetailsSidebarPanel):
636
637 2014-02-14  Antoine Quint  <graouts@webkit.org>
638
639         Web Inspector: color wheel should support Retina displays
640         https://bugs.webkit.org/show_bug.cgi?id=124355
641
642         Reviewed by Timothy Hatcher.
643
644         Take into account the devicePixelRatio in order to draw the color wheel
645         with as many colors as we can draw with the current DPI and to correctly
646         convert from page coordinates to canvas coordinates when dealing with
647         mouse events.
648
649         * UserInterface/ColorWheel.js:
650         (WebInspector.ColorWheel.prototype.set dimension):
651         (WebInspector.ColorWheel.prototype.get tintedColor):
652         (WebInspector.ColorWheel.prototype.get rawColor):
653         (WebInspector.ColorWheel.prototype._drawRawCanvas):
654         (WebInspector.ColorWheel.prototype._colorAtPointWithBrightness):
655         (WebInspector.ColorWheel.prototype._drawTintedCanvas):
656         (WebInspector.ColorWheel.prototype._draw):
657
658 2014-02-13  Brian Burg  <bburg@apple.com>
659
660         Web Inspector: DataGrid should support editing tables with arbitrary columns
661         https://bugs.webkit.org/show_bug.cgi?id=128619
662
663         Reviewed by Timothy Hatcher.
664
665         The data grid editing code should work with any columns, but was previously
666         hardcoded with the column identifiers used by DOMStorageView. This patch
667         makes the editing code work with any column identifiers. It also fixes some
668         bugs in previous/next navigation during data entry.
669
670         * UserInterface/DOMStorageContentView.css: Highlight missing keys and values.
671         (.content-view.dom-storage > .data-grid tr.missing-value td.value-column):
672         (.content-view.dom-storage > .data-grid:focus tr.selected.missing-value td.value-column):
673
674         * UserInterface/DOMStorageContentView.js: Don't blow away the entire table
675         whenever the backend notifies us of an update to the storage object. This
676         caused the editing state to be destroyed when values were entered interactively.
677
678         (WebInspector.DOMStorageContentView.prototype.reset): Inline the callback
679         passed to DOMStorageObject.getEntries().
680         (WebInspector.DOMStorageContentView.prototype.itemsCleared):
681         (WebInspector.DOMStorageContentView.prototype.itemAdded): Request a sort
682         of the table rows after backend tells us about item additions or updates.
683
684         (WebInspector.DOMStorageContentView.prototype.itemUpdated): Request a sort
685         of the table rows after backend tells us about item additions or updates.
686
687         (WebInspector.DOMStorageContentView.prototype._sortDataGrid): Use DataGrid's
688         built-in sorting function.
689
690         (WebInspector.DOMStorageContentView.prototype._deleteCallback):
691         (WebInspector.DOMStorageContentView.prototype._editingCallback): Don't force
692         recreation of the entire table whenever editing finishes. Perform most
693         of the error checking and editing logic here, including when to insert a
694         new placeholder row, and when to commit the entered values to DOM storage.
695
696         * UserInterface/DOMStorageObject.js: Keep track of the DOM storage entries
697         in the model so we can detect duplicate entries. Remove unused `id` arguments.
698
699         (WebInspector.DOMStorageObject):
700         (WebInspector.DOMStorageObject.prototype.get entries):
701         (WebInspector.DOMStorageObject.prototype.itemsCleared):
702         (WebInspector.DOMStorageObject.prototype.itemRemoved):
703         (WebInspector.DOMStorageObject.prototype.set this):
704         (WebInspector.DOMStorageObject.prototype.itemAdded):
705         (WebInspector.DOMStorageObject.prototype.set var):
706         (WebInspector.DOMStorageObject.prototype.itemUpdated):
707
708         * UserInterface/DataGrid.js:
709         (.sortDataGrid):
710         (WebInspector.DataGrid.createSortableDataGrid): Use the built-in DataGrid
711         sortNodes() implementation.
712         (WebInspector.DataGrid.prototype._startEditingNodeAtColumnIndex): Renamed
713         from _startEditingColumnOfDataGridNode. It's easier to understand the navigation
714         code when presented in terms of adjusting column indexes rather than identifiers.
715
716         (WebInspector.DataGrid.prototype._startEditing):
717         (WebInspector.DataGrid.prototype.determineNextCell): Added. Decides which
718         column and row to edit next and whether the table can be sorted before the
719         next cell edit begins.
720
721         (WebInspector.DataGrid.prototype.moveToNextCell): Added. Wrapper method for
722         the above which handles sorting and beginning the next cell edit.
723
724         (WebInspector.DataGrid.prototype._editingCommitted): Use better helper methods.
725         (WebInspector.DataGrid.prototype._editingCancelled): Add an assert.
726         (WebInspector.DataGrid.prototype.get sortColumnIdentifier): Shorten.
727         (WebInspector.DataGrid.prototype.addPlaceholderNode):
728         (WebInspector.DataGrid.prototype.removeChild):
729         (WebInspector.DataGrid.prototype.):
730         (WebInspector.DataGrid.prototype.sortNodes): Remove unecessary copying
731         of all nodes into a separate array. Defer sorting if the user is in the
732         middle of editing a cell. Make placeholder nodes always sort to the bottom
733         regardless of the sort column identifier and sort direction.
734
735         (WebInspector.DataGridNode.prototype._attach):
736         (WebInspector.PlaceholderDataGridNode): Renamed from CreationDataGridNode.
737         (WebInspector.PlaceholderDataGridNode.prototype.makeNormal):
738
739         * UserInterface/StorageManager.js: Don't pass unused id argument.
740         (WebInspector.StorageManager.prototype.itemRemoved):
741         (WebInspector.StorageManager.prototype.itemAdded):
742         (WebInspector.StorageManager.prototype.itemUpdated):
743
744 2014-02-13  Brian Burg  <bburg@apple.com>
745
746         Web Inspector: long script names should be have text-overflow:ellipsis in probe details sidebar
747         https://bugs.webkit.org/show_bug.cgi?id=128550
748
749         Reviewed by Timothy Hatcher.
750
751         Make the link element 'display: block', place it after the floated icons,
752         and set the appropriate CSS overflow properties.
753
754         * UserInterface/ProbeDetailsSidebarPanel.css:
755         (.details-section.probe-set .options > a.go-to-link):
756         * UserInterface/ProbeSetDetailsSection.js:
757         (WebInspector.ProbeSetDetailsSection):
758
759 2014-02-13  Javier Fernandez  <jfernandez@igalia.com>
760
761         [CSS Grid Layout] Rename named areas property
762         https://bugs.webkit.org/show_bug.cgi?id=127990
763
764         Reviewed by Sergio Villar Senin.
765
766         From Blink r165891 by <rego@igalia.com>
767
768         The property 'grid-template' has been renamed to 'grid-template-areas'
769         in the last two versions of the spec.
770
771         * Tools/PrettyPrinting/css.js:
772         * UserInterface/External/CodeMirror/css.js:
773
774 2014-02-11  Brian Burg  <bburg@apple.com>
775
776         Web Inspector: DOMStorageView should listen for events from DOMStorageObject
777         https://bugs.webkit.org/show_bug.cgi?id=128620
778
779         Reviewed by Timothy Hatcher.
780
781         The storage manager used to have a map of DOMStorageViews and delivered events
782         directly to them. Instead, the DOMStorageObserver should use the manager to
783         find the appropriate DOMStorageObject and deliver events to it. DOMStorageView
784         learns about storage updates from DOMStorageObject events.
785
786         * UserInterface/DOMStorageContentView.js:
787         (WebInspector.DOMStorageContentView): Add event listeners.
788         (WebInspector.DOMStorageContentView.prototype.reset): Renamed from update().
789         (WebInspector.DOMStorageContentView.prototype.itemsCleared): Take an event argument.
790         (WebInspector.DOMStorageContentView.prototype.itemRemoved): Take an event argument.
791         Use for..of when iterating over nodes.
792         (WebInspector.DOMStorageContentView.prototype.itemAdded): Take an event argument.
793         Use for..of when iterating over nodes.
794         (WebInspector.DOMStorageContentView.prototype.itemUpdated): Take an event argument.
795         Use for..of when iterating over nodes.
796         * UserInterface/DOMStorageObject.js:
797         (WebInspector.DOMStorageObject.prototype.removeItem): Moved.
798         (WebInspector.DOMStorageObject.prototype.setItem): Moved.
799         (WebInspector.DOMStorageObject.prototype.itemsCleared): Added.
800         (WebInspector.DOMStorageObject.prototype.itemRemoved): Added.
801         (WebInspector.DOMStorageObject.prototype.itemAdded): Added.
802         (WebInspector.DOMStorageObject.prototype.itemUpdated): Added.
803         * UserInterface/DOMStorageObserver.js: Look up and notify the associated model.
804         (WebInspector.DOMStorageObserver.prototype.domStorageItemsCleared):
805         (WebInspector.DOMStorageObserver.prototype.domStorageItemRemoved):
806         (WebInspector.DOMStorageObserver.prototype.domStorageItemAdded):
807         (WebInspector.DOMStorageObserver.prototype.domStorageItemUpdated):
808         * UserInterface/StorageManager.js: Remove view lookup code. Remove
809         direct calls to DOMStorageViews.
810         (WebInspector.StorageManager.prototype.itemsCleared):
811         (WebInspector.StorageManager.prototype.itemRemoved):
812         (WebInspector.StorageManager.prototype.itemAdded):
813         (WebInspector.StorageManager.prototype.itemUpdated):
814         (WebInspector.StorageManager.prototype.domStorageWasUpdated):
815         (WebInspector.StorageManager.prototype.inspectDOMStorage):
816         (WebInspector.StorageManager.prototype._domStorageForIdentifier):
817         (WebInspector.StorageManager.prototype._addDOMStorageIfNeeded):
818         (WebInspector.StorageManager.prototype._databaseForIdentifier):
819
820 2014-02-11  James Craig  <jcraig@apple.com>
821
822         Web Inspector: AX: Accessibility Node Inspection
823         https://bugs.webkit.org/show_bug.cgi?id=127447
824
825         Reviewed by Timothy Hatcher.
826
827         New Accessibility section in WebInspector Node Inspector.
828         Version 1.0 only shows computed role. Computed label should come soon.
829
830         Removed CSS fixed table layout b/c CSS bug: http://webkit.org/b/128294
831
832         * Localizations/en.lproj/localizedStrings.js:
833         * UserInterface/DOMNode.js:
834         * UserInterface/DOMNodeDetailsSidebarPanel.js:
835         * UserInterface/DetailsSection.css:
836         * UserInterface/InspectorWebBackendCommands.js:
837
838 2014-02-10  Joseph Pecoraro  <pecoraro@apple.com>
839
840         Web Inspector: Update License copyrights in minified JavaScript
841         https://bugs.webkit.org/show_bug.cgi?id=128547
842
843         Reviewed by Timothy Hatcher.
844
845         * Scripts/copy-user-interface-resources.sh:
846
847 2014-02-07  Brian Burg  <bburg@apple.com>
848
849         Web Inspector: show probe sets for script content views in the details sidebar
850         https://bugs.webkit.org/show_bug.cgi?id=128333
851
852         Reviewed by Timothy Hatcher.
853
854         This patch adds a new details sidebar for showing the probes associated with any
855         breakpoint in the currently visible source file. Each probe set (corresponding to
856         multiple actions of single breakpoint) gets its own ProbeSetDetailsSection. The
857         section contains a custom DataGrid subclass to display probe data, and some icons
858         for clearing samples, deleting the probe, and adding a new probe expression.
859
860         The table containing probe data keeps its columns in sync with the probe set's
861         probe expressions. To support this, DataGrid has been further refactored to support
862         removing columns, and inserting columns (rather than only appending). With this
863         capability, probe columns are removed and re-inserted when the expression changes.
864
865         The availability of the probe details sidebar is controlled by providing the
866         probe sets matching the script content view's resource URL as supplemental
867         represented objects.
868
869         Lastly, added the utility EventListenerSet class. This holds a set of event listeners
870         that should be added and removed together, and takes care of binding `thisObject`
871         according to whether the event emitter is a `Node` or `WebInspector.Object`.
872
873         * Localizations/en.lproj/localizedStrings.js:
874         * UserInterface/BreakpointActionView.js:
875         (WebInspector.BreakpointActionView):
876         (WebInspector.BreakpointActionView.prototype._removeAction): Renamed from removeButtonClicked.
877         (WebInspector.BreakpointActionView.prototype._codeMirrorBlurred): Change the behavior
878         of CodeMirror-backed editors for probe and evaluate expression actions. If the expression
879         consists entirely of trimmable whitespace, then delete the action rather than saving it.
880
881         * UserInterface/DataGrid.js:
882         (WebInspector.DataGrid): Copy over the column data into a map inside insertColumn() instead.
883         (WebInspector.DataGrid.prototype.insertColumn): Renamed from addColumn. It now takes an
884         optional `insertionIndex` argument and splices the column before the element at that index.
885         Also, convert code to use EventListenerSet for adding/removing per-column event listeners.
886
887         (WebInspector.DataGrid.prototype.removeColumn): Added. It splices the column out.
888         (WebInspector.DataGridNode.prototype.isEventWithinDisclosureTriangle): Whitespace.
889         * UserInterface/EventListenerSet.js: Added.
890         (WebInspector.EventListenerSet):
891         (WebInspector.EventListenerSet.prototype.register):
892         (WebInspector.EventListenerSet.prototype.unregister):
893         (WebInspector.EventListenerSet.prototype.install):
894         (WebInspector.EventListenerSet.prototype.uninstall):
895         * UserInterface/Images/NavigationItemProbes.pdf: Added.
896         * UserInterface/LayerTreeDataGrid.js:
897         (WebInspector.LayerTreeDataGrid.prototype._updateChildren): Fix a missing column.get().
898         * UserInterface/Main.html: Add new JavaScript and CSS files.
899         * UserInterface/Main.js:
900         (WebInspector.contentLoaded): Add the probe details sidebar.
901         * UserInterface/ProbeDetailsSidebarPanel.css: Added.
902         (.sidebar > .panel.probes > .navigation-bar):
903         (.sidebar > .panel.probes > .content):
904         (.details-section.probe-set .options > .probe-add):
905         (.details-section.probe-set .options > .probe-clear-samples):
906         (.details-section.probe-set .options > .probe-remove):
907         (.details-section.probe-set .options > input):
908         (.panel.probes ::-webkit-scrollbar):
909         (.panel.probes ::-webkit-scrollbar-track):
910         (.panel.probes ::-webkit-scrollbar-thumb):
911         (.panel.probes ::-webkit-scrollbar-corner):
912         (.popover .probe-popover):
913         (.popover .probe-popover input):
914         * UserInterface/ProbeDetailsSidebarPanel.js: Added.
915         (WebInspector.ProbeDetailsSidebarPanel):
916         (WebInspector.ProbeDetailsSidebarPanel.prototype.get inspectedProbeSets):
917         (WebInspector.ProbeDetailsSidebarPanel.prototype._probeSetAdded):
918         * UserInterface/ProbeManager.js: Remove unused `probeSetForBreakpoint` function.
919         * UserInterface/ProbeSet.js: Fix erroneous uses of `probe.identifier` instead of `probe.id`.
920         (WebInspector.ProbeSet.prototype.removeProbe):
921         (WebInspector.ProbeSet.prototype._sampleCollected):
922         * UserInterface/ProbeSetDataGrid.css: Added.
923         (.details-section.probe-set .data-grid .data-container tr.past-value td):
924         (.details-section.probe-set .data-grid > .data-container td.unknown-value):
925         (.details-section.probe-set .data-grid .data-container tr.revealed.highlighted):
926         (@-webkit-keyframes blink-frame-highlight):
927         (100%):
928         (.details-section.probe-set .data-grid .data-container tr.separator):
929         (.details-section.probe-set .data-grid > .data-container tr.data-updated):
930         (@-webkit-keyframes blink-probe-frame):
931         (.details-section.probe-set .data-grid .data-container .selected .section *):
932         (.details-section.probe-set .data-grid .data-container .selected td.unknown-value):
933         (.details-section.probe-set .data-grid .data-container .section):
934         (.details-section.probe-set .data-grid th):
935         (.details-section.probe-set .data-grid th:not(:last-child)):
936         (.details-section.probe-set .data-grid td):
937         * UserInterface/ProbeSetDataGrid.js: Added.
938         (WebInspector.ProbeSetDataGrid):
939         (WebInspector.ProbeSetDataGrid.prototype.closed):
940         (WebInspector.ProbeSetDataGrid.prototype._setupProbe):
941         (WebInspector.ProbeSetDataGrid.prototype._teardownProbe):
942         (WebInspector.ProbeSetDataGrid.prototype._setupData):
943         (WebInspector.ProbeSetDataGrid.prototype._teardownData):
944         (WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame.else.sortFunction):
945         (WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame.else.set node):
946         (WebInspector.ProbeSetDataGrid.prototype._dataFrameInserted):
947         (WebInspector.ProbeSetDataGrid.prototype._dataSeparatorInserted):
948         (WebInspector.ProbeSetDataGrid.prototype._probeExpressionChanged.get var):
949         * UserInterface/ProbeSetDataGridNode.js: Added.
950         (WebInspector.ProbeSetDataGridNode):
951         (WebInspector.ProbeSetDataGridNode.prototype.get element):
952         (WebInspector.ProbeSetDataGridNode.prototype.get data):
953         (WebInspector.ProbeSetDataGridNode.prototype.set frame):
954         (WebInspector.ProbeSetDataGridNode.prototype.get frame):
955         (WebInspector.ProbeSetDataGridNode.prototype.createCellContent):
956         (WebInspector.ProbeSetDataGridNode.prototype.updateCellsFromFrame):
957         (WebInspector.ProbeSetDataGridNode.prototype.updateCellsForSeparator):
958         * UserInterface/ProbeSetDataTable.js:
959         (WebInspector.ProbeSetDataTable.prototype.removeProbe): Fix a typo in for..of loop refactor.
960         * UserInterface/ProbeSetDetailsSection.js: Added.
961         (WebInspector.ProbeSetDetailsSection):
962         (WebInspector.ProbeSetDetailsSection.prototype.closed):
963         (WebInspector.ProbeSetDetailsSection.prototype._probeSetPositionTextOrLink):
964         (WebInspector.ProbeSetDetailsSection.prototype._addProbeButtonClicked):
965         (WebInspector.ProbeSetDetailsSection.prototype._removeButtonClicked):
966         (WebInspector.ProbeSetDetailsSection.prototype._clearSamplesButtonClicked):
967         * UserInterface/TextResourceContentView.js:
968         (WebInspector.TextResourceContentView):
969         (WebInspector.TextResourceContentView.prototype.get supplementalRepresentedObjects):
970         Add probe sets whose breakpoint matches the represented object's URL.
971         (WebInspector.TextResourceContentView.prototype._probeSetsChanged): Tell listeners
972         to re-fetch `supplementalRepresentedObjects` when probe sets are added or removed.
973
974 2014-02-08  Dan Bernstein  <mitz@apple.com>
975
976         Remove client-drawn highlights (-webkit-highlight, WebHTMLHighlighter)
977         https://bugs.webkit.org/show_bug.cgi?id=128456
978
979         Reviewed by Anders Carlsson.
980
981         * UserInterface/CSSKeywordCompletions.js: Removed -webkit-highlight.
982
983 2014-02-07  Brian Burg  <bburg@apple.com>
984
985         Web Inspector: Clean up DataGrid and add table columns incrementally
986         https://bugs.webkit.org/show_bug.cgi?id=128332
987
988         Reviewed by Timothy Hatcher.
989
990         Miscellaneous improvements to DataGrid to make it more maintainable.
991         In particular, it now uses a `Map` to store column settings, and the
992         construction sequence has been simplified so that it is safe to add
993         columns at the end of the constructor (or any later time).
994
995         DataGrid stores a bunch of settings per-column, but before this was done
996         by both storing properties on the provided `column` objects as well as
997         keeping several `columnIdentifier`-keyed maps for properties like `group`
998         and `hidden`.
999
1000         Improve code readability by using for..of loops, destructuring assignment,
1001         `Node.createElement`, and updating variable names. All variables that refer
1002         to DOM nodes now have a `Element` suffix to distinguish them from model objects.
1003
1004         * UserInterface/DataGrid.js:
1005         (.sortDataGrid):
1006         (WebInpector.DataGrid): Create all DOM elements before populating columns.
1007         Remove redundant objects for storing per-column values. Copy column settings
1008         into a map rather than mutating the passed-in JSON-like settings data structure.
1009
1010         (WebInspector.DataGrid.createSortableDataGrid):
1011         (WebInspector.DataGrid.prototype.get length):
1012         (WebInspector.DataGrid.prototype.updateLayout):
1013         (WebInspector.DataGrid.prototype.get scrollContainer):
1014         (WebInspector.DataGrid.prototype.isScrolledToLastRow):
1015         (WebInspector.DataGrid.prototype.scrollToLastRow):
1016         (WebInspector.DataGrid.prototype._positionResizerElements):
1017         (WebInspector.DataGrid.prototype.addCreationNode):
1018         (WebInspector.DataGrid.prototype.):
1019         (WebInspector.DataGrid.prototype.sortNodes):
1020         (WebInspector.DataGrid.prototype.dataGridNodeFromPoint):
1021         (WebInspector.DataGrid.prototype._clickInHeaderCell):
1022         (WebInspector.DataGrid.prototype.isColumnSortColumn):
1023         (WebInspector.DataGrid.prototype.headerTableHeader):
1024         (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
1025         (WebInspector.DataGrid.prototype._resizerDragging):
1026         (WebInspector.DataGridNode.prototype.createCells):
1027         (WebInspector.DataGridNode.prototype.createCell.get var):
1028         (WebInspector.DataGridNode.prototype.elementWithColumnIdentifier):
1029         (WebInspector.DataGridNode.prototype._attach):
1030         * UserInterface/TimelineDataGrid.js:
1031         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters.scopeBar.this.columns.get scopeBar):
1032         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
1033
1034 2014-02-07  Mihai Tica  <mitica@adobe.com>
1035
1036         [CSS Background Blending] Unprefix the -webkit-background-blend-mode property
1037
1038         https://bugs.webkit.org/show_bug.cgi?id=128270
1039
1040         Reviewed by Dean Jackson.
1041
1042         * UserInterface/CSSKeywordCompletions.js: Refactor -webkit-background-blend-mode to background-blend-mode.
1043
1044 2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>
1045
1046         Web Inspector: Add Console support to JSContext Inspection
1047         https://bugs.webkit.org/show_bug.cgi?id=127941
1048
1049         Reviewed by Geoffrey Garen.
1050
1051         * UserInterface/InspectorJSBackendCommands.js:
1052         * UserInterface/InspectorWebBackendCommands.js:
1053         ConsoleAgent moved to JavaScript section.
1054
1055 2014-02-06  Andreas Kling  <akling@apple.com>
1056
1057         Remove display:run-in support.
1058         <https://webkit.org/b/127874>
1059         <rdar://problem/15926949>
1060
1061         Rubber-stamped by Anders Carlsson.
1062
1063         * UserInterface/CSSKeywordCompletions.js:
1064         * UserInterface/External/CodeMirror/css.js:
1065
1066 2014-02-05  Brian Burg  <bburg@apple.com>
1067
1068         Web Inspector: add probe manager and model objects to the frontend
1069         https://bugs.webkit.org/show_bug.cgi?id=127117
1070
1071         Reviewed by Timothy Hatcher.
1072
1073         Add the probe manager, and the following model objects:
1074
1075         - ProbeObject corresponds to a single probe breakpoint action.
1076         - ProbeSetObject contains all ProbeObjects for one Breakpoint.
1077         - ProbeSetDataFrame holds probe samples from multiple
1078         probes fired from the same breakpoint hit/debugger pause.
1079         - ProbeSetDataTable keeps track of multiple such data frames
1080         and manages probe sample lifetimes across page navigations.
1081
1082         The probe manager updates probe model objects whenever breakpoints
1083         are added, removed, or modified.
1084
1085         The inspector frontend now assigns breakpoint action identifiers,
1086         rather than the backend. This lets ProbeObjects keep stable
1087         identifiers that match the probe's samples, even when the underlying
1088         breakpoint is re-added with a different identifier (such as when
1089         editing probe expressions).
1090
1091         * UserInterface/Breakpoint.js:
1092         (WebInspector.Breakpoint.prototype.get probeActions): Added.
1093         (WebInspector.Breakpoint.prototype.createAction):
1094         (WebInspector.Breakpoint.prototype.removeAction):
1095         (WebInspector.Breakpoint.prototype.clearActions): Added.
1096         * UserInterface/BreakpointAction.js:
1097         (WebInspector.BreakpointAction):
1098         (WebInspector.BreakpointAction.prototype.get id):
1099         (WebInspector.BreakpointAction.prototype.get info):
1100         * UserInterface/DebuggerManager.js:
1101         (WebInspector.DebuggerManager.restoreBreakpointsSoon):
1102         (WebInspector.DebuggerManager): Restore saved breakpoints
1103         from cookies on the second run loop, so that all managers will
1104         be able to received breakpoint added events.
1105         (WebInspector.DebuggerManager.prototype.addBreakpoint):
1106         (WebInspector.DebuggerManager.prototype.removeBreakpoint):
1107         (WebInspector.DebuggerManager.prototype.get nextBreakpointActionIdentifier):
1108         The debugger manager assigns unique breakpoint action identifiers with this getter.
1109
1110         (WebInspector.DebuggerManager.prototype._debuggerBreakpointActionType):
1111         (WebInspector.DebuggerManager.prototype.didSetBreakpoint):
1112         (WebInspector.DebuggerManager.prototype._setBreakpoint):
1113         (WebInspector.DebuggerManager.prototype.didRemoveBreakpoint):
1114         (WebInspector.DebuggerManager.prototype._removeBreakpoint):
1115         * UserInterface/DebuggerObserver.js:
1116         (WebInspector.DebuggerObserver.prototype.didSampleProbe):
1117         * UserInterface/InspectorJSBackendCommands.js:
1118         * UserInterface/Main.html:
1119         * UserInterface/Main.js:
1120         (WebInspector.loaded):
1121         * UserInterface/Probe.js: Added.
1122         (WebInspector.ProbeSample):
1123         (WebInspector.Probe):
1124         (WebInspector.Probe.prototype.get id):
1125         (WebInspector.Probe.prototype.get breakpoint):
1126         (WebInspector.Probe.prototype.get expression):
1127         (WebInspector.Probe.prototype.set expression):
1128         (WebInspector.Probe.prototype.get samples):
1129         (WebInspector.Probe.prototype.clearSamples):
1130         (WebInspector.Probe.prototype.addSample):
1131         * UserInterface/ProbeManager.js: Added.
1132         (WebInspector.ProbeManager):
1133         (WebInspector.ProbeManager.prototype.probeSetForBreakpoint):
1134         (WebInspector.ProbeManager.prototype._breakpointRemoved):
1135         (WebInspector.ProbeManager.prototype._breakpointActionsChanged.get var):
1136         (WebInspector.ProbeManager.prototype._breakpointActionsChanged.set get knownProbeIdentifiers):
1137         (WebInspector.ProbeManager.prototype._breakpointActionsChanged):
1138         * UserInterface/ProbeSet.js: Added.
1139         (WebInspector.ProbeSet):
1140         (WebInspector.ProbeSet.prototype.get breakpoint):
1141         (WebInspector.ProbeSet.prototype.get probes):
1142         (WebInspector.ProbeSet.prototype.get dataTable):
1143         (WebInspector.ProbeSet.prototype.clear):
1144         (WebInspector.ProbeSet.prototype.clearSamples):
1145         (WebInspector.ProbeSet.prototype.createProbe):
1146         (WebInspector.ProbeSet.prototype.removeProbe):
1147         (WebInspector.ProbeSet.prototype.willRemove):
1148         (WebInspector.ProbeSet.prototype._mainResourceChanged):
1149         (WebInspector.ProbeSet.prototype._createDataTable):
1150         (WebInspector.ProbeSet.prototype._sampleCollected):
1151         (WebInspector.ProbeSet.prototype._breakpointResolvedStateDidChange):
1152         * UserInterface/ProbeSetDataFrame.js: Added.
1153         (WebInspector.ProbeSetDataFrame):
1154         (WebInspector.ProbeSetDataFrame.compare):
1155         (WebInspector.ProbeSetDataFrame.prototype.get key):
1156         (WebInspector.ProbeSetDataFrame.prototype.get count):
1157         (WebInspector.ProbeSetDataFrame.prototype.get index):
1158         (WebInspector.ProbeSetDataFrame.prototype.get isSeparator):
1159         (WebInspector.ProbeSetDataFrame.prototype.set isSeparator):
1160         (WebInspector.ProbeSetDataFrame.prototype.addSampleForProbe):
1161         (WebInspector.ProbeSetDataFrame.prototype.missingKeys):
1162         (WebInspector.ProbeSetDataFrame.prototype.isComplete):
1163         (WebInspector.ProbeSetDataFrame.prototype.fillMissingValues):
1164         * UserInterface/ProbeSetDataTable.js: Added.
1165         (WebInspector.ProbeSetDataTable):
1166         (WebInspector.ProbeSetDataTable.prototype.get frames):
1167         (WebInspector.ProbeSetDataTable.prototype.get separators):
1168         (WebInspector.ProbeSetDataTable.prototype.willRemove):
1169         (WebInspector.ProbeSetDataTable.prototype.mainResourceChanged):
1170         (WebInspector.ProbeSetDataTable.prototype.addSampleForProbe):
1171         (WebInspector.ProbeSetDataTable.prototype.addProbe):
1172         (WebInspector.ProbeSetDataTable.prototype.removeProbe):
1173         (WebInspector.ProbeSetDataTable.prototype.createFrame):
1174         (WebInspector.ProbeSetDataTable.prototype.addFrame):
1175         (WebInspector.ProbeSetDataTable.prototype.addSeparator):
1176
1177 2014-02-05  Zan Dobersek  <zdobersek@igalia.com>
1178
1179         [GTK] Avoid no-op regenerations of GResourceBundle.xml, GResourceBundle.c
1180         https://bugs.webkit.org/show_bug.cgi?id=128192
1181
1182         Reviewed by Carlos Garcia Campos.
1183
1184         When doing incremental builds, GResourceBundle.xml and GResourceBundle.c can be
1185         generated when the dependencies are newer than the products, but the generation
1186         doesn't necessarily produce a new or different product. This results in constant
1187         regenerations for these two build targets. Touch the products at the end of
1188         generation to avoid this looping.
1189
1190         * GNUmakefile.am:
1191
1192 2014-01-30  Timothy Hatcher  <timothy@apple.com>
1193
1194         Show profile data in the discrete Scripts timeline view.
1195
1196         https://bugs.webkit.org/show_bug.cgi?id=127900
1197
1198         Reviewed by Joseph Pecoraro.
1199
1200         * Localizations/en.lproj/localizedStrings.js:
1201         * UserInterface/DataGrid.js:
1202         (WebInspector.DataGridNode.prototype.refreshIfNeeded):
1203         (WebInspector.DataGridNode.prototype.needsRefresh):
1204         (WebInspector.DataGridNode.prototype.set data):
1205         (WebInspector.DataGridNode.prototype.set revealed):
1206         (WebInspector.DataGridNode.prototype.refresh):
1207         * UserInterface/LayoutTimelineDataGrid.js:
1208         (WebInspector.LayoutTimelineDataGrid):
1209         * UserInterface/LayoutTimelineDataGridNode.js:
1210         (WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
1211         * UserInterface/Main.html:
1212         * UserInterface/NavigationSidebarPanel.js:
1213         (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
1214         (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
1215         (WebInspector.NavigationSidebarPanel.prototype._generateStyleRulesIfNeeded):
1216         * UserInterface/ProfileNodeDataGridNode.js: Added.
1217         (WebInspector.ProfileNodeDataGridNode):
1218         (WebInspector.ProfileNodeDataGridNode.prototype.get profileNode):
1219         (WebInspector.ProfileNodeDataGridNode.prototype.get records):
1220         (WebInspector.ProfileNodeDataGridNode.prototype.get baseStartTime):
1221         (WebInspector.ProfileNodeDataGridNode.prototype.get rangeStartTime):
1222         (WebInspector.ProfileNodeDataGridNode.prototype.set rangeStartTime):
1223         (WebInspector.ProfileNodeDataGridNode.prototype.get rangeEndTime):
1224         (WebInspector.ProfileNodeDataGridNode.prototype.set rangeEndTime):
1225         (WebInspector.ProfileNodeDataGridNode.prototype.get data):
1226         (WebInspector.ProfileNodeDataGridNode.prototype.refresh):
1227         (WebInspector.ProfileNodeDataGridNode.prototype.createCellContent):
1228         * UserInterface/ProfileNodeTreeElement.js: Added.
1229         (WebInspector.ProfileNodeTreeElement):
1230         (WebInspector.ProfileNodeTreeElement.prototype.get profileNode):
1231         (WebInspector.ProfileNodeTreeElement.prototype.get filterableData):
1232         (WebInspector.ProfileNodeTreeElement.prototype.onattach):
1233         (WebInspector.ProfileNodeTreeElement.prototype.onpopulate):
1234         * UserInterface/ResourceTimelineDataGridNode.js:
1235         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
1236         * UserInterface/ScriptTimelineDataGrid.js:
1237         (WebInspector.ScriptTimelineDataGrid):
1238         * UserInterface/ScriptTimelineDataGridNode.js:
1239         (WebInspector.ScriptTimelineDataGridNode):
1240         (WebInspector.ScriptTimelineDataGridNode.prototype.get baseStartTime):
1241         (WebInspector.ScriptTimelineDataGridNode.prototype.get rangeStartTime):
1242         (WebInspector.ScriptTimelineDataGridNode.prototype.set rangeStartTime):
1243         (WebInspector.ScriptTimelineDataGridNode.prototype.get rangeEndTime):
1244         (WebInspector.ScriptTimelineDataGridNode.prototype.set rangeEndTime):
1245         (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
1246         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
1247         * UserInterface/ScriptTimelineRecord.js:
1248         (WebInspector.ScriptTimelineRecord):
1249         (WebInspector.ScriptTimelineRecord.prototype.get profile):
1250         * UserInterface/ScriptTimelineView.js:
1251         (WebInspector.ScriptTimelineView.prototype.updateLayout):
1252         (WebInspector.ScriptTimelineView.prototype.get selectionPathComponents):
1253         (WebInspector.ScriptTimelineView.prototype.dataGridNodeForTreeElement):
1254         (WebInspector.ScriptTimelineView.prototype.populateProfileNodeTreeElement):
1255         (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
1256         (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
1257         * UserInterface/TimelineContentView.js:
1258         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
1259         * UserInterface/TimelineDataGrid.js:
1260         (WebInspector.TimelineDataGrid):
1261         (WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
1262         (WebInspector.TimelineDataGrid.prototype._sort):
1263         * UserInterface/TimelineDataGridNode.js:
1264         (WebInspector.TimelineDataGridNode):
1265         (WebInspector.TimelineDataGridNode.prototype.collapse):
1266         (WebInspector.TimelineDataGridNode.prototype.expand):
1267         * UserInterface/TimelineRecord.js:
1268         * UserInterface/TreeOutlineDataGridSynchronizer.js:
1269         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get delegate):
1270         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.dataGridNodeForTreeElement):
1271         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
1272
1273 2014-01-30  Timothy Hatcher  <timothy@apple.com>
1274
1275         Add the model objects for the new Web Inspector profile data.
1276
1277         https://bugs.webkit.org/show_bug.cgi?id=127899
1278
1279         Reviewed by Joseph Pecoraro.
1280
1281         * UserInterface/Main.html:
1282         * UserInterface/Profile.js: Added.
1283         (WebInspector.Profile):
1284         (WebInspector.Profile.prototype.get idleTime):
1285         (WebInspector.Profile.prototype.get topDownRootNodes):
1286         (WebInspector.Profile.prototype.get bottomUpRootNodes):
1287         * UserInterface/ProfileNode.js: Added.
1288         (WebInspector.ProfileNode):
1289         (WebInspector.ProfileNode.prototype.get id):
1290         (WebInspector.ProfileNode.prototype.get type):
1291         (WebInspector.ProfileNode.prototype.get functionName):
1292         (WebInspector.ProfileNode.prototype.get sourceCodeLocation):
1293         (WebInspector.ProfileNode.prototype.get startTime):
1294         (WebInspector.ProfileNode.prototype.get endTime):
1295         (WebInspector.ProfileNode.prototype.get selfTime):
1296         (WebInspector.ProfileNode.prototype.get totalTime):
1297         (WebInspector.ProfileNode.prototype.get calls):
1298         (WebInspector.ProfileNode.prototype.get previousSibling):
1299         (WebInspector.ProfileNode.prototype.get nextSibling):
1300         (WebInspector.ProfileNode.prototype.get parentNode):
1301         (WebInspector.ProfileNode.prototype.get childNodes):
1302         (WebInspector.ProfileNode.prototype.totalTimeInRange):
1303         (WebInspector.ProfileNode.prototype.computeCallInfoForTimeRange):
1304         (WebInspector.ProfileNode.prototype.traverseNextProfileNode):
1305         (WebInspector.ProfileNode.prototype.saveIdentityToCookie):
1306         (WebInspector.ProfileNode.prototype.establishRelationships):
1307         * UserInterface/ProfileNodeCall.js: Added.
1308         (WebInspector.ProfileNodeCall):
1309         (WebInspector.ProfileNodeCall.prototype.get startTime):
1310         (WebInspector.ProfileNodeCall.prototype.get totalTime):
1311         (WebInspector.ProfileNodeCall.prototype.get endTime):
1312         (WebInspector.ProfileNodeCall.prototype.establishRelationships):
1313         * UserInterface/TimelineManager.js:
1314         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
1315         (WebInspector.TimelineManager.prototype.eventRecorded):
1316         (WebInspector.TimelineManager.prototype._profileFromPayload.profileNodeFromPayload):
1317         (WebInspector.TimelineManager.prototype._profileFromPayload.profileNodeCallFromPayload):
1318         (WebInspector.TimelineManager.prototype._profileFromPayload):
1319
1320 2014-01-26  Timothy Hatcher  <timothy@apple.com>
1321
1322         Prefix existing Web Inspector profiler classes with "Legacy".
1323
1324         Remove a dependency on ProfileView for showTimeAsPercent and selection as a drive-by.
1325         Also remove the unfinished Canvas profiler classes, they will need redone for the Timeline view.
1326
1327         https://bugs.webkit.org/show_bug.cgi?id=127655
1328
1329         Reviewed by Joseph Pecoraro.
1330
1331         * UserInterface/CanvasDataGridNode.js: Removed.
1332         * UserInterface/CanvasObserver.js: Removed.
1333         * UserInterface/CanvasProfileObject.js: Removed.
1334         * UserInterface/CanvasProfileType.js: Removed.
1335         * UserInterface/CanvasProfileView.js: Removed.
1336         * UserInterface/ConsoleObserver.js:
1337         (WebInspector.ConsoleObserver.prototype.messageAdded):
1338         * UserInterface/ContentView.js:
1339         (WebInspector.ContentView):
1340         (WebInspector.ContentView.isViewable):
1341         * UserInterface/InspectorFrontendAPI.js:
1342         (InspectorFrontendAPI.isProfilingJavaScript):
1343         (InspectorFrontendAPI.startProfilingJavaScript):
1344         (InspectorFrontendAPI.stopProfilingJavaScript):
1345         * UserInterface/LegacyBottomUpProfileDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/BottomUpProfileDataGridTree.js.
1346         * UserInterface/LegacyJavaScriptProfileObject.js: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileObject.js.
1347         * UserInterface/LegacyJavaScriptProfileType.js: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileType.js.
1348         * UserInterface/LegacyJavaScriptProfileView.css: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileView.css.
1349         * UserInterface/LegacyJavaScriptProfileView.js: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileView.js.
1350         * UserInterface/LegacyProfileDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileDataGridTree.js.
1351         * UserInterface/LegacyProfileManager.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileManager.js.
1352         * UserInterface/LegacyProfileObject.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileObject.js.
1353         * UserInterface/LegacyProfileType.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileType.js.
1354         * UserInterface/LegacyProfileView.css: Renamed from Source/WebInspectorUI/UserInterface/ProfileView.css.
1355         * UserInterface/LegacyProfileView.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileView.js.
1356         * UserInterface/LegacyProfilerObserver.js: Renamed from Source/WebInspectorUI/UserInterface/ProfilerObserver.js.
1357         * UserInterface/LegacyTopDownProfileDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/TopDownProfileDataGridTree.js.
1358         * UserInterface/Main.html:
1359         * UserInterface/Main.js:
1360         (WebInspector.loaded):
1361         (WebInspector.openURL):
1362
1363 2014-01-30  Diego Pino Garcia  <dpino@igalia.com>
1364
1365         Web Inspector: [REGRESSION(r163086)] Missing localized string 'Hide console (%s)'
1366         https://bugs.webkit.org/show_bug.cgi?id=127951
1367
1368         Reviewed by Timothy Hatcher.
1369
1370         * Localizations/en.lproj/localizedStrings.js:
1371         Add 'Hide console (%s)'.
1372
1373 2014-01-30  Diego Pino Garcia  <dpino@igalia.com>
1374
1375         Web Inspector: Implement open/close Console window shortcut
1376         https://bugs.webkit.org/show_bug.cgi?id=127896
1377
1378         Reviewed by Timothy Hatcher.
1379
1380         * UserInterface/KeyboardShortcut.js:
1381         (WebInspector.KeyboardShortcut.prototype.get displayName):
1382         Bug: Option symbol should be displayed as Alternative symbol (\u2387)
1383         in non Mac platforms.
1384         * UserInterface/Main.js:
1385         (WebInspector.contentLoaded):
1386         Create keyboard shortcut for toggling console window.
1387
1388 2014-01-29  Joseph Pecoraro  <pecoraro@apple.com>
1389
1390         Web Inspector: Play Breakpoint Sound in Frontend
1391         https://bugs.webkit.org/show_bug.cgi?id=127885
1392
1393         Reviewed by Timothy Hatcher.
1394
1395         Beep in the frontend when a "sound" breakpoint action is triggered.
1396
1397         * UserInterface/DebuggerManager.js:
1398         (WebInspector.DebuggerManager.prototype.playBreakpointActionSound):
1399         * UserInterface/DebuggerObserver.js:
1400         (WebInspector.DebuggerObserver.prototype.resumed):
1401         (WebInspector.DebuggerObserver.prototype.playBreakpointActionSound):
1402         * UserInterface/InspectorJSBackendCommands.js:
1403
1404 2014-01-29  Diego Pino Garcia  <dpino@igalia.com>
1405
1406         Web Inspector: [REGRESSION(r162931)] Tab navigation broken in DataGrid
1407         https://bugs.webkit.org/show_bug.cgi?id=127816
1408
1409         Reviewed by Timothy Hatcher.
1410
1411         * UserInterface/DataGrid.js:
1412         (WebInspector.DataGrid.prototype.moveToNextIfNeeded):
1413         (WebInspector.DataGrid.prototype._editingCommitted):
1414         Change columnIdentifier values 0 and 1 to strings "0" and "1".
1415
1416 2014-01-28  Joseph Pecoraro  <pecoraro@apple.com>
1417
1418         Unreviewed follow-up to r162965. Better coding style.
1419
1420         Timothy Hatcher pointed out a clearer style for classes
1421         on the <body> is to specify body.class. I agree.
1422
1423         * UserInterface/DashboardView.css:
1424         (body.javascript .toolbar .dashboard):
1425         (body.web .toolbar.collapsed .dashboard > .logs):
1426         (body.javascript .toolbar .dashboard > .resourcesCount):
1427
1428 2014-01-28  Joseph Pecoraro  <pecoraro@apple.com>
1429
1430         Web Inspector: Tweak UI when debugging a JSContext
1431         https://bugs.webkit.org/show_bug.cgi?id=127799
1432
1433         Reviewed by Timothy Hatcher.
1434
1435         * UserInterface/DashboardView.css:
1436         (.toolbar.javascript .dashboard):
1437         (.toolbar.web.collapsed .dashboard > .logs):
1438         (.toolbar.javascript .dashboard > .resourcesCount):
1439         Adjust collapsed dashboard in web and javascript debugging modes.
1440         JavaScript debugging mode is always treated as collapsed.
1441
1442         * UserInterface/Main.js:
1443         (WebInspector.contentLoaded):
1444         Adjust what is created and shown when in javascript debugging mode.
1445
1446         * UserInterface/NavigationSidebarPanel.css:
1447         (.navigation-sidebar-panel-content-tree-outline.hide-disclosure-buttons .item.small):
1448         * UserInterface/ResourceSidebarPanel.js:
1449         (WebInspector.ResourceSidebarPanel):
1450         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
1451         * UserInterface/TimelineSidebarPanel.css:
1452         (.sidebar > .panel.timeline > .status-bar):
1453         (.sidebar > .panel.timeline > .title-bar):
1454         When javascript debugging expect to put things at the root level, so hide
1455         disclosure buttons and adjust the style so resources look nice here.
1456
1457 2014-01-28  Diego Pino Garcia  <dpino@igalia.com>
1458
1459         Web Inspector: In a DataGrid, store value of columnIdentifier to DOM node representing a cell
1460         https://bugs.webkit.org/show_bug.cgi?id=127613
1461
1462         Reviewed by Timothy Hatcher.
1463
1464         * UserInterface/DOMStorageContentView.js:
1465         (WebInspector.DOMStorageContentView.prototype._editingCallback):
1466         * UserInterface/DataGrid.js:
1467         (WebInspector.DataGrid):
1468         (WebInspector.DataGrid.prototype._keyDown):
1469         (WebInspector.DataGrid.prototype._contextMenuInDataTable):
1470         (WebInspector.DataGridNode.prototype.createCell):
1471
1472 2014-01-27  Joseph Pecoraro  <pecoraro@apple.com>
1473
1474         Web Inspector: Feature Check all Protocol Generated Interfaces to get JSContext Inspection working
1475         https://bugs.webkit.org/show_bug.cgi?id=127712
1476
1477         Reviewed by Timothy Hatcher.
1478
1479         Feature check protocol generated interfaces (e.g. FooAgent and registerFooObserver).
1480         Also drive by handle a possible exception if a SourceCode's URL is null, which is possible.
1481
1482         * UserInterface/ApplicationCacheManager.js:
1483         (WebInspector.ApplicationCacheManager):
1484         (WebInspector.ApplicationCacheManager.prototype.initialize):
1485         * UserInterface/CSSCompletions.js:
1486         (WebInspector.CSSCompletions.requestCSSNameCompletions):
1487         * UserInterface/CSSStyleManager.js:
1488         (WebInspector.CSSStyleManager):
1489         (WebInspector.CSSStyleManager.prototype.canForcePseudoClasses):
1490         * UserInterface/DebuggerManager.js:
1491         * UserInterface/FrameResourceManager.js:
1492         (WebInspector.FrameResourceManager):
1493         (WebInspector.FrameResourceManager.prototype.initialize):
1494         * UserInterface/Main.js:
1495         (WebInspector.loaded):
1496         * UserInterface/ProfileManager.js:
1497         (WebInspector.ProfileManager):
1498         * UserInterface/StorageManager.js:
1499         (WebInspector.StorageManager):
1500         Type check generated interfaces.
1501
1502         (WebInspector.DebuggerManager):
1503         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
1504         Null check a SourceCode URL, which can be null for a Script with no URL.
1505
1506 2014-01-25  Timothy Hatcher  <timothy@apple.com>
1507
1508         Remove dead code from the JSC profiler.
1509
1510         https://bugs.webkit.org/show_bug.cgi?id=127643
1511
1512         Reviewed by Mark Lam.
1513
1514         * Versions/Inspector-iOS-7.0.json: Remove visible from CPUProfileNode.
1515
1516 2014-01-25  Joseph Pecoraro  <pecoraro@apple.com>
1517
1518         Remove FIXME in CSSKeywordCompletions.js about "inherit" keyword
1519         https://bugs.webkit.org/show_bug.cgi?id=127638
1520
1521         Reviewed by Timothy Hatcher.
1522
1523         * UserInterface/CSSKeywordCompletions.js:
1524         (WebInspector.CSSKeywordCompletions.forProperty):
1525         Replace FIXME with a descriptive comment about why the code is what it is.
1526
1527 2014-01-25  Diego Pino Garcia  <dpino@igalia.com>
1528
1529         Web Inspector: Position the completion suggestions popup below if there is room
1530         https://bugs.webkit.org/show_bug.cgi?id=127615
1531
1532         Reviewed by Joseph Pecoraro.
1533
1534         * UserInterface/CompletionSuggestionsView.js:
1535         (WebInspector.CompletionSuggestionsView.prototype.show):
1536
1537 2014-01-23  Timothy Hatcher  <timothy@apple.com>
1538
1539         Refactor TimelineRecordBar combining logic into a helper function.
1540
1541         https://bugs.webkit.org/show_bug.cgi?id=127530
1542
1543         Reviewed by Joseph Pecoraro.
1544
1545         * UserInterface/LayoutTimelineOverviewGraph.js:
1546         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout.createBar):
1547         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout):
1548         Use TimelineRecordBar.createCombinedBars.
1549
1550         * UserInterface/NetworkTimelineOverviewGraph.css:
1551         (.timeline-overview-graph.network):
1552         (.timeline-overview-graph.network > .graph-row > .timeline-record-bar):
1553         Cleaned up since we are using TimelineRecordBar.
1554
1555         * UserInterface/NetworkTimelineOverviewGraph.js:
1556         (WebInspector.NetworkTimelineOverviewGraph.prototype.reset):
1557         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.createBar):
1558         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout):
1559         Use TimelineRecordBar.createCombinedBars.
1560
1561         * UserInterface/ScriptTimelineOverviewGraph.js:
1562         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout.createBar):
1563         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
1564         Use TimelineRecordBar.createCombinedBars.
1565
1566         * UserInterface/TimelineDataGridNode.js:
1567         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.createBar):
1568         (WebInspector.TimelineDataGridNode.prototype.refreshGraph):
1569         Use TimelineRecordBar.createCombinedBars.
1570
1571         * UserInterface/TimelineRecordBar.css:
1572         (.timeline-record-bar.unfinished > .segment):
1573         (.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
1574         (:focus .selected .timeline-record-bar > .segment.inactive):
1575         Improved selected appearance and don't assume .segment.inactive exists.
1576
1577         * UserInterface/TimelineRecordBar.js:
1578         (WebInspector.TimelineRecordBar):
1579         (WebInspector.TimelineRecordBar.createCombinedBars.compareByActiveStartTime): Added.
1580         (WebInspector.TimelineRecordBar.createCombinedBars): Added.
1581         (WebInspector.TimelineRecordBar.prototype.get renderMode): Added.
1582         (WebInspector.TimelineRecordBar.prototype.set renderMode): Added.
1583         (WebInspector.TimelineRecordBar.prototype.set records):
1584         (WebInspector.TimelineRecordBar.prototype.refresh):
1585         Lazily create DOM elements. Support rendering one or both segments. Doing this lets
1586         combined inactive segments sit behind multiple active segments.
1587
1588 2014-01-22  Timothy Hatcher  <timothy@apple.com>
1589
1590         Improve collapsing of TimelineDataGridNode graphs up to ancestors.
1591
1592         https://bugs.webkit.org/show_bug.cgi?id=127440
1593
1594         Reviewed by Joseph Pecoraro.
1595
1596         * UserInterface/TimelineDataGridNode.js:
1597         (WebInspector.TimelineDataGridNode.prototype.collapse):
1598         (WebInspector.TimelineDataGridNode.prototype.createCellContent):
1599         (WebInspector.TimelineDataGridNode.prototype.refresh):
1600         (WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
1601         Notify the next visible ancestor it needs to refresh. Use needsGraphRefresh so ancestors
1602         are notified instead of directly calling refreshGraph in some places.
1603
1604 2014-01-22  Timothy Hatcher  <timothy@apple.com>
1605
1606         Don't include a hidden Timeline selection in the navigation path components.
1607
1608         https://bugs.webkit.org/show_bug.cgi?id=127443
1609
1610         Reviewed by Joseph Pecoraro.
1611
1612         * UserInterface/GeneralTreeElementPathComponent.js:
1613         (WebInspector.GeneralTreeElementPathComponent.prototype.get previousSibling):
1614         (WebInspector.GeneralTreeElementPathComponent.prototype.get nextSibling):
1615         Skip hidden siblings.
1616
1617         * UserInterface/OverviewTimelineView.js:
1618         (WebInspector.OverviewTimelineView.prototype.updateLayout):
1619         (WebInspector.OverviewTimelineView.prototype.get selectionPathComponents):
1620         Don't include hidden selection and dispatch SelectionPathComponentsDidChange event if hidden changes.
1621
1622         * UserInterface/TimelineContentView.js:
1623         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
1624         Dispatch SelectionPathComponentsDidChange event if hidden changes on the selected tree element.
1625
1626         * UserInterface/TimelineView.js:
1627         (WebInspector.TimelineView.prototype.get selectionPathComponents):
1628         Don't include hidden selection.
1629
1630 2014-01-22  Timothy Hatcher  <timothy@apple.com>
1631
1632         Support collapsing call site records into the resource timeline.
1633
1634         Also fix some filtering and graph issues.
1635
1636         https://bugs.webkit.org/show_bug.cgi?id=127440
1637
1638         Reviewed by Joseph Pecoraro.
1639
1640         * UserInterface/NavigationSidebarPanel.js:
1641         (WebInspector.NavigationSidebarPanel.prototype.updateFilter):
1642         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
1643         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.makeVisible):
1644         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
1645         (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
1646         Tweak how filtering happens so custom filters never expand to reveal and auto expanded
1647         tree elements will auto-collapse again later even with custom filters.
1648
1649         * UserInterface/OverviewTimelineView.css:
1650         (.timeline-view.overview > .data-grid tr.parent:not(.expanded) td.graph-column .timeline-record-bar:not(.timeline-record-type-network) > .segment):
1651         (.timeline-view.overview > .data-grid tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.timeline-record-type-network) > .segment):
1652         (.timeline-view.overview > .data-grid:focus tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.timeline-record-type-network) > .segment):
1653         Add a shadow to provide some negative space between juxtaposed records. Only needed when not expanded.
1654
1655         * UserInterface/OverviewTimelineView.js:
1656         (WebInspector.OverviewTimelineView.prototype.updateLayout):
1657         (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
1658         Update the filter when current time changes and only auto expand the main resource.
1659
1660         * UserInterface/ResourceTimelineDataGridNode.js:
1661         (WebInspector.ResourceTimelineDataGridNode):
1662         (WebInspector.ResourceTimelineDataGridNode.prototype._timelineRecordUpdated):
1663         Don't schedule a refresh of the graph if the record isn't visible.
1664
1665         * UserInterface/SourceCodeTimelineTimelineDataGridNode.js:
1666         (WebInspector.SourceCodeTimelineTimelineDataGridNode):
1667         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._timelineRecordAdded):
1668         Don't schedule a refresh of the graph if the record isn't visible.
1669
1670         * UserInterface/TimelineContentView.js:
1671         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
1672         Remove the boolean for updateFilter.
1673
1674         * UserInterface/TimelineDataGrid.js:
1675         (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
1676         (WebInspector.TimelineDataGrid.prototype._sort):
1677         Keep the hidden state in-sync between node and element.
1678
1679         * UserInterface/TimelineDataGridNode.js:
1680         (WebInspector.TimelineDataGridNode.prototype.collapse):
1681         (WebInspector.TimelineDataGridNode.prototype.expand):
1682         (WebInspector.TimelineDataGridNode.prototype.appendChild):
1683         (WebInspector.TimelineDataGridNode.prototype.insertChild):
1684         (WebInspector.TimelineDataGridNode.prototype.removeChild):
1685         (WebInspector.TimelineDataGridNode.prototype.removeChildren):
1686         (WebInspector.TimelineDataGridNode.prototype.removeChildrenRecursive):
1687         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.createBarsForRecords):
1688         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.else.collectRecordsByType.get if):
1689         (WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
1690         (WebInspector.TimelineDataGridNode.prototype.isRecordVisible):
1691         Support drawing the children records on the parent graph.
1692
1693         * UserInterface/TimelineRecordBar.css:
1694         (.timeline-record-bar.unfinished > .segment):
1695         (:focus .selected .timeline-record-bar > .segment):
1696         (:focus .selected .timeline-record-bar > .segment.inactive):
1697         (:focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
1698         Tweaked styles to look better when selected.
1699
1700         * UserInterface/TimelineRecordBar.js:
1701         (WebInspector.TimelineRecordBar.recordsCannotBeCombined):
1702         (WebInspector.TimelineRecordBar.prototype.set records):
1703         (WebInspector.TimelineRecordBar.prototype.refresh):
1704         Drive-by fixes for some bug with bars being reused.
1705
1706 2014-01-21  Timothy Hatcher  <timothy@apple.com>
1707
1708         Remember the Timeline Overview zoom and selection between sessions.
1709
1710         https://bugs.webkit.org/show_bug.cgi?id=127369
1711
1712         Reviewed by Joseph Pecoraro.
1713
1714         * UserInterface/TimelineOverview.js:
1715         (WebInspector.TimelineOverview):
1716         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
1717         (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
1718
1719 2014-01-21  Timothy Hatcher  <timothy@apple.com>
1720
1721         Show the Resource and Record selection path in the navigation bar for Timeline views.
1722
1723         https://bugs.webkit.org/show_bug.cgi?id=127367
1724
1725         Reviewed by Joseph Pecoraro.
1726
1727         * UserInterface/LayoutTimelineView.js:
1728         (WebInspector.LayoutTimelineView.prototype.treeElementPathComponentSelected):
1729         (WebInspector.LayoutTimelineView.prototype._dataGridNodeSelected):
1730         * UserInterface/NetworkTimelineView.js:
1731         (WebInspector.NetworkTimelineView.prototype.treeElementPathComponentSelected):
1732         (WebInspector.NetworkTimelineView.prototype._dataGridNodeSelected):
1733         * UserInterface/OverviewTimelineView.js:
1734         (WebInspector.OverviewTimelineView.prototype.get selectionPathComponents):
1735         (WebInspector.OverviewTimelineView.prototype.treeElementPathComponentSelected):
1736         (WebInspector.OverviewTimelineView.prototype._dataGridNodeSelected):
1737         * UserInterface/ScriptTimelineView.js:
1738         (WebInspector.ScriptTimelineView.prototype.treeElementPathComponentSelected):
1739         (WebInspector.ScriptTimelineView.prototype._dataGridNodeSelected):
1740         * UserInterface/TimelineContentView.js:
1741         (WebInspector.TimelineContentView.prototype._timelineViewSelectionPathComponentsDidChange):
1742         (WebInspector.TimelineContentView.prototype._showTimelineView):
1743         * UserInterface/TimelineDataGrid.js:
1744         (WebInspector.TimelineDataGrid.prototype.treeElementForDataGridNode):
1745         (WebInspector.TimelineDataGrid.prototype.dataGridNodeForTreeElement):
1746         * UserInterface/TimelineView.js:
1747         (WebInspector.TimelineView.prototype.get selectionPathComponents):
1748         (WebInspector.TimelineView.prototype.treeElementPathComponentSelected):
1749
1750 2014-01-20  Timothy Hatcher  <timothy@apple.com>
1751
1752         Add the recording button back to the Timelines sidebar.
1753
1754         https://bugs.webkit.org/show_bug.cgi?id=127314
1755
1756         Reviewed by Joseph Pecoraro.
1757
1758         * Localizations/en.lproj/localizedStrings.js: Updated.
1759
1760         * UserInterface/TimelineContentView.js:
1761         (WebInspector.TimelineContentView.prototype.get navigationItems):
1762         (WebInspector.TimelineContentView.prototype._update):
1763         (WebInspector.TimelineContentView.prototype._updateTimes):
1764         (WebInspector.TimelineContentView.prototype._startUpdatingCurrentTime):
1765         (WebInspector.TimelineContentView.prototype._recordingTimesUpdated):
1766         (WebInspector.TimelineContentView.prototype._clearTimeline):
1767         (WebInspector.TimelineContentView.prototype._recordingReset):
1768         Add a clear button and reset the time ruler and views when the recording resets.
1769
1770         * UserInterface/TimelineSidebarPanel.css:
1771         (.sidebar > .panel.timeline > .status-bar):
1772         (.sidebar > .panel.timeline > .status-bar > .record-glyph):
1773         (.sidebar > .panel.timeline > .status-bar > .record-glyph.recording):
1774         (.sidebar > .panel.timeline > .status-bar > .record-glyph:hover):
1775         (.sidebar > .panel.timeline > .status-bar > .record-glyph.recording:hover):
1776         (.sidebar > .panel.timeline > .status-bar > .record-glyph.forced):
1777         (.sidebar > .panel.timeline > .status-bar > .record-glyph.recording.forced):
1778         (.sidebar > .panel.timeline > .status-bar > .record-status):
1779         Add styles for the recording button and status message.
1780
1781         * UserInterface/TimelineSidebarPanel.js:
1782         (WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):
1783         (WebInspector.TimelineSidebarPanel.prototype._recordingStarted):
1784         (WebInspector.TimelineSidebarPanel.prototype._recordingStopped):
1785         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphMousedOver):
1786         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphMousedOut):
1787         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphClicked):
1788         Add support for the recording button and status message.
1789
1790 2014-01-20  Timothy Hatcher  <timothy@apple.com>
1791
1792         Make the TimelineRecordTreeElement location subtitle live.
1793
1794         https://bugs.webkit.org/show_bug.cgi?id=127270
1795
1796         Reviewed by Joseph Pecoraro.
1797
1798         * Localizations/en.lproj/localizedStrings.js: Updated.
1799
1800         * UserInterface/SourceCodeLocation.js:
1801         (WebInspector.SourceCodeLocation.prototype.originalLocationString):
1802         (WebInspector.SourceCodeLocation.prototype.formattedLocationString):
1803         (WebInspector.SourceCodeLocation.prototype.displayLocationString):
1804         (WebInspector.SourceCodeLocation.prototype.updateDisplayString):
1805         (WebInspector.SourceCodeLocation.prototype._locationString):
1806         Support for a new nameStyle enum and a prefix for the location string.
1807         Passing the prefix here lets it be italicized with the line number.
1808         Support column number for SourceCode's without a URL too.
1809
1810         * UserInterface/TimelineRecordTreeElement.js:
1811         (WebInspector.TimelineRecordTreeElement):
1812         (WebInspector.TimelineRecordTreeElement.prototype.onattach):
1813         Create a subtitle span to update the location inside. Update the tooltip on attach.
1814
1815 2014-01-19  Timothy Hatcher  <timothy@apple.com>
1816
1817         Generate better display names for timer and event Timeline records.
1818
1819         Also support AnimationFrameRequested and AnimationFrameCanceled.
1820
1821         https://bugs.webkit.org/show_bug.cgi?id=127258
1822
1823         Reviewed by Joseph Pecoraro.
1824
1825         * Localizations/en.lproj/localizedStrings.js: Updated.
1826
1827         * UserInterface/LayoutTimelineRecord.js:
1828         (WebInspector.LayoutTimelineRecord.EventType.displayName):
1829         Generate past tense names that better match other names.
1830
1831         * UserInterface/ScriptTimelineDataGridNode.js:
1832         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
1833         Pass the details to displayName.
1834
1835         * UserInterface/ScriptTimelineRecord.js:
1836         (WebInspector.ScriptTimelineRecord.EventType.displayName):
1837         Generate better names for timer and event records. Also add missing animation frame types.
1838
1839         * UserInterface/ScriptTimelineView.js:
1840         (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
1841         Pass true to WebInspector.TimelineRecordTreeElement to include timer identifiers in the title.
1842
1843         * UserInterface/SourceCodeTimelineTreeElement.js:
1844         (WebInspector.SourceCodeTimelineTreeElement):
1845         Pass includeTimerIdentifierInMainTitle through to TimelineRecordTreeElement.
1846
1847         * UserInterface/TimelineManager.js:
1848         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
1849         Include AnimationFrameRequested and AnimationFrameCanceled.
1850
1851         * UserInterface/TimelineRecordTreeElement.js:
1852         (WebInspector.TimelineRecordTreeElement):
1853         Use displayName functions instead and support includeTimerIdentifierInMainTitle.
1854
1855 2014-01-19  Timothy Hatcher  <timothy@apple.com>
1856
1857         Implement basic versions of the TimelineOverview graphs.
1858
1859         https://bugs.webkit.org/show_bug.cgi?id=127184
1860
1861         Reviewed by Joseph Pecoraro.
1862
1863         * UserInterface/LayoutTimelineOverviewGraph.css: Added.
1864         (.timeline-overview-graph.layout > .timeline-record-bar):
1865         (.timeline-overview-graph.layout > .timeline-record-bar > .segment):
1866
1867         * UserInterface/LayoutTimelineOverviewGraph.js: Added.
1868         (WebInspector.LayoutTimelineOverviewGraph.prototype.reset):
1869         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout):
1870         (WebInspector.LayoutTimelineOverviewGraph.prototype._layoutTimelineRecordAdded):
1871
1872         * UserInterface/Main.html: Added new files.
1873
1874         * UserInterface/NetworkTimelineOverviewGraph.css: Added.
1875         (.timeline-overview-graph.network):
1876         (.timeline-overview-graph.network > .graph-row):
1877         (.timeline-overview-graph.network > .graph-row > .bar):
1878         (.timeline-overview-graph.network > .graph-row > .bar.inactive):
1879         (.timeline-overview-graph.network > .graph-row > .bar.unfinished):
1880         (.timeline-overview-graph.network > .graph-row > .bar:not(.inactive)):
1881         (.timeline-overview-graph.network:nth-child(even) > .graph-row > .bar:not(.inactive)):
1882
1883         * UserInterface/NetworkTimelineOverviewGraph.js: Added.
1884         (WebInspector.NetworkTimelineOverviewGraph.prototype.reset):
1885         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.updateElementPosition):
1886         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.createBar):
1887         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout):
1888         (WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded.compareByStartTime):
1889         (WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded.insertObjectIntoSortedArray):
1890         (WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded):
1891
1892         * UserInterface/ScriptTimelineOverviewGraph.css: Added.
1893         (.timeline-overview-graph.script > .timeline-record-bar):
1894         (.timeline-overview-graph.script > .timeline-record-bar > .segment):
1895
1896         * UserInterface/ScriptTimelineOverviewGraph.js: Added.
1897         (WebInspector.ScriptTimelineOverviewGraph.prototype.reset):
1898         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
1899         (WebInspector.ScriptTimelineOverviewGraph.prototype._scriptTimelineRecordAdded):
1900
1901         * UserInterface/TimelineContentView.js:
1902         (WebInspector.TimelineContentView.prototype._showTimelineView):
1903         (WebInspector.TimelineContentView.prototype._update):
1904         (WebInspector.TimelineContentView.prototype._recordingReset):
1905         Create and keep the graphs informed.
1906
1907         * UserInterface/TimelineDataGridNode.js:
1908         (WebInspector.TimelineDataGridNode):
1909         (WebInspector.TimelineDataGridNode.prototype.refreshGraph):
1910         Combine records that might overlap.
1911
1912         * UserInterface/TimelineOverview.css:
1913         (.timeline-overview > .graphs-container):
1914         (.timeline-overview > .graphs-container > .timeline-overview-graph):
1915         (.timeline-overview > .graphs-container > .timeline-overview-graph:nth-child(even)):
1916         (.timeline-overview > .graphs-container > .timeline-overview-graph:not(:first-child)):
1917         Add the graph rows with alternating stripe.
1918
1919         * UserInterface/TimelineOverview.js:
1920         (WebInspector.TimelineOverview):
1921         (WebInspector.TimelineOverview.prototype.set startTime):
1922         (WebInspector.TimelineOverview.prototype.get currentTime):
1923         (WebInspector.TimelineOverview.prototype.set currentTime):
1924         (WebInspector.TimelineOverview.prototype.updateLayout):
1925         (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
1926         Track currentTime in a member variable and let TimelineOverview manage the current time marker.
1927
1928         * UserInterface/TimelineOverviewGraph.js: Added.
1929         (WebInspector.TimelineOverviewGraph):
1930         (WebInspector.TimelineOverviewGraph.prototype.get zeroTime):
1931         (WebInspector.TimelineOverviewGraph.prototype.set zeroTime):
1932         (WebInspector.TimelineOverviewGraph.prototype.get startTime):
1933         (WebInspector.TimelineOverviewGraph.prototype.set startTime):
1934         (WebInspector.TimelineOverviewGraph.prototype.get endTime):
1935         (WebInspector.TimelineOverviewGraph.prototype.set endTime):
1936         (WebInspector.TimelineOverviewGraph.prototype.get currentTime):
1937         (WebInspector.TimelineOverviewGraph.prototype.set currentTime):
1938         (WebInspector.TimelineOverviewGraph.prototype.reset):
1939         (WebInspector.TimelineOverviewGraph.prototype.updateLayout):
1940         (WebInspector.TimelineOverviewGraph.prototype.updateLayoutIfNeeded):
1941         (WebInspector.TimelineOverviewGraph.prototype.needsLayout):
1942
1943         * UserInterface/TimelineRecordBar.css:
1944         (.timeline-record-bar > .segment):
1945         (.timeline-record-bar.unfinished > .segment):
1946         (.timeline-record-bar > .segment.inactive + .segment):
1947         (.timeline-record-bar.timeline-record-type-network > .segment.inactive):
1948
1949         * UserInterface/TimelineRecordBar.js:
1950         (WebInspector.TimelineRecordBar):
1951         (WebInspector.TimelineRecordBar.recordsCannotBeCombined):
1952         (WebInspector.TimelineRecordBar.prototype.get records):
1953         (WebInspector.TimelineRecordBar.prototype.set records):
1954         (WebInspector.TimelineRecordBar.prototype.refresh):
1955         Make TimelineRecordBar support multiple records.
1956
1957         * UserInterface/TimelineRuler.css:
1958         (.timeline-ruler > .markers):
1959         (.timeline-ruler > .selection-handle):
1960         (.timeline-ruler > .shaded-area):
1961         Add some z-index values to stay above graph elements.
1962
1963 2014-01-16  Timothy Hatcher  <timothy@apple.com>
1964
1965         Clean up Timelines code by using ES6 features and less global access of TimelineRecording.
1966         Also don't recreate Timeline objects when TimelineRecording is reset, reset them instead.
1967
1968         https://bugs.webkit.org/show_bug.cgi?id=127157
1969
1970         Reviewed by Joseph Pecoraro.
1971
1972         * UserInterface/LayoutTimelineView.js:
1973         (WebInspector.LayoutTimelineView.prototype.reset):
1974         * UserInterface/NetworkTimeline.js:
1975         (WebInspector.NetworkTimeline):
1976         (WebInspector.NetworkTimeline.prototype.reset):
1977         * UserInterface/NetworkTimelineView.js:
1978         (WebInspector.NetworkTimelineView.prototype.reset):
1979         * UserInterface/OverviewTimelineView.js:
1980         (WebInspector.OverviewTimelineView.prototype._networkTimelineRecordAdded):
1981         * UserInterface/ScriptTimelineView.js:
1982         (WebInspector.ScriptTimelineView.prototype.reset):
1983         * UserInterface/Timeline.js:
1984         (WebInspector.Timeline):
1985         (WebInspector.Timeline.prototype.reset):
1986         * UserInterface/TimelineContentView.js:
1987         (WebInspector.TimelineContentView.set createPathComponent):
1988         (WebInspector.TimelineContentView.set var):
1989         (WebInspector.TimelineContentView.prototype.showOverviewTimelineView):
1990         (WebInspector.TimelineContentView.prototype.showTimelineView):
1991         (WebInspector.TimelineContentView.prototype._showTimelineView):
1992         (WebInspector.TimelineContentView.prototype._update):
1993         (WebInspector.TimelineContentView.prototype._recordingReset):
1994         * UserInterface/TimelineRecording.js:
1995         (WebInspector.TimelineRecording.prototype.reset):
1996
1997 2014-01-16  Timothy Hatcher  <timothy@apple.com>
1998
1999         Improve WebInspector.TimelineOverview by not putting WebInspector.TimelineRuler in a scroll area.
2000
2001         https://bugs.webkit.org/show_bug.cgi?id=127145
2002
2003         Reviewed by Joseph Pecoraro.
2004
2005         * UserInterface/TimelineOverview.css:
2006         (.timeline-overview > .scroll-container):
2007         (.timeline-overview > .timeline-ruler):
2008         (.timeline-overview > .scroll-container > .scroll-width-sizer):
2009         * UserInterface/TimelineOverview.js:
2010         (WebInspector.TimelineOverview):
2011         (WebInspector.TimelineOverview.prototype.get startTime):
2012         (WebInspector.TimelineOverview.prototype.set startTime):
2013         (WebInspector.TimelineOverview.prototype.get secondsPerPixel):
2014         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
2015         (WebInspector.TimelineOverview.prototype.get scrollStartTime):
2016         (WebInspector.TimelineOverview.prototype.set scrollStartTime):
2017         (WebInspector.TimelineOverview.prototype.get visibleDuration):
2018         (WebInspector.TimelineOverview.prototype.revealMarker):
2019         (WebInspector.TimelineOverview.prototype.updateLayout):
2020         (WebInspector.TimelineOverview.prototype._handleScrollEvent):
2021         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
2022         * UserInterface/TimelineRuler.js:
2023         (WebInspector.TimelineRuler.MinimumSelectionTimeRange): Reduce to 10ms now that super zoom has no performance impact.
2024
2025 2014-01-15  Timothy Hatcher  <timothy@apple.com>
2026
2027         Implement the discrete Script and Layout timeline views.
2028
2029         https://bugs.webkit.org/show_bug.cgi?id=127063
2030
2031         Reviewed by Joseph Pecoraro.
2032
2033         * Localizations/en.lproj/localizedStrings.js: Updated.
2034
2035         * UserInterface/DataGrid.js:
2036         (WebInspector.DataGrid): Support hidden columns by default.
2037         (WebInspector.DataGrid.prototype.updateLayout): Set the column width to zero for hidden columns.
2038
2039         * UserInterface/LayoutTimelineDataGrid.js:
2040         (WebInspector.LayoutTimelineDataGrid): Pass the right parameters to the superclass.
2041
2042         * UserInterface/LayoutTimelineRecord.js:
2043         (WebInspector.LayoutTimelineRecord.prototype.saveIdentityToCookie): Added.
2044
2045         * UserInterface/LayoutTimelineView.css: Copied from Source/WebInspectorUI/UserInterface/ScriptTimelineDataGrid.js.
2046         (.timeline-view.layout > .data-grid):
2047         (.timeline-view.layout > .data-grid .eventType-column):
2048         (.sidebar > .panel.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.layout .item .subtitle):
2049
2050         * UserInterface/LayoutTimelineView.js: Added.
2051         (WebInspector.LayoutTimelineView):
2052         (WebInspector.LayoutTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2053         (WebInspector.LayoutTimelineView.prototype.shown):
2054         (WebInspector.LayoutTimelineView.prototype.hidden):
2055         (WebInspector.LayoutTimelineView.prototype.updateLayout):
2056         (WebInspector.LayoutTimelineView.prototype.matchTreeElementAgainstCustomFilters):
2057         (WebInspector.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
2058         (WebInspector.LayoutTimelineView.prototype._dataGridFiltersDidChange):
2059         (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
2060
2061         * UserInterface/Main.html: Added new files.
2062
2063         * UserInterface/ScriptTimelineDataGrid.js:
2064         (WebInspector.ScriptTimelineDataGrid): Pass the right parameters to the superclass.
2065
2066         * UserInterface/ScriptTimelineDataGridNode.js:
2067         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent): Fix up how we create the link.
2068
2069         * UserInterface/ScriptTimelineRecord.js:
2070         (WebInspector.ScriptTimelineRecord.prototype.saveIdentityToCookie): Added.
2071
2072         * UserInterface/ScriptTimelineView.css: Copied from Source/WebInspectorUI/UserInterface/ScriptTimelineDataGrid.js.
2073         (.timeline-view.script > .data-grid):
2074         (.timeline-view.script > .data-grid .eventType-column):
2075         (.sidebar > .panel.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.script .item .subtitle):
2076
2077         * UserInterface/ScriptTimelineView.js: Added.
2078         (WebInspector.ScriptTimelineView):
2079         (WebInspector.ScriptTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2080         (WebInspector.ScriptTimelineView.prototype.shown):
2081         (WebInspector.ScriptTimelineView.prototype.hidden):
2082         (WebInspector.ScriptTimelineView.prototype.updateLayout):
2083         (WebInspector.ScriptTimelineView.prototype.matchTreeElementAgainstCustomFilters):
2084         (WebInspector.ScriptTimelineView.prototype._scriptTimelineRecordAdded):
2085         (WebInspector.ScriptTimelineView.prototype._dataGridFiltersDidChange):
2086         (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
2087
2088         * UserInterface/SourceCodeTimelineTreeElement.js:
2089         (WebInspector.SourceCodeTimelineTreeElement):
2090         Moved code to TimelineRecordTreeElement. Subclass from it.
2091
2092         * UserInterface/TimelineContentView.js:
2093         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters): Support TimelineRecordTreeElement.
2094         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged): Update zeroTime for all views.
2095
2096         * UserInterface/TimelineDataGrid.css:
2097         (.data-grid.timeline td .icon):
2098         (.data-grid.timeline td .go-to-arrow):
2099         (.data-grid.timeline tr:hover .go-to-arrow):
2100         (.data-grid.timeline td .subtitle):
2101         (.data-grid.timeline td .subtitle::before):
2102         (.data-grid.timeline:focus tr.selected td .subtitle):
2103
2104         * UserInterface/TimelineRecord.js:
2105         (WebInspector.TimelineRecord.prototype.saveIdentityToCookie): Added.
2106
2107         * UserInterface/TimelineRecordTreeElement.js: Added.
2108         (WebInspector.TimelineRecordTreeElement):
2109         (WebInspector.TimelineRecordTreeElement.prototype.get record):
2110         (WebInspector.TimelineRecordTreeElement.prototype.get filterableData):
2111         Factored out from SourceCodeTimelineTreeElement.
2112
2113         * UserInterface/TimelineSidebarPanel.js:
2114         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.looslyCompareRepresentedObjects):
2115         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):
2116         Find TreeElements via a loose lookup based on represented objects that might contain the represented object we are
2117         really looking for.
2118
2119 2014-01-14  Timothy Hatcher  <timothy@apple.com>
2120
2121         Implement the discrete Network timeline view.
2122
2123         https://bugs.webkit.org/show_bug.cgi?id=127022
2124
2125         Reviewed by Joseph Pecoraro.
2126
2127         * UserInterface/DataGrid.js:
2128         (WebInspector.DataGrid): Align the labels of the column headers to match the data.
2129         (WebInspector.DataGridNode.prototype.get selectable): Prevent selection when hidden.
2130
2131         * UserInterface/DetailsSection.css:
2132         (.details-section > .header): Bump the font size to match data grid header sizes.
2133
2134         * UserInterface/Main.html: Add new files.
2135
2136         * UserInterface/NetworkTimelineView.css: Added.
2137         (.timeline-view.network > .data-grid):
2138         (.sidebar > .panel.timeline.timeline-content-view-showing > .content .item.resource .subtitle):
2139         Hide the domain subtitle when the content view is showing which also has the domain.
2140
2141         * UserInterface/NetworkTimelineView.js: Added.
2142         (WebInspector.NetworkTimelineView):
2143         (WebInspector.NetworkTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2144         (WebInspector.NetworkTimelineView.prototype.shown):
2145         (WebInspector.NetworkTimelineView.prototype.hidden):
2146         (WebInspector.NetworkTimelineView.prototype.updateLayout):
2147         (WebInspector.NetworkTimelineView.prototype.matchTreeElementAgainstCustomFilters):
2148         (WebInspector.NetworkTimelineView.prototype._networkTimelineRecordAdded):
2149         (WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange):
2150         (WebInspector.NetworkTimelineView.prototype._treeElementSelected):
2151
2152         * UserInterface/ResourceTimelineDataGridNode.js:
2153         (WebInspector.ResourceTimelineDataGridNode.prototype._needsRefresh):
2154         Call dataGridNodeNeedsRefresh on the TimelineDataGrid so things can be batched with
2155         one request animation frame.
2156
2157         * UserInterface/TimelineContentView.js:
2158         (WebInspector.TimelineContentView): Create a NetworkTimelineView.
2159         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
2160
2161         * UserInterface/TimelineDataGrid.css:
2162         (.data-grid.timeline table):
2163         (.data-grid.timeline th):
2164         (.data-grid.timeline th:not(:last-child)):
2165         (.data-grid.timeline th.sortable:active):
2166         (.data-grid.timeline th.sort-descending):
2167         (.data-grid.timeline .data-container):
2168         (.data-grid.timeline td):
2169         (.data-grid.timeline td:last-child):
2170         (.data-grid.timeline td:not(:last-child)):
2171         (.data-grid.timeline:focus tr.selected td:not(:last-child)):
2172         (.data-grid.timeline th.sort-descending > div:first-child):
2173         (.data-grid.timeline th.sort-descending > div:first-child::after):
2174         (.data-grid.timeline td.error):
2175         (.data-grid.timeline tr.selected td.error):
2176         (.data-grid.timeline > .navigation-bar-container):
2177         (.data-grid.timeline:hover > .navigation-bar-container):
2178         (.data-grid.timeline > .navigation-bar-container > .navigation-bar):
2179
2180         * UserInterface/TimelineDataGrid.js:
2181         (WebInspector.TimelineDataGrid):
2182         (WebInspector.TimelineDataGrid.createColumnScopeBar):
2183         (WebInspector.TimelineDataGrid.prototype.reset):
2184         (WebInspector.TimelineDataGrid.prototype.shown):
2185         (WebInspector.TimelineDataGrid.prototype.hidden):
2186         (WebInspector.TimelineDataGrid.prototype.callFramePopoverAnchorElement):
2187         (WebInspector.TimelineDataGrid.prototype.updateLayout):
2188         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
2189         (WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
2190         (WebInspector.TimelineDataGrid.prototype.shouldIgnoreSelectionEvent):
2191         (WebInspector.TimelineDataGrid.prototype.dataGridNodeNeedsRefresh):
2192         (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
2193         (WebInspector.TimelineDataGrid.prototype._sort):
2194         (WebInspector.TimelineDataGrid.prototype._sortComparator):
2195         Add support for sorting, batch refresh and managing of a TreeOutlineDataGridSynchronizer.
2196
2197         * UserInterface/TimelineSidebarPanel.css:
2198         (.sidebar > .panel.timeline > .title-bar): Bump the font size to match data grid header sizes.
2199
2200         * UserInterface/TimelineView.js:
2201         (WebInspector.TimelineView.prototype.matchTreeElementAgainstCustomFilters): Added stub.
2202
2203         * UserInterface/TreeOutlineDataGridSynchronizer.js:
2204         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get treeOutline):
2205         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get dataGrid):
2206         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get enabled):
2207         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.set enabled):
2208         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.treeElementForDataGridNode):
2209         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.dataGridNodeForTreeElement):
2210         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
2211         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
2212         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeSelected):
2213         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeExpanded):
2214         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeCollapsed):
2215         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementSelected):
2216         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
2217         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementRemoved):
2218         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementExpanded):
2219         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementCollapsed):
2220         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementHiddenChanged):
2221         Added support for disabling the synchronizer when the client can do a better job.
2222
2223 2014-01-13  Timothy Hatcher  <timothy@apple.com>
2224
2225         Filter the Timeline overview graph and sidebar based on the current time selection.
2226
2227         https://bugs.webkit.org/show_bug.cgi?id=126955
2228
2229         Reviewed by Joseph Pecoraro.
2230
2231         * UserInterface/NavigationSidebarPanel.js:
2232         (WebInspector.NavigationSidebarPanel.prototype.updateFilter):
2233         (WebInspector.NavigationSidebarPanel.prototype.hasCustomFilters):
2234         (WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2235         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
2236         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
2237         Add support for custom filters implemented by subclasses.
2238
2239         * UserInterface/TimelineContentView.js:
2240         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters.checkTimeBounds):
2241         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
2242         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
2243         Filter known tree element types by time.
2244
2245         * UserInterface/TimelineSidebarPanel.css:
2246         (.sidebar > .panel.timeline > .empty-content-placeholder):
2247         Position the empty placeholder with the content.
2248
2249         * UserInterface/TimelineSidebarPanel.js:
2250         (WebInspector.TimelineSidebarPanel.prototype.hasCustomFilters):
2251         (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2252         Defer filtering to the TimelineContentView.
2253
2254 2014-01-13  Timothy Hatcher  <timothy@apple.com>
2255
2256         Implement state cookie support for WebInspector.TimelineSidebarPanel.
2257
2258         https://bugs.webkit.org/show_bug.cgi?id=126921
2259
2260         Reviewed by Joseph Pecoraro.
2261
2262         * UserInterface/DebuggerSidebarPanel.js:
2263         (WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
2264         Drive-by fix to pass along relaxedMatchDelay to the superclass. 
2265
2266         * UserInterface/Main.js:
2267         (WebInspector.loaded):
2268         (WebInspector._provisionalLoadStarted):
2269         Listen for ProvisionalLoadStarted instead of ProvisionalLoadCommitted to save the cookie
2270         before the TimelineRecording is reset and clears the UI.
2271
2272         * UserInterface/NavigationSidebarPanel.js:
2273         (WebInspector.NavigationSidebarPanel.prototype.get restoringState): Added.
2274         (WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie.finalAttemptToRestoreViewStateFromCookie):
2275         Delete _pendingViewStateCookie since this was the final attempt.
2276         (WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie):
2277         (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject): Block string represented objects.
2278         (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):
2279
2280         * UserInterface/OverviewTimelineView.js:
2281         (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
2282
2283         * UserInterface/ResourceSidebarPanel.js:
2284         (WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
2285         Drive-by fix to null check parentFrame since it can be null. Was causing an exception while working on this.
2286
2287         * UserInterface/SourceCodeTimeline.js:
2288         (WebInspector.SourceCodeTimeline):
2289         (WebInspector.SourceCodeTimeline.prototype.saveIdentityToCookie):
2290
2291         * UserInterface/TimelineSidebarPanel.js:
2292         (WebInspector.TimelineSidebarPanel.prototype.canShowDifferentContentView):
2293         (WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie):
2294         (WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie):
2295
2296         * UserInterface/TreeOutline.js:
2297         (TreeOutline.prototype._forgetTreeElement):
2298         Drive-by fix to clear selectedTreeElement if it is removed from the tree. Was causing removed TreeElements to be
2299         saved as a cookie since it was still the selected item.
2300
2301 2014-01-11  Timothy Hatcher  <timothy@apple.com>
2302
2303         Implement bar graph rendering for WebInspector.OverviewTimelineView.
2304
2305         https://bugs.webkit.org/show_bug.cgi?id=126831
2306
2307         Reviewed by Joseph Pecoraro.
2308
2309         * UserInterface/Main.html: Added new files.
2310
2311         * UserInterface/OverviewTimelineView.css:
2312         (.timeline-view.overview > .data-grid td.graph-column):
2313         (.timeline-view.overview > .data-grid td.graph-column > div):
2314         (.timeline-view.overview > .data-grid td.graph-column .timeline-record-bar):
2315         Position the bars in the DataGrid cells.
2316
2317         * UserInterface/OverviewTimelineView.js:
2318         (WebInspector.OverviewTimelineView.prototype.updateLayout):
2319         (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
2320         (WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
2321         Create the proper DataGridNodes for resources and source code timelines.
2322
2323         * UserInterface/ResourceTimelineDataGridNode.js:
2324         (WebInspector.ResourceTimelineDataGridNode):
2325         (WebInspector.ResourceTimelineDataGridNode.prototype.get records):
2326         (WebInspector.ResourceTimelineDataGridNode.prototype.get resource):
2327         (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
2328         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
2329         (WebInspector.ResourceTimelineDataGridNode.prototype.refresh):
2330         (WebInspector.ResourceTimelineDataGridNode.prototype._needsRefresh):
2331         (WebInspector.ResourceTimelineDataGridNode.prototype._goToResource):
2332         Simplify by deferring the graph logic to the new TimelineDataGridNode base class.
2333
2334         * UserInterface/SourceCodeTimelineTimelineDataGridNode.js: Added.
2335         (WebInspector.SourceCodeTimelineTimelineDataGridNode):
2336         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get records):
2337         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get sourceCodeTimeline):
2338         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get data):
2339
2340         * UserInterface/TimelineDataGridNode.js: Added.
2341         (WebInspector.TimelineDataGridNode):
2342         (WebInspector.TimelineDataGridNode.prototype.get records):
2343         (WebInspector.TimelineDataGridNode.prototype.get data):
2344         (WebInspector.TimelineDataGridNode.prototype.createCellContent):
2345         (WebInspector.TimelineDataGridNode.prototype.refresh):
2346         (WebInspector.TimelineDataGridNode.prototype.refreshGraph):
2347         (WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
2348         Handles the graph column and manages the records and their bars.
2349
2350         * UserInterface/TimelineRecordBar.css: Added.
2351         (.timeline-record-bar):
2352         (.timeline-record-bar > .segment):
2353         (.timeline-record-bar:not(.has-inactive-segment) > .segment):
2354         (.timeline-record-bar.unfinished > .segment):
2355         (.timeline-record-bar > .segment.inactive + .segment):
2356         (:focus .selected .timeline-record-bar > .segment):
2357         (.timeline-record-bar > .segment.inactive):
2358         (.timeline-record-bar.timeline-record-type-network > .segment):
2359         (.timeline-record-bar.timeline-record-type-layout > .segment):
2360         (.timeline-record-bar.timeline-record-type-script > .segment):
2361
2362         * UserInterface/TimelineRecordBar.js: Added.
2363         (WebInspector.TimelineRecordBar):
2364         (WebInspector.TimelineRecordBar.prototype.get element):
2365         (WebInspector.TimelineRecordBar.prototype.refresh):
2366         (WebInspector.TimelineRecordBar.prototype._updateElementPosition):
2367
2368 2014-01-08  Timothy Hatcher  <timothy@apple.com>
2369
2370         Update the current WebInspector.TimelineView when time range changes.
2371
2372         https://bugs.webkit.org/show_bug.cgi?id=126667
2373
2374         Reviewed by Joseph Pecoraro.
2375
2376         * UserInterface/TimelineContentView.js:
2377         (WebInspector.TimelineContentView.prototype._showTimelineView):
2378         (WebInspector.TimelineContentView.prototype._update):
2379         (WebInspector.TimelineContentView.prototype._startUpdatingCurrentTime):
2380         (WebInspector.TimelineContentView.prototype._stopUpdatingCurrentTime):
2381         (WebInspector.TimelineContentView.prototype._recordingStarted):
2382         (WebInspector.TimelineContentView.prototype._recordingStopped):
2383         (WebInspector.TimelineContentView.prototype._recordingReset):
2384         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
2385         * UserInterface/TimelineOverview.js:
2386         (WebInspector.TimelineOverview):
2387         (WebInspector.TimelineOverview.prototype.updateLayout):
2388         (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
2389         (WebInspector.TimelineOverview.prototype._updateElementWidth):
2390         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
2391         (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
2392         * UserInterface/TimelineRuler.js:
2393         (WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
2394         * UserInterface/TimelineView.js:
2395         (WebInspector.TimelineView):
2396         (WebInspector.TimelineView.prototype.get zeroTime):
2397         (WebInspector.TimelineView.prototype.set zeroTime):
2398         (WebInspector.TimelineView.prototype.get startTime):
2399         (WebInspector.TimelineView.prototype.set startTime):
2400         (WebInspector.TimelineView.prototype.get endTime):
2401         (WebInspector.TimelineView.prototype.set endTime):
2402         (WebInspector.TimelineView.prototype.get currentTime):
2403         (WebInspector.TimelineView.prototype.set currentTime.checkIfLayoutIsNeeded):
2404         (WebInspector.TimelineView.prototype.set currentTime):
2405         (WebInspector.TimelineView.prototype.updateLayout):
2406         (WebInspector.TimelineView.prototype.updateLayoutIfNeeded):
2407         (WebInspector.TimelineView.prototype.needsLayout):
2408
2409 2013-12-19  Timothy Hatcher  <timothy@apple.com>
2410
2411         Implement time range selection for TimelineOverview and TimelineRuler.
2412
2413         https://bugs.webkit.org/show_bug.cgi?id=126035
2414
2415         Reviewed by Joseph Pecoraro.
2416
2417         * UserInterface/TimelineContentView.js:
2418         (WebInspector.TimelineContentView.prototype._update):
2419         (WebInspector.TimelineContentView.prototype._recordingReset):
2420         Properly update start time and the selection start time on reset.
2421
2422         * UserInterface/TimelineOverview.js:
2423         (WebInspector.TimelineOverview):
2424         (WebInspector.TimelineOverview.prototype.get selectionStartTime):
2425         (WebInspector.TimelineOverview.prototype.set selectionStartTime):
2426         (WebInspector.TimelineOverview.prototype.get selectionDuration):
2427         (WebInspector.TimelineOverview.prototype.set selectionDuration):
2428         Added selection getters and setters.
2429
2430         * UserInterface/TimelineRuler.css:
2431         (.timeline-ruler.allows-time-range-selection):
2432         (.timeline-ruler > *):
2433         (.timeline-ruler > .header):
2434         (.timeline-ruler > .selection-drag):
2435         (.timeline-ruler > .selection-drag:active):
2436         (.timeline-ruler > .selection-handle):
2437         (.timeline-ruler > .selection-handle.left):
2438         (.timeline-ruler > .selection-handle.right):
2439         (.timeline-ruler > .shaded-area):
2440         (.timeline-ruler > .shaded-area.left):
2441         (.timeline-ruler > .shaded-area.right):
2442         Added styles for the selection elements and tweaked pointer-events to allow
2443         events on elements we expect.
2444
2445         * UserInterface/TimelineRuler.js:
2446         (WebInspector.TimelineRuler):
2447         (WebInspector.TimelineRuler.prototype.get allowsTimeRangeSelection): Added.
2448         (WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection): Added.
2449         (WebInspector.TimelineRuler.prototype.get selectionStartTime): Added.
2450         (WebInspector.TimelineRuler.prototype.set selectionStartTime): Added.
2451         (WebInspector.TimelineRuler.prototype.get selectionEndTime): Added.
2452         (WebInspector.TimelineRuler.prototype.set selectionEndTime): Added.
2453         (WebInspector.TimelineRuler.prototype.updateLayout):
2454         (WebInspector.TimelineRuler.prototype._needsMarkerLayout.update):
2455         (WebInspector.TimelineRuler.prototype._needsMarkerLayout):
2456         (WebInspector.TimelineRuler.prototype._needsSelectionLayout.update):
2457         (WebInspector.TimelineRuler.prototype._needsSelectionLayout):
2458         (WebInspector.TimelineRuler.prototype._recalculate):
2459         (WebInspector.TimelineRuler.prototype._updatePositionOfElement):
2460         (WebInspector.TimelineRuler.prototype._updateMarkers):
2461         (WebInspector.TimelineRuler.prototype._updateSelection): Added.
2462         (WebInspector.TimelineRuler.prototype._dispatchTimeRangeSelectionChangedEvent):
2463         (WebInspector.TimelineRuler.prototype._timelineMarkerTimeChanged):
2464         (WebInspector.TimelineRuler.prototype._handleMouseDown): Added.
2465         (WebInspector.TimelineRuler.prototype._handleMouseMove): Added.
2466         (WebInspector.TimelineRuler.prototype._handleMouseUp): Added.
2467         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown): Added.
2468         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove): Added.
2469         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseUp): Added.
2470         Create selection elements and handle mouse events for drag and move.
2471
2472 2013-12-17  Timothy Hatcher  <timothy@apple.com>
2473
2474         Support scroll to zoom in TimelineOverview.
2475
2476         https://bugs.webkit.org/show_bug.cgi?id=125909
2477
2478         Reviewed by Joseph Pecoraro.
2479
2480         * UserInterface/TimelineOverview.js:
2481         (WebInspector.TimelineOverview):
2482         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
2483
2484 2013-12-17  Timothy Hatcher  <timothy@apple.com>
2485
2486         Add the start of the TimelineOverview class.
2487
2488         TimelineOverview currently has a time ruler and tracks the current recording time.
2489
2490         https://bugs.webkit.org/show_bug.cgi?id=125878
2491
2492         Reviewed by Joseph Pecoraro.
2493
2494         * UserInterface/Main.html:
2495         * UserInterface/TimelineContentView.css:
2496         (.content-view.timeline > .timeline-overview):
2497         * UserInterface/TimelineContentView.js:
2498         (WebInspector.TimelineContentView):
2499         (WebInspector.TimelineContentView.prototype.updateLayout):
2500         (WebInspector.TimelineContentView.prototype._update):
2501         (WebInspector.TimelineContentView.prototype._recordingStarted):
2502         (WebInspector.TimelineContentView.prototype._recordingStopped):
2503         (WebInspector.TimelineContentView.prototype._recordingReset):
2504         * UserInterface/TimelineManager.js:
2505         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
2506         (WebInspector.TimelineManager.prototype.eventRecorded):
2507         * UserInterface/TimelineMarker.js: Renamed from Source/WebInspectorUI/UserInterface/TimelineEventMarker.js.
2508         (WebInspector.TimelineMarker):
2509         (WebInspector.TimelineMarker.prototype.get time):
2510         (WebInspector.TimelineMarker.prototype.set time):
2511         (WebInspector.TimelineMarker.prototype.get type):
2512         * UserInterface/TimelineOverview.css: Added.
2513         (.timeline-overview > .scroll-container):
2514         (.timeline-overview > .scroll-container > .timeline-ruler):
2515         * UserInterface/TimelineOverview.js: Added.
2516         (WebInspector.TimelineOverview):
2517         (WebInspector.TimelineOverview.prototype.get element):
2518         (WebInspector.TimelineOverview.prototype.get startTime):
2519         (WebInspector.TimelineOverview.prototype.set startTime):
2520         (WebInspector.TimelineOverview.prototype.get secondsPerPixel):
2521         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
2522         (WebInspector.TimelineOverview.prototype.get endTime):
2523         (WebInspector.TimelineOverview.prototype.set endTime):
2524         (WebInspector.TimelineOverview.prototype.addMarker):
2525         (WebInspector.TimelineOverview.prototype.revealMarker):
2526         (WebInspector.TimelineOverview.prototype.updateLayout):
2527         (WebInspector.TimelineOverview.prototype._updateElementWidth):
2528         (WebInspector.TimelineOverview.prototype._needsLayout):
2529         * UserInterface/TimelineRecording.js:
2530         (WebInspector.TimelineRecording.prototype.get startTime):
2531         (WebInspector.TimelineRecording.prototype.get endTime):
2532         (WebInspector.TimelineRecording.prototype.reset):
2533         * UserInterface/TimelineRuler.css:
2534         (.timeline-ruler > .markers):
2535         (.timeline-ruler > .markers > .marker):
2536         (.timeline-ruler > .markers > .marker.current-time):
2537         (.timeline-ruler > .markers > .marker.current-time::before):
2538         (.timeline-ruler > .markers > .marker.load-event):
2539         (.timeline-ruler > .markers > .marker.dom-content-event):
2540         (.timeline-ruler > .markers > .marker.timestamp):
2541         * UserInterface/TimelineRuler.js:
2542         (WebInspector.TimelineRuler):
2543         (WebInspector.TimelineRuler.prototype.updateLayout):
2544         (WebInspector.TimelineRuler.prototype._needsLayout):
2545         (WebInspector.TimelineRuler.prototype._needsMarkerLayout.update):
2546         (WebInspector.TimelineRuler.prototype._needsMarkerLayout):
2547         (WebInspector.TimelineRuler.prototype._recalculate):
2548         (WebInspector.TimelineRuler.prototype._updateLeftPositionOfElement):
2549         (WebInspector.TimelineRuler.prototype._updateMarkers):
2550         (WebInspector.TimelineRuler.prototype._timelineMarkerTimeChanged):
2551
2552 2013-12-13  Timothy Hatcher  <timothy@apple.com>
2553
2554         Clean up and refactor TimelineDecorations into TimelineRuler.
2555
2556         https://bugs.webkit.org/show_bug.cgi?id=125709
2557
2558         Reviewed by Joseph Pecoraro.
2559
2560         * UserInterface/Main.html:
2561         * UserInterface/OverviewTimelineView.css:
2562         (.timeline-view.overview > .timeline-ruler):
2563         (.timeline-view.overview > .timeline-ruler > .header):
2564         (.timeline-view.overview > .timeline-ruler > .event-markers):
2565         Updated class names and border sides.
2566
2567         * UserInterface/OverviewTimelineView.js:
2568         (WebInspector.OverviewTimelineView):
2569         (WebInspector.OverviewTimelineView.prototype.updateLayout):
2570         Call updateLayout on the TimelineRuler.
2571
2572         * UserInterface/TimelineRuler.css: Renamed from Source/WebInspectorUI/UserInterface/TimelineDecorations.css.
2573         (.timeline-ruler):
2574         (.timeline-ruler > .header):
2575         (.timeline-ruler > .header > .divider):
2576         (.timeline-ruler > .header > .divider > .label):
2577         (.timeline-ruler > .event-markers):
2578         (.timeline-ruler > .event-markers > .event-marker-tooltip):
2579         (.timeline-ruler > .event-markers > .event-marker):
2580         (.timeline-ruler > .event-markers > .event-marker.load-event):
2581         (.timeline-ruler > .event-markers > .event-marker.dom-content-event):
2582         (.timeline-ruler > .event-markers > .event-marker.timestamp):
2583         Updated class names and border sides.
2584
2585         * UserInterface/TimelineRuler.js: Renamed from Source/WebInspectorUI/UserInterface/TimelineDecorations.js.
2586         (WebInspector.TimelineRuler):
2587         (WebInspector.TimelineRuler.prototype.get element):
2588         (WebInspector.TimelineRuler.prototype.get headerElement):
2589         (WebInspector.TimelineRuler.prototype.get allowsClippedLabels):
2590         (WebInspector.TimelineRuler.prototype.set allowsClippedLabels):
2591         (WebInspector.TimelineRuler.prototype.get zeroTime):
2592         (WebInspector.TimelineRuler.prototype.set zeroTime):
2593         (WebInspector.TimelineRuler.prototype.get startTime):
2594         (WebInspector.TimelineRuler.prototype.set startTime):
2595         (WebInspector.TimelineRuler.prototype.get duration):
2596         (WebInspector.TimelineRuler.prototype.set duration):
2597         (WebInspector.TimelineRuler.prototype.get endTime):
2598         (WebInspector.TimelineRuler.prototype.set endTime):
2599         (WebInspector.TimelineRuler.prototype.get secondsPerPixel):
2600         (WebInspector.TimelineRuler.prototype.set secondsPerPixel):
2601         (WebInspector.TimelineRuler.prototype.updateLayout.removeDividerAndSelectNext):
2602         (WebInspector.TimelineRuler.prototype.updateLayout):
2603         (WebInspector.TimelineRuler.prototype._needsLayout):
2604         (WebInspector.TimelineRuler.prototype._recalculate):
2605         Refactor so the times are stored on TimelineRuler and not passed in each time an update is needed.
2606         Support dividers that don't always start at the zero position, allowing a sliding time ruler.
2607         Support for a non-pinned ruler where the end time is not fixed and the scale is specified in
2608         seconds-per-pixel.
2609
2610 2014-01-08  Timothy Hatcher  <timothy@apple.com>
2611
2612         Improve scroll performance of WebInspector.TreeOutlineDataGridSynchronizer.
2613
2614         https://bugs.webkit.org/show_bug.cgi?id=126660
2615
2616         Reviewed by Joseph Pecoraro.
2617
2618         * UserInterface/TreeOutlineDataGridSynchronizer.js:
2619         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
2620         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
2621         Ignore scroll events triggered by our internal use of setting scrollTop.
2622
2623 2013-11-15  Timothy Hatcher  <timothy@apple.com>
2624
2625         Add a synchronized DataGrid to the OverviewTimelineView.
2626
2627         The DataGrid is synchronized with the sidebar TreeOutline to appear as one when the view
2628         and sidebar are both showing. The two scroll, expand and collapse in sync when the view
2629         is showing. When the view is not showing the sidebar can scroll independently.
2630
2631         https://bugs.webkit.org/show_bug.cgi?id=124429
2632
2633         Reviewed by Joseph Pecoraro.
2634
2635         * UserInterface/DataGrid.js:
2636         (WebInspector.DataGrid):
2637         (WebInspector.DataGrid.createSortableDataGrid):
2638         (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
2639         (WebInspector.DataGridNode.prototype.createCellContent):
2640         Handle undefined/null cells better by substituting empty strings.
2641
2642         (WebInspector.DataGridNode.prototype.collapse):
2643         (WebInspector.DataGridNode.prototype.expand):
2644         Fire events on the DataGrid for expand and collapse.
2645
2646         * UserInterface/Main.html: Include TreeOutlineDataGridSynchronizer.js.
2647
2648         * UserInterface/NavigationSidebarPanel.css:
2649         (.sidebar > .panel.navigation > .content): Shorten by 1px to match the content view height.
2650         Needed to keep scrolling in sync. The clipping looks better too.
2651
2652         * UserInterface/OverviewTimelineView.css:
2653         (.timeline-view.overview > .data-grid):
2654         (.timeline-view.overview > .data-grid table.header):
2655         (.timeline-view.overview > .data-grid .data-container):
2656         Style the DataGrid to to not have a header.
2657
2658         * UserInterface/OverviewTimelineView.js:
2659         (WebInspector.OverviewTimelineView):
2660         (WebInspector.OverviewTimelineView.prototype.shown):
2661         (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
2662         (WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
2663         Create the DataGrid and some placeholder nodes. Hook up TreeOutlineDataGridSynchronizer.
2664
2665         * UserInterface/TimelineContentView.css:
2666         (.content-view.timeline > .view-container > .timeline-view > .data-grid td):
2667         (.content-view.timeline > .view-container > .timeline-view > .data-grid table.data):
2668         Style the DataGrid to match the height of TreeElements in the sidebar.
2669
2670         * UserInterface/TimelineSidebarPanel.css:
2671         (.sidebar > .panel.timeline.timeline-content-view-showing > .content):
2672         Hide the scrollbar off the right when the view is showing. The view will show the scrollbar.
2673
2674         * UserInterface/TimelineSidebarPanel.js:
2675         (WebInspector.TimelineSidebarPanel):
2676         (WebInspector.TimelineSidebarPanel.prototype._timelinesTreeElementSelected):
2677         (WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):
2678
2679         * UserInterface/TreeOutline.js:
2680         (TreeOutline.prototype.removeChildAtIndex):
2681         (TreeOutline.prototype.removeChildren):
2682         (TreeOutline.prototype.removeChildrenRecursive):
2683         (TreeElement.prototype.set hidden):
2684         Add event callbacks for onhidden and onremove.
2685
2686         * UserInterface/TreeOutlineDataGridSynchronizer.js: Added.
2687         (WebInspector.TreeOutlineDataGridSynchronizer):
2688         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.associate):
2689         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.synchronize):
2690         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
2691         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
2692         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeSelected):
2693         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeExpanded):
2694         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeCollapsed):
2695         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementSelected):
2696         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
2697         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementRemoved):
2698         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementExpanded):
2699         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementCollapsed):
2700         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementHiddenChanged):
2701
2702 2013-11-07  Timothy Hatcher  <timothy@apple.com>
2703
2704         Start fleshing out the Overview Timeline view.
2705
2706         This gets the overview populating in the Timeline sidebar. The graph side is still empty.
2707
2708         https://bugs.webkit.org/show_bug.cgi?id=124005
2709
2710         Reviewed by Joseph Pecoraro.
2711
2712         * Localizations/en.lproj/localizedStrings.js: Updated.
2713         * UserInterface/Frame.js:
2714         (WebInspector.Frame.prototype.addResource):
2715         * UserInterface/Images/TimelineRecordAnimation.svg: Added.
2716         * UserInterface/Images/TimelineRecordEvent.svg: Added.
2717         * UserInterface/Images/TimelineRecordLayout.svg: Added.
2718         * UserInterface/Images/TimelineRecordPaint.svg: Added.
2719         * UserInterface/Images/TimelineRecordScriptEvaluated.svg: Added.
2720         * UserInterface/Images/TimelineRecordStyle.svg: Added.
2721         * UserInterface/Images/TimelineRecordTimer.svg: Added.
2722         * UserInterface/Main.html:
2723         * UserInterface/OverviewTimelineView.js: Added.
2724         (WebInspector.OverviewTimelineView):
2725         (WebInspector.OverviewTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2726         (WebInspector.OverviewTimelineView.prototype._childFrameWasAdded):
2727         (WebInspector.OverviewTimelineView.prototype._mainResourceDidChange):
2728         (WebInspector.OverviewTimelineView.prototype._provisionalResourceWasAdded):
2729         (WebInspector.OverviewTimelineView.prototype._resourceWasAdded):
2730         (WebInspector.OverviewTimelineView.prototype._compareTreeElementsByDetails):
2731         (WebInspector.OverviewTimelineView.prototype._compareTreeElementsByStartTime):
2732         (WebInspector.OverviewTimelineView.prototype._insertTreeElement):
2733         (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
2734         (WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
2735         (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
2736         * UserInterface/SourceCodeTimelineTreeElement.js: Added.
2737         (WebInspector.SourceCodeTimelineTreeElement):
2738         (WebInspector.SourceCodeTimelineTreeElement.prototype.get sourceCodeTimeline):
2739         * UserInterface/TimelineContentView.js:
2740         (WebInspector.TimelineContentView.createPathComponent):
2741         (WebInspector.TimelineContentView):
2742         (WebInspector.TimelineContentView.prototype.showOverviewTimelineView):
2743         (WebInspector.TimelineContentView.prototype.showTimelineView):
2744         (WebInspector.TimelineContentView.prototype.get supportsSplitContentBrowser):
2745         (WebInspector.TimelineContentView.prototype.get selectionPathComponents):
2746         (WebInspector.TimelineContentView.prototype._pathComponentSelected):
2747         (WebInspector.TimelineContentView.prototype._showTimelineView):
2748         (WebInspector.TimelineContentView.prototype._recordingReset):
2749         * UserInterface/TimelineIcons.css:
2750         (.style-record .icon): Added.
2751         (.layout-record .icon): Added.
2752         (.paint-record .icon): Added.
2753         (.evaluated-record .icon): Added.
2754         (.event-record .icon): Added.
2755         (.timer-record .icon): Added.
2756         (.animation-record .icon): Added.
2757         * UserInterface/TimelineView.css: Added.
2758         (.timeline-view):
2759         * UserInterface/TimelineView.js: Added.
2760         (WebInspector.TimelineView):
2761         (WebInspector.TimelineView.prototype.get navigationSidebarTreeOutline):
2762         (WebInspector.TimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2763         (WebInspector.TimelineView.prototype.reset):
2764         (WebInspector.TimelineView.prototype.shown):
2765         (WebInspector.TimelineView.prototype.hidden):
2766
2767 2013-11-07  Timothy Hatcher  <timothy@apple.com>
2768
2769         Start fleshing out the new TimelineSidebarPanel and TimelineContentView.
2770
2771         https://bugs.webkit.org/show_bug.cgi?id=124003
2772
2773         Reviewed by Joseph Pecoraro.
2774
2775         * UserInterface/ContentView.js:
2776         (WebInspector.ContentView):
2777         (WebInspector.ContentView.isViewable):
2778         * UserInterface/FrameContentView.js:
2779         * UserInterface/Images/CloseTimeline.png: Added.
2780         * UserInterface/Images/CloseTimeline@2x.png: Added.
2781         * UserInterface/Images/ColorsLarge.png: Added.
2782         * UserInterface/Images/ColorsLarge@2x.png: Added.
2783         * UserInterface/Images/NetworkLarge.png: Added.
2784         * UserInterface/Images/NetworkLarge@2x.png: Added.
2785         * UserInterface/Images/ScriptLarge.png: Added.
2786         * UserInterface/Images/ScriptLarge@2x.png: Added.
2787         * UserInterface/Main.html:
2788         * UserInterface/Main.js:
2789         (WebInspector.sidebarPanelForRepresentedObject):
2790         (WebInspector._revealAndSelectRepresentedObjectInNavigationSidebar):
2791         * UserInterface/NavigationSidebarPanel.js:
2792         (WebInspector.NavigationSidebarPanel.prototype.showDefaultContentView):
2793         * UserInterface/ResourceClusterContentView.js:
2794         * UserInterface/TimelineContentView.css: Added.
2795         (.content-view.timeline > .view-container):
2796         * UserInterface/TimelineContentView.js: Added.
2797         (WebInspector.TimelineContentView):
2798         * UserInterface/TimelineIcons.css: Renamed from Source/WebInspectorUI/UserInterface/InstrumentIcons.css.
2799         (.network-icon.large .icon): Added.
2800         (.colors-icon.large .icon): Added.
2801         (.script-icon.large .icon): Added.
2802         * UserInterface/TimelineSidebarPanel.css:
2803         (.sidebar > .panel.timeline > .navigation-bar):
2804         (.sidebar > .panel.timeline > .title-bar):
2805         (.sidebar > .panel.timeline > .title-bar.timelines):
2806         (.sidebar > .panel.timeline > .title-bar.timeline-events):
2807         (.sidebar > .panel.timeline > .timelines-content):
2808         (.sidebar > .panel.timeline > .timelines-content .close-button):
2809         (.sidebar > .panel.timeline > .timelines-content li.item.selected .close-button):
2810         (.sidebar > .panel.timeline > .timelines-content .close-button:active):
2811         (.sidebar > .panel.timeline > .content):
2812         * UserInterface/TimelineSidebarPanel.js:
2813         (WebInspector.TimelineSidebarPanel.createTimelineTreeElement):
2814         (WebInspector.TimelineSidebarPanel):
2815         (WebInspector.TimelineSidebarPanel.prototype.showDefaultContentView):
2816         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):
2817         (WebInspector.TimelineSidebarPanel.prototype.get contentTreeOutlineLabel):
2818         (WebInspector.TimelineSidebarPanel.prototype.set contentTreeOutlineLabel):
2819         (WebInspector.TimelineSidebarPanel.prototype.showTimelineOverview):
2820         (WebInspector.TimelineSidebarPanel.prototype.showTimelineView):
2821         (WebInspector.TimelineSidebarPanel.prototype._timelinesTreeElementSelected):
2822
2823 2014-01-08  Timothy Hatcher  <timothy@apple.com>
2824
2825         Correctly track time bounds of WebInspector.Timeline and WebInspector.TimelineRecording.
2826
2827         The startTime and endTime were not correct when Network timeline needed to be taken into
2828         account (due to its dynamic loading nature.) This creates a network Timeline for the purposes
2829         of tracking the ResourceTimelineRecords and getting accurate start and end times.
2830
2831         Also changes the way TimelineRecord tracks the inactive portion of time, needed for later
2832         work on the timeline graphs.
2833
2834         https://bugs.webkit.org/show_bug.cgi?id=126676
2835
2836         Reviewed by Joseph Pecoraro.
2837
2838         * UserInterface/ResourceTimelineRecord.js:
2839         (WebInspector.ResourceTimelineRecord.prototype.get updatesDynamically):
2840         (WebInspector.ResourceTimelineRecord.prototype.get usesActiveStartTime):
2841         (WebInspector.ResourceTimelineRecord.prototype.get startTime):
2842         (WebInspector.ResourceTimelineRecord.prototype.get activeStartTime):
2843         (WebInspector.ResourceTimelineRecord.prototype.get endTime):
2844         * UserInterface/Timeline.js:
2845         (WebInspector.Timeline):
2846         (WebInspector.Timeline.prototype.get startTime):
2847         (WebInspector.Timeline.prototype.get endTime):
2848         (WebInspector.Timeline.prototype.addRecord):
2849         (WebInspector.Timeline.prototype._updateTimesIfNeeded):
2850         (WebInspector.Timeline.prototype._recordUpdated):
2851         * UserInterface/TimelineRecord.js:
2852         (WebInspector.TimelineRecord.prototype.get startTime):
2853         (WebInspector.TimelineRecord.prototype.get activeStartTime):
2854         (WebInspector.TimelineRecord.prototype.get endTime):
2855         (WebInspector.TimelineRecord.prototype.get inactiveDuration):
2856         (WebInspector.TimelineRecord.prototype.get activeDuration):
2857         (WebInspector.TimelineRecord.prototype.get updatesDynamically):
2858         (WebInspector.TimelineRecord.prototype.get usesActiveStartTime):
2859         * UserInterface/TimelineRecording.js:
2860         (WebInspector.TimelineRecording.prototype._timelineTimesUpdated):
2861
2862 2013-10-25  Timothy Hatcher  <timothy@apple.com>
2863
2864         Implement TimelineRecording and per-call-site timelines.
2865
2866         Keep track of timeline records per global timeline and per source code location.
2867         This will be used to display them in the UI in later patches.
2868
2869         https://bugs.webkit.org/show_bug.cgi?id=123367
2870
2871         Reviewed by Joseph Pecoraro.
2872
2873         * UserInterface/Main.html:
2874         * UserInterface/SourceCodeTimeline.js: Added.
2875         (WebInspector.SourceCodeTimeline):
2876         (WebInspector.SourceCodeTimeline.prototype.get sourceCode):
2877         (WebInspector.SourceCodeTimeline.prototype.get sourceCodeLocation):
2878         (WebInspector.SourceCodeTimeline.prototype.get recordType):
2879         (WebInspector.SourceCodeTimeline.prototype.get recordEventType):
2880         * UserInterface/Timeline.js: Added.
2881         (WebInspector.Timeline):
2882         (WebInspector.Timeline.prototype.get records):
2883         (WebInspector.Timeline.prototype.addRecord):
2884         * UserInterface/TimelineRecording.js:
2885         (WebInspector.TimelineRecording):
2886         (WebInspector.TimelineRecording.prototype.get timelines): Added.
2887         (WebInspector.TimelineRecording.prototype.sourceCodeTimelinesForSourceCode): Added.
2888         (WebInspector.TimelineRecording.prototype.addEventMarker): Implemented.
2889         (WebInspector.TimelineRecording.prototype.addRecord): Implemented.
2890         (WebInspector.TimelineRecording.prototype._keyForRecord): Added.
2891
2892 2013-10-25  Timothy Hatcher  <timothy@apple.com>
2893
2894         Add support for multiple Timeline recordings.
2895
2896         We also don't explicitly add ResourceTimelineRecords anymore. These will be tracked automatically in a later patch.
2897
2898         https://bugs.webkit.org/show_bug.cgi?id=123366
2899
2900         Reviewed by Joseph Pecoraro.
2901
2902         * UserInterface/DashboardManager.js:
2903         (WebInspector.DashboardManager.prototype._mainResourceDidChange): Check for currentRecording.
2904         * UserInterface/InspectorFrontendAPI.js:
2905         (InspectorFrontendAPI.isTimelineProfilingEnabled): Check for currentRecording.
2906         * UserInterface/Main.html:
2907         * UserInterface/TimelineManager.js:
2908         (WebInspector.TimelineManager):
2909         (WebInspector.TimelineManager.prototype.get currentRecording): Added.
2910         (WebInspector.TimelineManager.prototype.startRecording): Make a new recording and push it onto the recording array.
2911         Add the current recording to the event.
2912         (WebInspector.TimelineManager.prototype.stopRecording): Add the current recording to the event.
2913         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Check for currentRecording. Add the markers
2914         to the current recording.
2915         (WebInspector.TimelineManager.prototype._addRecord): Add the record to the current recording.
2916         (WebInspector.TimelineManager.prototype._startAutoRecording): Clean up. Don't add ResourceTimelineRecord. Clear recordings.
2917         (WebInspector.TimelineManager.prototype._stopAutoRecordingSoon): Check for _currentRecording.
2918         (WebInspector.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout): Ditto.
2919         (WebInspector.TimelineManager.prototype._mainResourceDidChange): Don't add ResourceTimelineRecord anymore.
2920         (WebInspector.TimelineManager.prototype._resourceWasAdded): Removed.
2921         * UserInterface/TimelineRecording.js: Added.
2922         (WebInspector.TimelineRecording): Added.
2923         (WebInspector.TimelineRecording.prototype.addEventMarker): Added.
2924         (WebInspector.TimelineRecording.prototype.addRecord): Added.
2925
2926 2013-10-25  Timothy Hatcher  <timothy@apple.com>
2927
2928         Track callFrames and sourceCodeLocation per TimelineRecord.
2929
2930         https://bugs.webkit.org/show_bug.cgi?id=123359
2931
2932         Reviewed by Joseph Pecoraro.
2933
2934         * UserInterface/LayoutTimelineRecord.js:
2935         (WebInspector.LayoutTimelineRecord): Pass callFrames and sourceCodeLocation to superclass.
2936         * UserInterface/ScriptTimelineRecord.js:
2937         (WebInspector.ScriptTimelineRecord): Pass callFrames and sourceCodeLocation to superclass.
2938         * UserInterface/TimelineManager.js:
2939         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Add "Payload" suffix to better track what is a protocol object.
2940         Pass the callFrames and sourceCodeLocation to all the new TimelineRecords.
2941         (WebInspector.TimelineManager.prototype.eventRecorded): Add "Payload" suffix.
2942         * UserInterface/TimelineRecord.js:
2943         (WebInspector.TimelineRecord):
2944         (WebInspector.TimelineRecord.prototype.get callFrames): Added.
2945         (WebInspector.TimelineRecord.prototype.get initiatorCallFrame): Added.
2946         (WebInspector.TimelineRecord.prototype.get sourceCodeLocation): Added.
2947
2948 2013-10-25  Timothy Hatcher  <timothy@apple.com>
2949
2950         Change how the load and content ready event timestamps are tracked.
2951
2952         https://bugs.webkit.org/show_bug.cgi?id=123356
2953
2954         Reviewed by Joseph Pecoraro.
2955
2956         * UserInterface/DashboardManager.js:
2957         (WebInspector.DashboardManager.prototype._updateTime): Use the timestamps on the main frame.
2958         * UserInterface/Frame.js:
2959         (WebInspector.Frame):
2960         (WebInspector.Frame.prototype.get domContentReadyEventTimestamp): Added.
2961         (WebInspector.Frame.prototype.get loadEventTimestamp): Added.
2962         (WebInspector.Frame.prototype.markDOMContentReadyEvent): Added.
2963         (WebInspector.Frame.prototype.markLoadEvent): Added.
2964         * UserInterface/TimelineManager.js:
2965         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Use markLoadEvent and markDOMContentReadyEvent.
2966         Do it for all frames, not just the main frame.
2967         (WebInspector.TimelineManager.prototype.pageDidLoad): Call markLoadEvent on the Frame.
2968
2969 2013-10-25  Timothy Hatcher  <timothy@apple.com>
2970
2971         Remove a lot of the current Timelines code to make room for a new implementation.
2972
2973         https://bugs.webkit.org/show_bug.cgi?id=123368
2974
2975         Reviewed by Joseph Pecoraro.
2976
2977         * Localizations/en.lproj/localizedStrings.js:
2978         * UserInterface/ContentView.js:
2979         (WebInspector.ContentView):
2980         (WebInspector.ContentView.isViewable):
2981         * UserInterface/DashboardView.js:
2982         (WebInspector.DashboardView.prototype._networkItemWasClicked):
2983         * UserInterface/InspectorFrontendAPI.js:
2984         (InspectorFrontendAPI.setTimelineProfilingEnabled):
2985         (InspectorFrontendAPI.stopProfilingJavaScript):
2986         * UserInterface/InstrumentSidebarPanel.js: Removed.
2987         * UserInterface/Main.html:
2988         * UserInterface/Main.js:
2989         (WebInspector.contentLoaded):
2990         (WebInspector.sidebarPanelForRepresentedObject):
2991         (WebInspector.openURL):
2992         * UserInterface/Object.js:
2993         (WebInspector.Object.addEventListener):
2994         * UserInterface/TimelineManager.js:
2995         (WebInspector.TimelineManager):
2996         (WebInspector.TimelineManager.prototype.startRecording):
2997         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
2998         (WebInspector.TimelineManager.prototype.eventRecorded):
2999         (WebInspector.TimelineManager.prototype.objectForCookie):
3000         (WebInspector.TimelineManager.prototype._addRecord):
3001         * UserInterface/TimelinesObject.js: Removed.
3002         * UserInterface/TimelineOverview.css: Removed.
3003         * UserInterface/TimelineOverview.js: Removed.
3004         * UserInterface/TimelineSidebarPanel.css: Added.
3005         * UserInterface/TimelineSidebarPanel.js: Added.
3006         (WebInspector.TimelineSidebarPanel):
3007         * UserInterface/TimelinesContentView.css: Removed.
3008         * UserInterface/TimelinesContentView.js: Removed.
3009
3010 2014-01-20  Timothy Hatcher  <timothy@apple.com>
3011
3012         Fix jumping to a text position when showing a resource.
3013
3014         https://bugs.webkit.org/show_bug.cgi?id=127271
3015
3016         Reviewed by Joseph Pecoraro.
3017
3018         * UserInterface/FrameContentView.js:
3019         (WebInspector.FrameContentView.prototype.showSourceCode): Just use showResponse's arguments
3020         which already does the same logic to call revealPosition.
3021         * UserInterface/ResourceClusterContentView.js:
3022         (WebInspector.ResourceClusterContentView.prototype.restoreFromCookie): This was the bug.
3023         lineNumber and columnNumber need honored here. They were only honored by FrameContentView.
3024         * UserInterface/ResourceSidebarPanel.js:
3025         (WebInspector.ResourceSidebarPanel.prototype.showSourceCode): Use showContentViewForRepresentedObject
3026         which also accepts a cookie and handles creating the content view for us.
3027
3028 2014-01-16  Brian Burg  <bburg@apple.com>
3029
3030         Web Inspector: add more context to Object.addEventListener assertions
3031         https://bugs.webkit.org/show_bug.cgi?id=127125
3032
3033         Reviewed by Joseph Pecoraro.
3034
3035         Log invalid event type and listener parameters, and log the other
3036         parameters so the callsite is easier to figure out.
3037
3038         * UserInterface/Object.js:
3039         (WebInspector.Object.addEventListener):
3040
3041 2014-01-16  Brian Burg  <bburg@apple.com>
3042
3043         Web Inspector: CallFrame is missing saveIdentityToCookie, or should be excluded
3044         https://bugs.webkit.org/show_bug.cgi?id=126791
3045
3046         Reviewed by Timothy Hatcher.
3047
3048         * UserInterface/CallFrame.js: Add a dummy saveIdentityToCookie() implementation.
3049
3050 2014-01-16  Brian Burg  <bburg@apple.com>
3051
3052         Web Inspector: add probe breakpoint action to popup breakpoint editor
3053         https://bugs.webkit.org/show_bug.cgi?id=126931
3054
3055         Reviewed by Timothy Hatcher.
3056
3057         Add probes to the breakpoint action dropdown.
3058         Reuse the "evaluate JavaScript" input UI.
3059
3060         * Localizations/en.lproj/localizedStrings.js:
3061         * UserInterface/BreakpointAction.js:
3062         * UserInterface/BreakpointActionView.js:
3063         (WebInspector.BreakpointActionView.displayStringForType):
3064         (WebInspector.BreakpointActionView.prototype._updateBody.switch.break):
3065
3066 2014-01-15  Brian Burg  <bburg@apple.com>
3067
3068         Web Inspector: capture probe samples on the backend
3069         https://bugs.webkit.org/show_bug.cgi?id=126668
3070
3071         Reviewed by Joseph Pecoraro.
3072
3073         * UserInterface/InspectorJSBackendCommands.js: Add probe enumeration value.
3074
3075 2014-01-15  Andreas Kling  <akling@apple.com>
3076
3077         Remove the CSS selector profiler.
3078         <https://webkit.org/b/127039>
3079
3080         Purge selector profiler code from the new Web Inspector UI.
3081
3082         Reviewed by Sam Weinig.
3083
3084         * Localizations/en.lproj/localizedStrings.js:
3085         * UserInterface/CSSSelectorProfileObject.js: Removed.
3086         * UserInterface/CSSSelectorProfileType.js: Removed.
3087         * UserInterface/CSSSelectorProfileView.js: Removed.
3088         * UserInterface/ContentView.js:
3089         (WebInspector.ContentView):
3090         (WebInspector.ContentView.isViewable):
3091         * UserInterface/InspectorWebBackendCommands.js:
3092         * UserInterface/InstrumentSidebarPanel.js:
3093         (WebInspector.InstrumentSidebarPanel):
3094         (WebInspector.InstrumentSidebarPanel.prototype._recordProfileGlyphMousedOver):
3095         (WebInspector.InstrumentSidebarPanel.prototype._recordProfileGlyphMousedDown):
3096         (WebInspector.InstrumentSidebarPanel.prototype._recordProfileGlyphClicked):
3097         (WebInspector.InstrumentSidebarPanel.prototype._profileTypeWasSelected):
3098         (WebInspector.InstrumentSidebarPanel.prototype._profilesCleared):
3099         * UserInterface/Main.html:
3100         * UserInterface/ProfileManager.js:
3101         (WebInspector.ProfileManager):
3102         (WebInspector.ProfileManager.prototype.initialize):
3103         (WebInspector.ProfileManager.prototype._checkForInterruptions):
3104         (WebInspector.ProfileManager.prototype._attemptToResumeProfiling):
3105         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
3106         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
3107
3108 2014-01-13  Timothy Hatcher  <timothy@apple.com>
3109
3110         Snap time dividers to nearest numbers instead of just dividing the time span into max density slices.
3111
3112         https://bugs.webkit.org/show_bug.cgi?id=125081
3113
3114         Reviewed by Joseph Pecoraro.
3115
3116         * UserInterface/TimelineDecorations.js:
3117         (WebInspector.TimelineDecorations.prototype.updateHeaderTimes): Snap the time slice to a nearest number.
3118         (WebInspector.TimelineDecorations.prototype.updateEventMarkers): Rename boundarySpan to timeSpan.
3119
3120 2014-01-10  Joseph Pecoraro  <pecoraro@apple.com>
3121
3122         Web Inspector: Remove unimplemented or static ScriptDebugServer features
3123         https://bugs.webkit.org/show_bug.cgi?id=126784
3124
3125         Reviewed by Timothy Hatcher.
3126
3127         * UserInterface/InspectorJSBackendCommands.js:
3128         * UserInterface/InspectorWebBackendCommands.js:
3129         * UserInterface/Legacy/6.0/InspectorWebBackendCommands.js:
3130         * UserInterface/Legacy/7.0/InspectorWebBackendCommands.js:
3131         * Versions/Inspector-iOS-6.0.json:
3132         * Versions/Inspector-iOS-7.0.json:
3133
3134 2014-01-10  Timothy Hatcher  <timothy@apple.com>
3135
3136         Web Inspector: support negative numbers in secondsToString and bytesToString.
3137
3138         https://bugs.webkit.org/show_bug.cgi?id=125708
3139
3140         Reviewed by Joseph Pecoraro.
3141
3142         * UserInterface/Utilities.js:
3143         (Number.secondsToString): Use Math.abs in the size checks.
3144         (Number.bytesToString): Ditto.
3145
3146 2014-01-10  Brian Burg  <bburg@apple.com>
3147
3148         Web Inspector: cycle clicked breakpoints between enabled, auto-continue, and disabled
3149         https://bugs.webkit.org/show_bug.cgi?id=126669
3150
3151         Reviewed by Joseph Pecoraro.
3152
3153         It's time-consuming to change a breakpoint's auto-continue setting through the
3154         breakpoint editor popup. This patch enables the user to toggle between enabled,
3155         auto-continue, and disabled by clicking on the breakpoint wedge in the sidebar
3156         tree and in the source text editor gutter. The auto-continue option is only
3157         cycled when the breakpoint has associated actions.
3158
3159         Clean up the breakpoint editor dialog so it hides irrelevant options when
3160         no breakpoint actions have been added.
3161
3162         Automatically unset auto-continue when the last breakpoint action is removed.
3163
3164         Rename the delegate textEditorBreakpointToggled to textEditorBreakpointClicked, since
3165         the behavior of the click depends on breakpoint state not available in the text editor.
3166
3167         * Localizations/en.lproj/localizedStrings.js:
3168         * UserInterface/Breakpoint.js:
3169         (WebInspector.Breakpoint.prototype.cycleToNextMode): Added.
3170         (WebInspector.Breakpoint.prototype.toggleAutoContinue): Added.
3171         (WebInspector.Breakpoint.prototype.appendContextMenuItems): Add auto-continue options.
3172         (WebInspector.Breakpoint.prototype.removeAction):
3173
3174         (WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement):
3175         (WebInspector.Breakpoint.prototype._popoverActionsAddActionButtonClicked):
3176         (WebInspector.Breakpoint.prototype.breakpointActionViewAppendActionView):
3177         (WebInspector.Breakpoint.prototype.breakpointActionViewRemoveActionView):
3178         (WebInspector.Breakpoint.prototype.willDismissPopover):
3179         * UserInterface/BreakpointTreeElement.css:
3180         (.item.breakpoint .status > .status-image.auto-continue):
3181         (.item.breakpoint .status > .status-image.disabled):
3182         * UserInterface/BreakpointTreeElement.js:
3183         (WebInspector.BreakpointTreeElement):
3184         (WebInspector.BreakpointTreeElement.prototype.onenter):
3185         (WebInspector.BreakpointTreeElement.prototype.onspace):
3186         (WebInspector.BreakpointTreeElement.prototype._updateStatus):
3187         (WebInspector.BreakpointTreeElement.prototype._breakpointLocationDidChange):
3188         (WebInspector.BreakpointTreeElement.prototype._statusImageElementClicked):
3189         * UserInterface/SourceCodeTextEditor.js:
3190         (WebInspector.SourceCodeTextEditor):
3191         (WebInspector.SourceCodeTextEditor.prototype.close):
3192         (WebInspector.SourceCodeTextEditor.prototype._breakpointInfoForBreakpoint):
3193         (WebInspector.SourceCodeTextEditor.prototype.textEditorBreakpointClicked):
3194         * UserInterface/TextEditor.css:
3195         (.text-editor > .CodeMirror .breakpoint-auto-continue:not(.breakpoint-disabled) .CodeMirror-linenumber::before):
3196         * UserInterface/TextEditor.js:
3197         (WebInspector.TextEditor.prototype._setBreakpointStylesOnLine.updateStyles):
3198         (WebInspector.TextEditor.prototype._setBreakpointStylesOnLine):
3199         (WebInspector.TextEditor.prototype.updateStyles):
3200         (WebInspector.TextEditor.prototype._removeBreakpointFromLineAndColumn):
3201         (WebInspector.TextEditor.prototype._documentMouseUp):
3202
3203 2014-01-10  Timothy Hatcher  <timothy@apple.com>
3204
3205         Clean up some areas of TreeOutline.
3206
3207         https://bugs.webkit.org/show_bug.cgi?id=123924
3208
3209         Reviewed by Joseph Pecoraro.
3210
3211         * UserInterface/TreeOutline.js:
3212         (TreeOutline.prototype.appendChild): Don't force create _childrenListNode, it will be created
3213         when the tree element is expanded. Only attach if _childrenListNode already exists.
3214         (TreeOutline.prototype.insertChild): Ditto.
3215         (TreeOutline.prototype.getCachedTreeElement): Check the value of __treeElementIdentifier
3216         not just the existence of the property. It should never be null/undefined/0, but be safe.
3217         (TreeOutline.prototype.findTreeElement): Null check isAncestor, it isn't required.
3218
3219 2014-01-10  Timothy Hatcher  <timothy@apple.com>
3220
3221         Fix an exception in WebInspector.Color.
3222
3223         https://bugs.webkit.org/show_bug.cgi?id=126765
3224
3225         Reviewed by Joseph Pecoraro.
3226
3227         * UserInterface/Color.js:
3228         (WebInspector.Color.fromString): Check hasOwnPrperty before using the nickname color array.
3229         (WebInspector.Color.prototype._toNicknameString): Ditto.
3230
3231 2014-01-10  Joseph Pecoraro  <pecoraro@apple.com>
3232
3233         [CSS Blending] Log blending as a layer creation reason in the WI
3234         https://bugs.webkit.org/show_bug.cgi?id=126159
3235
3236         Reviewed by Timothy Hatcher.
3237
3238         * Localizations/en.lproj/localizedStrings.js:
3239         * UserInterface/LayerTreeSidebarPanel.js:
3240         (WebInspector.LayerTreeSidebarPanel.prototype._populateListOfCompositingReasons):
3241
3242 2014-01-10  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>
3243
3244         Add missing function stub in InspectorFrontendHostStub.js
3245         https://bugs.webkit.org/show_bug.cgi?id=126745
3246
3247         Reviewed by Timothy Hatcher.
3248
3249         * UserInterface/InspectorFrontendHostStub.js:
3250         (.WebInspector.InspectorFrontendHostStub.prototype.debuggableType):
3251         The function debuggableType() was added to InspectorFrontendHost.idl and InspectorFrontendHost.cpp
3252         in r160887, but not to InspectorFrontendHostStub.js.
3253
3254 2014-01-09  Seokju Kwon  <seokju@webkit.org>
3255
3256         Web Inspector: Remove unused overriding protocols.
3257         https://bugs.webkit.org/show_bug.cgi?id=126630
3258
3259         Reviewed by Timothy Hatcher.
3260
3261         Update InspectorWebBackendCommands.js after removing unused overriding protocols.
3262
3263         * UserInterface/InspectorWebBackendCommands.js:
3264         * UserInterface/Legacy/6.0/InspectorWebBackendCommands.js:
3265         * UserInterface/Legacy/7.0/InspectorWebBackendCommands.js:
3266         * Versions/Inspector-iOS-6.0.json:
3267         * Versions/Inspector-iOS-7.0.json:
3268
3269 2014-01-07  Joseph Pecoraro  <pecoraro@apple.com>
3270
3271         Web Inspector: Typo "clipboarPrefixString"
3272         https://bugs.webkit.org/show_bug.cgi?id=126595
3273
3274         Reviewed by Sam Weinig.
3275
3276         * UserInterface/ConsoleCommandResult.js:
3277         (WebInspector.ConsoleCommandResult.prototype.toMessageElement):
3278         (WebInspector.ConsoleCommandResult.prototype.get clipboardPrefixString):
3279         * UserInterface/ConsoleMessageImpl.js:
3280         (WebInspector.ConsoleMessageImpl.prototype.get clipboardPrefixString):
3281         (WebInspector.ConsoleMessageImpl.prototype.toClipboardString):
3282
3283 2014-01-06  Seokju Kwon  <seokju@webkit.org>