79a7822f9b595893bb05d4d2791aa9a18b272f82
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2016-06-03  Brian Burg  <bburg@apple.com>
2
3         Web Inspector: add a keyboard shortcut to close the current tab bar item
4         https://bugs.webkit.org/show_bug.cgi?id=158363
5         <rdar://problem/22677254>
6
7         Reviewed by Timothy Hatcher.
8
9         Make Cmd-w close the current tab. This matches Safari's keyboard shortcut.
10
11         * UserInterface/Views/TabBrowser.js:
12         (WebInspector.TabBrowser):
13         Don't do anything if the New Tab tab is the only tab bar item besides the
14         pinned "new tab" button.
15
16 2016-06-03  Brian Burg  <bburg@apple.com>
17
18         Web Inspector: setter for debugging flag InspectorBackend.dumpInspectorTimeStats does not work
19         https://bugs.webkit.org/show_bug.cgi?id=158366
20
21         Reviewed by Timothy Hatcher.
22
23         * UserInterface/Protocol/InspectorBackend.js:
24         (InspectorBackendClass.prototype.set dumpInspectorTimeStats):
25         Actually update the backing member when the setter is called.
26
27 2016-06-03  Nikita Vasilyev  <nvasilyev@apple.com>
28
29         Web Inspector: Remove unused WebInspector.CSSCompletions methods
30         https://bugs.webkit.org/show_bug.cgi?id=158352
31
32         Reviewed by Joseph Pecoraro.
33
34         * UserInterface/Models/CSSCompletions.js:
35         (WebInspector.CSSCompletions.prototype.firstStartsWith): Deleted.
36         (WebInspector.CSSCompletions.prototype.isLonghandPropertyName): Deleted.
37         (WebInspector.CSSCompletions.prototype.longhandsForShorthand): Deleted.
38
39 2016-06-03  Joseph Pecoraro  <pecoraro@apple.com>
40
41         Web Inspector: Update NativeFunctionParameters (FontFaceSet, HTMLSlotElement, EventTarget)
42         https://bugs.webkit.org/show_bug.cgi?id=158333
43
44         Reviewed by Brian Burg.
45
46         * UserInterface/Models/NativeFunctionParameters.js:
47         Replace FontLoader with FontFaceSet. Add HTMLSlotElement API.
48         EventTarget is now actually in the prototype chain, so add it as
49         a first class citizen and keep mixing it in for legacy backends.
50
51 2016-06-02  Joseph Pecoraro  <pecoraro@apple.com>
52
53         Web Inspector: Modernize Array.prototype.every/some callsites to arrow functions
54         https://bugs.webkit.org/show_bug.cgi?id=158330
55
56         Reviewed by Brian Burg.
57
58         * UserInterface/Controllers/DOMTreeManager.js:
59         (WebInspector.DOMTreeManager.prototype._updateContentFlowFromPayload):
60         * UserInterface/Models/ProfileNode.js:
61         (WebInspector.ProfileNode):
62         * UserInterface/Models/ScopeChainNode.js:
63         (WebInspector.ScopeChainNode):
64         * UserInterface/Models/StackTrace.js:
65         (WebInspector.StackTrace):
66         * UserInterface/Models/StructureDescription.js:
67         (WebInspector.StructureDescription):
68         * UserInterface/Models/TypeDescription.js:
69         (WebInspector.TypeDescription):
70         * UserInterface/Protocol/InspectorBackend.js:
71         (InspectorBackend.Command.prototype.supports):
72         * UserInterface/Views/ContentViewContainer.js:
73         (WebInspector.ContentViewContainer.prototype.showContentView):
74         * UserInterface/Views/NavigationSidebarPanel.js:
75         (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie.treeElementMatchesCookie):
76         (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):
77         * UserInterface/Views/ScopeBar.js:
78         (WebInspector.ScopeBar.prototype.get selectedItems):
79         (WebInspector.ScopeBar.prototype.hasNonDefaultItemSelected):
80         * UserInterface/Views/TabContentView.js:
81         (WebInspector.TabContentView):
82         (WebInspector.TabContentView.console.assert): Deleted.
83
84 2016-06-02  Joseph Pecoraro  <pecoraro@apple.com>
85
86         Web Inspector: Modernize some function expressions that bind(this) to arrow functions
87         https://bugs.webkit.org/show_bug.cgi?id=158315
88
89         Reviewed by Brian Burg.
90
91         Convert a common "function(x) { ... }.bind(this)" pattern to use arrow
92         functions "(x) => { ... }", which lexically binds `this`, slightly faster,
93         and uses less memory.
94
95         * UserInterface/Base/Main.js:
96         (WebInspector._updateNewTabButtonState):
97         * UserInterface/Controllers/BreakpointPopoverController.js:
98         (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
99         * UserInterface/Controllers/TypeTokenAnnotator.js:
100         (WebInspector.TypeTokenAnnotator.prototype.insertAnnotations):
101         (WebInspector.TypeTokenAnnotator.prototype.insertAnnotations.): Deleted.
102         * UserInterface/Models/RenderingFrameTimelineRecord.js:
103         (WebInspector.RenderingFrameTimelineRecord.prototype._calculateDurationRemainder):
104         (WebInspector.RenderingFrameTimelineRecord):
105         * UserInterface/Models/Resource.js:
106         (WebInspector.Resource.prototype.requestContent):
107         * UserInterface/Models/Script.js:
108         (WebInspector.Script.prototype.requestScriptSyntaxTree):
109         (WebInspector.Script.prototype.requestScriptSyntaxTree.makeSyntaxTreeAndCallCallback): Deleted.
110         * UserInterface/Models/SourceCodeLocation.js:
111         (WebInspector.SourceCodeLocation.prototype.populateLiveDisplayLocationString):
112         * UserInterface/Models/WrappedPromise.js:
113         (WebInspector.WrappedPromise):
114         * UserInterface/Views/BreakpointActionView.js:
115         (WebInspector.BreakpointActionView.prototype._updateBody):
116         * UserInterface/Views/BreakpointTreeElement.js:
117         (WebInspector.BreakpointTreeElement.prototype._dataUpdated):
118         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
119         (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers.update):
120         (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateTextMarkers):
121         * UserInterface/Views/DefaultDashboardView.js:
122         (WebInspector.DefaultDashboardView.prototype._appendElementForNamedItem.set item):
123         (WebInspector.DefaultDashboardView.prototype._appendElementForNamedItem):
124         * UserInterface/Views/ErrorObjectView.js:
125         (WebInspector.ErrorObjectView.prototype.update):
126         * UserInterface/Views/GeneralTreeElement.js:
127         (WebInspector.GeneralTreeElement.prototype.onattach):
128         (WebInspector.GeneralTreeElement.prototype.onattach.this._boundContextMenuEventHandler): Deleted.
129         * UserInterface/Views/InlineSwatch.js:
130         (WebInspector.InlineSwatch.prototype._getNextValidHEXFormat):
131         (WebInspector.InlineSwatch):
132         * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
133         (WebInspector.LayerTreeDetailsSidebarPanel.prototype.refresh):
134         (WebInspector.LayerTreeDetailsSidebarPanel.prototype._showPopoverForSelectedNode):
135         (WebInspector.LayerTreeDetailsSidebarPanel.prototype._contentForPopover):
136         * UserInterface/Views/LogContentView.js:
137         (WebInspector.LogContentView.prototype._mouseup):
138         * UserInterface/Views/NavigationSidebarPanel.js:
139         (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):
140         * UserInterface/Views/ObjectTreeBaseTreeElement.js:
141         (WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
142         (WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement.): Deleted.
143         * UserInterface/Views/ObjectTreePropertyTreeElement.js:
144         (WebInspector.ObjectTreePropertyTreeElement.prototype._updateEntries):
145         * UserInterface/Views/ObjectTreeView.js:
146         (WebInspector.ObjectTreeView.prototype._updateEntries):
147         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
148         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection):
149         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
150         (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked):
151         (WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeElementAddContextMenuItems):
152         (WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked.this._codeMirror.addKeyMap): Deleted.
153         * UserInterface/Views/TabBar.js:
154         * UserInterface/Views/VisualStylePropertyEditor.js:
155         (WebInspector.VisualStylePropertyEditor.prototype._checkDependencies):
156
157 2016-05-31  Nikita Vasilyev  <nvasilyev@apple.com>
158
159         Web Inspector: Storage DataGrids have a half-pixel transparent/white border below the header
160         https://bugs.webkit.org/show_bug.cgi?id=156699
161         <rdar://problem/25778260>
162
163         Reviewed by Timothy Hatcher.
164
165         Increase the width of the border below the DataGrid's header to match the border in the left sidebar.
166
167         * UserInterface/Views/DataGrid.css:
168         (.data-grid > .header-wrapper):
169
170 2016-05-31  Nikita Vasilyev  <nvasilyev@apple.com>
171
172         Web Inspector: Snapshot List scroll bar occludes border of containing view in top-right
173         https://bugs.webkit.org/show_bug.cgi?id=158219
174         <rdar://problem/26545018>
175
176         Reviewed by Timothy Hatcher.
177
178         * UserInterface/Views/TimelineDataGrid.css:
179         (.data-grid.timeline th): Deleted.
180         * UserInterface/Views/TimelineRecordingContentView.css:
181         (.content-view.timeline-recording > .content-browser > .navigation-bar):
182         Make the border line span across the whole navigation bar, not just its table cells.
183
184 2016-05-30  Brian Burg  <bburg@apple.com>
185
186         Web Inspector: Timelines: "-0.000ms" in Self Time
187         https://bugs.webkit.org/show_bug.cgi?id=158162
188         <rdar://problem/26523350>
189
190         Reviewed by Darin Adler.
191
192         Values such as -0.0000 and +0.00001 seem to indicate there is
193         some floating point error accumulating in profile node data.
194         Since the sampling profiler isn't accurate to that precision,
195         let's clean up the data so near-zero numbers are simply zero.
196
197         * UserInterface/Models/ProfileNode.js:
198         Round selfTime down to zero if it's less than the
199         smallest value we would show in the user interface.
200
201 2016-05-30  Brian Burg  <bburg@apple.com>
202
203         Web Inspector: Uncaught exception page should pre-populate the bug's URL with the inspected page URL
204         https://bugs.webkit.org/show_bug.cgi?id=158055
205         <rdar://problem/26516693>
206
207         Reviewed by Saam Barati.
208
209         * UserInterface/Debug/UncaughtExceptionReporter.js:
210         Include the encoded URL in the query string if it is not empty.
211
212 2016-05-30  Matt Baker  <mattbaker@apple.com>
213
214         Web Inspector: Right-clicking in Snapshot's DataGrid throws an exception
215         https://bugs.webkit.org/show_bug.cgi?id=157934
216         <rdar://problem/26380910>
217
218         Reviewed by Brian Burg.
219
220         Check that click event target is actually a cell, as it can be a row
221         when focusing the table after dismissing a popup menu.
222
223         * UserInterface/Views/DataGrid.js:
224         (WebInspector.DataGridNode.prototype.isEventWithinDisclosureTriangle):
225
226 2016-05-27  Joseph Pecoraro  <pecoraro@apple.com>
227
228         Web Inspector: Not all transitively dominated nodes display their retained size
229         https://bugs.webkit.org/show_bug.cgi?id=158174
230
231         Reviewed by Timothy Hatcher.
232
233         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
234         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._isDominatedByNonBaseParent):
235         Use the parent reference changing in the loop instead of always using the same parent.
236
237 2016-05-27  Devin Rousso  <dcrousso+webkit@gmail.com>
238
239         Web Inspector: Add indicators to show nesting levels inside DOM Tree
240         https://bugs.webkit.org/show_bug.cgi?id=157468
241         <rdar://problem/26162640>
242
243         Reviewed by Timothy Hatcher.
244
245         Add CSS rules to give all expanded node children lists a small line on the
246         left border indicating that all items under the line are descendants.
247
248         * UserInterface/Views/DOMTreeOutline.css:
249         (.tree-outline.dom li .selection):
250         (.tree-outline.dom li > span):
251         (.tree-outline.dom ol):
252         (.tree-outline.dom .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
253         (.tree-outline.dom li.selected + ol.children.expanded):
254         (.tree-outline.dom li.parent::before):
255
256 2016-05-26  Matt Baker  <mattbaker@apple.com>
257
258         Uncaught Exception: TypeError: undefined is not an object (evaluating 'records[endIndex].endTime')
259         https://bugs.webkit.org/show_bug.cgi?id=158057
260
261         Reviewed by Timothy Hatcher.
262
263         * UserInterface/Views/TimelineRecordingContentView.js:
264         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineViewTimes):
265         When the entire recording is selected, rendering frames should use the
266         record count as its end time instead of the recording's end time.
267
268 2016-05-25  Joseph Pecoraro  <pecoraro@apple.com>
269
270         Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'collectionData.affectedSnapshots')
271         https://bugs.webkit.org/show_bug.cgi?id=158051
272
273         Reviewed by Brian Burg.
274
275         * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
276         (HeapSnapshot.prototype.updateDeadNodesAndGatherCollectionData):
277         * UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:
278         (HeapSnapshotWorker.prototype.createSnapshot):
279         If by the time the timeout fires we had cleared our snapshot list, then
280         updateDeadNodesAndGatherCollectionData could bail. Handle gracefully.
281
282 2016-05-23  Nikita Vasilyev  <nvasilyev@apple.com>
283
284         Web Inspector: Split console navigation bar doesn't wrap as expected
285         https://bugs.webkit.org/show_bug.cgi?id=157950
286         <rdar://problem/26395573>
287
288         Reviewed by Timothy Hatcher.
289
290         * UserInterface/Views/Main.css:
291         (#split-content-browser > .navigation-bar .item):
292         Fix the split console and don't touch any other navigation bars.
293
294 2016-05-22  Brady Eidson  <beidson@apple.com>
295
296         Move to C++14.
297         https://bugs.webkit.org/show_bug.cgi?id=157948
298
299         Reviewed by Michael Catanzaro.
300
301         * Configurations/Base.xcconfig:
302
303 2016-05-21  Matt Baker  <mattbaker@apple.com>
304
305         Web Inspector: Creating the CSSStyleDetailsSidebarPanel takes about 50ms (20%) of main load
306         https://bugs.webkit.org/show_bug.cgi?id=156707
307         <rdar://problem/25780404>
308
309         Reviewed by Timothy Hatcher.
310
311         This patch adds new View concepts, `initialLayout` and `widthDidChange`,
312         making it possible for hidden views to postpone the creation of their
313         UI subtree until they are shown for the first time.
314
315         Sidebar panels get this performance improvement by virtue of SidebarPanel
316         and StyleDetailsPanel, which trigger a layout when shown. This can be
317         removed once <https://webkit.org/b/150741> is fixed, and this is done
318         automatically by View.
319
320         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
321         (WebInspector.CSSStyleDeclarationTextEditor):
322         Should subclass View.
323         (WebInspector.CSSStyleDeclarationTextEditor.prototype.layout):
324         (WebInspector.CSSStyleDeclarationTextEditor.prototype.get element): Deleted.
325         Handled in View base class.
326         (WebInspector.CSSStyleDeclarationTextEditor.prototype.updateLayout): Deleted.
327         Relocate to `layout` override, ignore unused parameter `force`.
328
329         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
330         (WebInspector.CSSStyleDetailsSidebarPanel):
331         Create the minimum required initial state and UI elements. Relocate
332         anything that can be lazy loaded to `initialLayout`.
333
334         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
335         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.sizeDidChange):
336         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.widthDidChange): Deleted.
337
338         * UserInterface/Views/ComputedStyleDetailsPanel.js:
339         (WebInspector.ComputedStyleDetailsPanel):
340         Relocate anything that can be lazy loaded to `initialLayout`.
341         (WebInspector.ComputedStyleDetailsPanel.prototype.initialLayout):
342         (WebInspector.ComputedStyleDetailsPanel.prototype.shown): Deleted.
343         (WebInspector.ComputedStyleDetailsPanel.prototype.widthDidChange): Deleted.
344         Handled in View base class.
345
346         * UserInterface/Views/DataGrid.js:
347         (WebInspector.DataGrid.prototype.layout):
348         Resize logic can be safely moved to `sizeDidChange`, since columns are
349         always initialized when the width changes.
350         (WebInspector.DataGrid.prototype.sizeDidChange):
351         Reposition headers, scrollbars.
352         (WebInspector.DataGrid.prototype._updateHeaderAndScrollbar):
353         Broke out header repositioning, which needs to be called whenever
354         column widths are initialized or the view size changes.
355
356         * UserInterface/Views/NavigationBar.js:
357         (WebInspector.NavigationBar.prototype.layout):
358
359         * UserInterface/Views/RulesStyleDetailsPanel.js:
360         (WebInspector.RulesStyleDetailsPanel.prototype.sizeDidChange):
361         (WebInspector.RulesStyleDetailsPanel.prototype.widthDidChange): Deleted.
362
363         * UserInterface/Views/Sidebar.js:
364         (WebInspector.Sidebar.prototype._recalculateWidth):
365         Width changes need to be coordinated by the View base class, since the
366         initial layout must have occurred before handling a width change.
367         Force a layout with a resize layout reason.
368
369         * UserInterface/Views/SidebarPanel.js:
370         (WebInspector.SidebarPanel.prototype.get displayName):
371         Drive-by style fix: add getter so that CSSStyleDetailsSidebarPanel
372         doesn't have to read the private property directly.
373
374         (WebInspector.SidebarPanel.prototype.shown):
375         Force a layout whenever the panel is shown.
376         (WebInspector.SidebarPanel.prototype.sizeDidChange):
377         (WebInspector.SidebarPanel):
378         (WebInspector.SidebarPanel.prototype.widthDidChange): Deleted.
379
380         * UserInterface/Views/StyleDetailsPanel.js:
381         (WebInspector.StyleDetailsPanel.prototype.shown):
382         Schedule a layout when shown. A forced layout isn't necessary.
383         Unlike SidebarPanels, the initial state of style panels doesn't depend
384         on its layout, and can be safely initialized by the next rAF.
385
386         (WebInspector.StyleDetailsPanel.prototype.hidden):
387         Cancel a pending layout if the panel is hidden before the next AF.
388         (WebInspector.StyleDetailsPanel.prototype.widthDidChange): Deleted.
389         Not needed, defined in View base class.
390
391         * UserInterface/Views/TimelineOverview.js:
392         (WebInspector.TimelineOverview.prototype.sizeDidChange):
393         (WebInspector.TimelineOverview.prototype.layout):
394         Moved resize logic to `sizeDidChange`.
395
396         * UserInterface/Views/TimelineRuler.js:
397         (WebInspector.TimelineRuler.prototype.sizeDidChange):
398         (WebInspector.TimelineRuler.prototype.layout):
399         Moved resize logic to `sizeDidChange`.
400
401         * UserInterface/Views/View.js:
402         (WebInspector.View):
403         (WebInspector.View.prototype.updateLayout):
404         (WebInspector.View.prototype.cancelLayout):
405         Allow a pending layout to be canceled. Useful when a view with a
406         pending layout is hidden before the layout occurs.
407
408         (WebInspector.View.prototype.get layoutReason):
409         Protected getter for subclasses that need to check the layout reason
410         outside `sizeDidChange`.
411
412         (WebInspector.View.prototype.initialLayout):
413         Subclass hook to create UI subtree the first time a layout occurs.
414         Called only once during the lifetime of the View.
415
416         (WebInspector.View.prototype.layout):
417         Drive-by comment fix.
418         (WebInspector.View.prototype.sizeDidChange):
419         New layout cycle hook for subclasses.
420         (WebInspector.View.prototype._layoutSubtree):
421         Do an initial layout the first time layout is called.
422         Call the `sizeDidChange` hook so that subclasses can update state
423         which depends on size/position before doing layout.
424
425         * UserInterface/Views/VisualStyleDetailsPanel.js:
426         (WebInspector.VisualStyleDetailsPanel):
427         Create the minimum required initial state and UI elements. Relocate
428         anything that can be lazy loaded to `initialLayout`.
429
430         (WebInspector.VisualStyleDetailsPanel.prototype.refresh):
431         No changes, shifting line numbers confused the diff.
432         (WebInspector.VisualStyleDetailsPanel.prototype.initialLayout):
433         (WebInspector.VisualStyleDetailsPanel.prototype.sizeDidChange):
434         (WebInspector.VisualStyleDetailsPanel.prototype.widthDidChange): Deleted.
435
436 2016-05-21  Matt Baker  <mattbaker@apple.com>
437
438         Assertion Failed: StyleDetailsPanel.markAsNeedsRefresh() called with null domNode
439         https://bugs.webkit.org/show_bug.cgi?id=157955
440         <rdar://problem/26398943>
441
442         Reviewed by Timothy Hatcher.
443
444         CSSStyleDetailsSidebarPanel `visible` is true while the panel is being
445         removed from the details sidebar, even after calling `hidden()`. This
446         causes it to refresh its current StyleDetailsPanel with a null DOM node.
447
448         Unfortunately, SidebarPanel.visible isn't toggled by calling shown/hidden.
449         Since SidebarPanel.visible is only true if the panel is selected, we should
450         deselect panels before removing them.
451
452         * UserInterface/Views/Sidebar.js:
453         (WebInspector.Sidebar.prototype.removeSidebarPanel):
454         Deselect the panel being removed before calling visibiltyDidChange.
455
456         * UserInterface/Views/SidebarPanel.js:
457         (WebInspector.SidebarPanel.prototype.toggle): Deleted.
458         (WebInspector.SidebarPanel.prototype.willRemove): Deleted.
459         Drive-by update to remove some unused methods.
460
461 2016-05-20  Joseph Pecoraro  <pecoraro@apple.com>
462
463         REGRESSION(r200740): Web Inspector: TimelineRecordBar class lists not properly cleared, bleeding colors when zooming in and out
464         https://bugs.webkit.org/show_bug.cgi?id=157959
465         <rdar://problem/26393067>
466
467         Reviewed by Brian Burg.
468
469         * UserInterface/Views/TimelineRecordBar.js:
470         (WebInspector.TimelineRecordBar.prototype.set records):
471         When records are cleared, clear all classes.
472
473 2016-05-20  Nikita Vasilyev  <nvasilyev@apple.com>
474
475         Web Inspector: Split Console is auto opening all the time when using Inspect Element context menu
476         https://bugs.webkit.org/show_bug.cgi?id=157910
477         <rdar://problem/26374066>
478
479         Reviewed by Timothy Hatcher.
480
481         Currently, "synthetic" property is only used to decide whether adding a console message should
482         open the console or not. Replace it with "shouldRevealConsole".
483
484         * UserInterface/Controllers/DOMTreeManager.js:
485         (WebInspector.DOMTreeManager.prototype.inspectNodeObject.nodeAvailable):
486         (WebInspector.DOMTreeManager.prototype.inspectNodeObject):
487         * UserInterface/Controllers/JavaScriptLogViewController.js:
488         (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult.saveResultCallback):
489         (WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult):
490         (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted.printResult):
491         (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
492         (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
493         * UserInterface/Models/ConsoleCommandResultMessage.js:
494         (WebInspector.ConsoleCommandResultMessage):
495         (WebInspector.ConsoleCommandResultMessage.prototype.get shouldRevealConsole):
496         (WebInspector.ConsoleCommandResultMessage.prototype.get synthetic): Deleted.
497         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
498         (WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.node.shortestGCRootPath.):
499         (WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
500
501 2016-05-19  Joseph Pecoraro  <pecoraro@apple.com>
502
503         Web Inspector: Can't resume Debugger after breaking on exception in Promise
504         https://bugs.webkit.org/show_bug.cgi?id=157240
505         <rdar://problem/26030890>
506
507         Reviewed by Timothy Hatcher.
508
509         If we pause but have no source code to show we paused in purely internal
510         code. In such cases we were attempting to resume without actually
511         telling the backend to resume, so the backend and frontend were out of
512         sync. The frontend thinking it is "paused" without an activeCallFrame
513         and the backend actually being paused.
514
515         This change more gracefully handles this situation. It actually resumes
516         both the frontend and the backend.
517
518         * UserInterface/Controllers/DebuggerManager.js:
519         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
520         Resume the backend and the frontend.
521
522         (WebInspector.DebuggerManager.prototype._didResumeInternal):
523         Don't look at the active call frame, look at the paused state.
524         This may issue a Resumed event without actually triggering a
525         Paused event if this was the only pause, but that is harmless.
526
527 2016-05-19  Joseph Pecoraro  <pecoraro@apple.com>
528
529         Web Inspector: Main Resource with <scripts> not showing up in debugger sidebar after reload
530         https://bugs.webkit.org/show_bug.cgi?id=157939
531         <rdar://problem/26385691>
532
533         Reviewed by Timothy Hatcher.
534
535         The order of events on a reload are:
536
537             - MainResourceChanged, add main resource
538             - ScriptsCleared, remove all elements
539
540         This change makes it so ScriptsCleared add the main resource (and
541         potentially other resources). This also avoids the work in
542         MainResourceChanged on reloads / navigations that would be wasted if
543         ScriptsCleared were to just remove it. However, this is still needed
544         for initial load where ScriptsCleared does not happen.
545
546         * UserInterface/Views/DebuggerSidebarPanel.js:
547         (WebInspector.DebuggerSidebarPanel.prototype._mainResourceDidChange):
548         Only add the main resource tree here when we are first loading.
549
550         (WebInspector.DebuggerSidebarPanel.prototype._scriptsCleared):
551         Add the main resource tree after we remove all children in navigations.
552
553         * UserInterface/Views/NavigationSidebarPanel.js:
554         (WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
555         This was not gracefully handling if there was no selected tree element.
556
557 2016-05-19  Joseph Pecoraro  <pecoraro@apple.com>
558
559         Web Inspector: Visual Style connectors are not always centered properly
560         https://bugs.webkit.org/show_bug.cgi?id=157932
561
562         Reviewed by Timothy Hatcher.
563
564         * UserInterface/Views/VisualStylePropertyEditorLink.css:
565         (.visual-style-property-editor-link):
566         Remove the 1px margin on @2x that would cause jitter at different
567         sidebar widths. It is however needed on @1x.
568
569         (.visual-style-property-editor-link:not(.link-all)):
570         Make the height 20 so these both move closer to the center of the
571         <select> elements they are next to. They are not perfectly centered
572         as that would require a half pixel.
573
574         (.visual-style-property-editor-link.link-vertical):
575         Move the top line up a pixel so it is "up 0.5" from center and
576         the bottom one is already "down 0.5" from the center.
577
578 2016-05-19  Nikita Vasilyev  <nvasilyev@apple.com>
579
580         REGRESSION (r189385): Web Inspector: CSS properties modified via JS don't update in the Styles sidebar
581         https://bugs.webkit.org/show_bug.cgi?id=157918
582
583         Reviewed by Timothy Hatcher.
584
585         * UserInterface/Controllers/DOMTreeManager.js:
586         (WebInspector.DOMTreeManager):
587         (WebInspector.DOMTreeManager.prototype._inlineStyleInvalidated):
588         (WebInspector.DOMTreeManager.prototype._loadNodeAttributes):
589         Set the initial value of _loadNodeAttributesTimeout to be 0,
590         as setTimeout always returns a positive integer.
591
592 2016-05-19  Joseph Pecoraro  <pecoraro@apple.com>
593
594         Web Inspector: Heap Snapshots taken before timeline view has a zero time do not get shown
595         https://bugs.webkit.org/show_bug.cgi?id=157923
596         <rdar://problem/26377366>
597
598         Reviewed by Timothy Hatcher.
599
600         * UserInterface/Views/HeapAllocationsTimelineDataGridNode.js:
601         (WebInspector.HeapAllocationsTimelineDataGridNode):
602         (WebInspector.HeapAllocationsTimelineDataGridNode.prototype.createCellContent):
603         (WebInspector.HeapAllocationsTimelineDataGridNode.prototype.updateTimestamp):
604         Show emDash for the timestamp if we don't yet have a zero time.
605         Update when we get a zero time.
606
607         * UserInterface/Views/HeapAllocationsTimelineView.js:
608         (WebInspector.HeapAllocationsTimelineView):
609         (WebInspector.HeapAllocationsTimelineView.prototype.layout):
610         (WebInspector.HeapAllocationsTimelineView.prototype.reset):
611         Save a list of nodes pre-zero time and update them when we get a zero time.
612
613 2016-05-19  Joseph Pecoraro  <pecoraro@apple.com>
614
615         Web Inspector: HeapSnapshot Instances view should remove dead objects
616         https://bugs.webkit.org/show_bug.cgi?id=157920
617         <rdar://problem/26375866>
618
619         Reviewed by Timothy Hatcher.
620
621         * UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:
622         (HeapSnapshotWorker):
623         (HeapSnapshotWorker.prototype.clearSnapshots):
624         (HeapSnapshotWorker.prototype.createSnapshot):
625         Preserve a list of snapshots for this page's session. When
626         new snapshots come in we can determine which nodes have died
627         and update previous snapshots. Emit a CollectionEvent
628         containing the nodes that were deleted and affected snapshots.
629
630         * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
631         (HeapSnapshot):
632         Stash the largest node identifier.
633         Create a byte-per-node list to mark it as dead or alive.
634         All snapshots start with all live nodes.
635
636         (HeapSnapshot.prototype.updateDeadNodesAndGatherCollectionData):
637         (HeapSnapshot.prototype._markDeadNodes):
638         When we get a new snapshot we can mark dead nodes in previous
639         snapshots. Determine the nodeIdentifiers of dead nodes, and
640         mark them as dead if they existed in previous snapshots.
641
642         (HeapSnapshot.buildCategories):
643         (HeapSnapshot.prototype.updateCategories):
644         (HeapSnapshotDiff.prototype.updateCategories):
645         Include a "deadCount" in category data. And provide a method
646         to return an updated category list.
647
648         (HeapSnapshot.prototype.serializeNode):
649         Include a "dead" property on nodes when they are first fetched.
650
651         * UserInterface/Proxies/HeapSnapshotDiffProxy.js:
652         (WebInspector.HeapSnapshotDiffProxy.prototype.updateForCollectionEvent):
653         (WebInspector.HeapSnapshotDiffProxy.prototype.updateCategories):
654         * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
655         (WebInspector.HeapSnapshotNodeProxy):
656         (WebInspector.HeapSnapshotNodeProxy.deserialize):
657         * UserInterface/Proxies/HeapSnapshotProxy.js:
658         (WebInspector.HeapSnapshotProxy.prototype.updateForCollectionEvent):
659         (WebInspector.HeapSnapshotProxy.prototype.updateCategories):
660         Update snapshot proxies from a collection event by updating properties
661         and dispatching an event from the model object.
662
663         * UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
664         (WebInspector.HeapSnapshotWorkerProxy):
665         (WebInspector.HeapSnapshotWorkerProxy.prototype.clearSnapshots):
666         (WebInspector.HeapSnapshotWorkerProxy.prototype._mainResourceDidChange):
667         Clear the session snapshot list when the main resource changes.
668         However we can't yet clear the HeapSnapshot objects on the worker
669         because we may still have UI that interact with them.
670
671         * UserInterface/Views/HeapAllocationsTimelineView.js:
672         (WebInspector.HeapAllocationsTimelineView):
673         (WebInspector.HeapAllocationsTimelineView.prototype.closed):
674         Register and unregister for HeapSnapshot collection events.
675
676         (WebInspector.HeapAllocationsTimelineView.prototype._heapSnapshotCollectionEvent.updateHeapSnapshotForEvent):
677         (WebInspector.HeapAllocationsTimelineView.prototype._heapSnapshotCollectionEvent):
678         Update all the snapshots we know about when a collection event happens.
679
680         * UserInterface/Views/HeapSnapshotClassDataGridNode.js:
681         (WebInspector.HeapSnapshotClassDataGridNode.prototype.removeCollectedNodes):
682         (WebInspector.HeapSnapshotClassDataGridNode.prototype.updateCount):
683         (WebInspector.HeapSnapshotClassDataGridNode.prototype._populate):
684         (WebInspector.HeapSnapshotClassDataGridNode.prototype._fetchBatch):
685         * UserInterface/Views/HeapSnapshotContentView.js:
686         (WebInspector.HeapSnapshotContentView.prototype._heapSnapshotDataGridTreeDidPopulate):
687         (WebInspector.HeapSnapshotContentView):
688         * UserInterface/Views/HeapSnapshotDataGridTree.js:
689         (WebInspector.HeapSnapshotDataGridTree):
690         (WebInspector.HeapSnapshotDataGridTree.prototype.removeChild):
691         (WebInspector.HeapSnapshotDataGridTree.prototype.removeCollectedNodes):
692         (WebInspector.HeapSnapshotDataGridTree.prototype._heapSnapshotCollectedNodes):
693         (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
694         (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.removeCollectedNodes):
695         (WebInspector.HeapSnapshotInstancesDataGridTree):
696         Update the Instances DataGridTree UI when a collection event happens.
697         Remove any top level InstanceDataGridNodes that may be showing for collected nodes.
698         Update the category counts on the ClassDataGridNodes.
699         Update FetchMoreDataGridNodes to have updated counts (and replace removed nodes).
700
701 2016-05-19  Timothy Hatcher  <timothy@apple.com>
702
703         Web Inspector: REGRESSION: Search magnifying glass shifted in Search tab input field
704         https://bugs.webkit.org/show_bug.cgi?id=157913
705         rdar://problem/26374424
706
707         Reviewed by Joseph Pecoraro.
708
709         * UserInterface/Views/SearchSidebarPanel.css:
710         (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]): Removed padding-left.
711         (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]::-webkit-search-results-button):
712         Added. Add margin-right here instead.
713
714 2016-05-19  Timothy Hatcher  <timothy@apple.com>
715
716         Web Inspector: Timelines "Edit" button should be right-aligned
717         https://bugs.webkit.org/show_bug.cgi?id=157909
718         rdar://problem/26373969
719
720         Reviewed by Joseph Pecoraro.
721
722         * UserInterface/Views/ButtonNavigationItem.css:
723         (.navigation-bar .item.button.text-only): Deleted height: auto. Now inherited.
724         * UserInterface/Views/NavigationBar.css:
725         (.navigation-bar .item): Change height to auto to support any NavigationBar height.
726         This is needed since the Timelines tab has a shorter NavigationBar height, and
727         flexible items were overflowing.
728         * UserInterface/Views/TextNavigationItem.css:
729         (.navigation-bar .item.text): Deleted height: auto. Now inherited.
730         * UserInterface/Views/TimelineOverview.js:
731         (WebInspector.TimelineOverview): Add a FlexibleSpaceNavigationItem before the Edit button.
732
733 2016-05-19  Brian Burg  <bburg@apple.com>
734
735         Web Inspector: timelines should not update via requestAnimationFrame unless Web Inspector is visible
736         https://bugs.webkit.org/show_bug.cgi?id=157897
737         <rdar://problem/26330802>
738
739         Reviewed by Timothy Hatcher.
740
741         The timelines overview tries to animate using requestAnimationFrame, even if the
742         inspector frontend is not really visible. When it does this, requestAnimationFrame
743         simply stalls out until the inspector becomes visible. If a recording is started
744         while the inspector is not visible, then when it is shown again, the timeline will
745         start to animate from 0s instead of the current time. This happens because the
746         requestAnimationFrame was requested when the current time actually was 0, and it
747         finally executes some time later, when the current time is no longer accurate.
748         Since the timelines animate by calculating time elapsed since the previous frame
749         rather than using event timestamps, there is no way for the timelines to skip forward
750         in their animations in scenarios where the current time becomes arbitrarily skewed.
751
752         To fix this, consider the visibility state of the frontend as reported by the UIProcess.
753         Fire a global notification when visibility state changes, and start or stop updating
754         the current time as the frontend becomes visible or not shown.
755
756         This does not affect most other uses of requestAnimationFrame, which are used as
757         timers to call updateLayout at an appropriate time. The timelines case is different
758         because the current time is fixed prior to requesting an animation frame, and
759         later animation frames are only triggered by earlier requests, so there's nothing to
760         coalesce.
761
762         * UserInterface/Base/Main.js:
763         (WebInspector.loaded): Initialize WebInspector.visible.
764
765         * UserInterface/Base/Object.js: Add new event.
766
767         * UserInterface/Protocol/InspectorFrontendAPI.js:
768         (InspectorFrontendAPI.setIsVisible): Added.
769
770         * UserInterface/Test/Test.js:
771         (WebInspector.updateVisibilityState): Add a stub.
772
773         * UserInterface/Views/TimelineRecordingContentView.js:
774         (WebInspector.TimelineRecordingContentView):
775         (WebInspector.TimelineRecordingContentView.prototype._inspectorVisibilityStateChanged):
776         If visibility state changes while capturing, then start or stop updating the
777         current time as appropriate. Otherwise, refresh the timelines with updated
778         times so that they know about the recording's updated start/current/end time.
779
780         (WebInspector.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
781         Bail out if the Web Inspector frontend is not visible to the user and won't be
782         able to service requestAnimationFrames immediately.
783
784 2016-05-18  Timothy Hatcher  <timothy@apple.com>
785
786         Web Inspector: Classes toggle wraps in some localizations
787         https://bugs.webkit.org/show_bug.cgi?id=157878
788         rdar://problem/26108859
789
790         Reviewed by Brian Burg.
791
792         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
793         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
794         Add white-space: nowrap.
795
796 2016-05-18  Matt Baker  <mattbaker@apple.com>
797
798         Web Inspector: unable to switch between navigation tree outlines using up/down arrow keys
799         https://bugs.webkit.org/show_bug.cgi?id=157713
800         <rdar://problem/26287086>
801
802         Reviewed by Timothy Hatcher.
803
804         * UserInterface/Views/NavigationSidebarPanel.js:
805         (WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
806         Listen for TreeOutline focus changes, and associate trees and their DOM
807         elements for quick lookup when handling focus events.
808
809         (WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus):
810         (WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
811         When selecting a tree element causes an element in a different tree outline
812         to be deselected, remember the old selection so that it can be restored
813         the next time the tree outline get the focus.
814
815 2016-05-18  Matt Baker  <mattbaker@apple.com>
816
817         Web Inspector: Checkbox disappears when unchecking CSS property with value containing a semicolon
818         https://bugs.webkit.org/show_bug.cgi?id=157862
819         <rdar://problem/16214480>
820
821         Reviewed by Timothy Hatcher.
822
823         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
824         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createCommentedCheckboxMarker):
825         Modify regex to match CSS properties with url() and quoted values,
826         which can contain semicolons.
827
828 2016-05-18  Nikita Vasilyev  <nvasilyev@apple.com>
829
830         Web Inspector: ugly gaps in Call Trees data grid when expanding more than one level
831         https://bugs.webkit.org/show_bug.cgi?id=157829
832         <rdar://problem/26339922>
833
834         Reviewed by Timothy Hatcher.
835
836         Make a more specific CSS selector to avoid style conflicts.
837
838         * UserInterface/Views/DataGrid.css:
839         (.data-grid:not(.variable-height-rows) > .data-container > table.data > tbody > tr > td > div): Deleted.
840         (.data-grid:not(.variable-height-rows) > .data-container > table.data > tbody > tr > td > .cell-content):
841         * UserInterface/Views/DataGrid.js:
842         (WebInspector.DataGridNode.prototype.createCell):
843
844 2016-05-18  Brian Burg  <bburg@apple.com>
845
846         Web Inspector: InspectorFrontendAPI.setTimelineProfilingEnabled should not implicitly show Timelines tab
847         https://bugs.webkit.org/show_bug.cgi?id=157846
848
849         Reviewed by Timothy Hatcher.
850
851         Currently, if the Web Inspector opens for an in-progress or finished automation session,
852         it will always show the Timelines tab, disregarding any previous user view state. This
853         is annoying and is a bad user experience when trying to debug the same test repeatedly.
854
855         * UserInterface/Protocol/InspectorFrontendAPI.js:
856         (InspectorFrontendAPI.setTimelineProfilingEnabled): Don't implicitly show Timelines tab.
857         (InspectorFrontendAPI.showTimelines): Added. This is called explicitly when desired.
858
859 2016-05-18  Brian Burg  <bburg@apple.com>
860
861         Web Inspector: DebuggerSidebarPanel doesn't need to help manage temporarily disabling breakpoints while capturing
862         https://bugs.webkit.org/show_bug.cgi?id=157854
863
864         Reviewed by Timothy Hatcher.
865
866         Duplicate the event listeners in DebuggerManager and move non-view-related
867         state updates out of DebuggerSidebarPanel's listeners into DebuggerManager's listeners.
868         This allows a test to exercise the temporary-disablement code paths during capturing.
869
870         * UserInterface/Controllers/DebuggerManager.js:
871         (WebInspector.DebuggerManager.prototype.get breakpointsDisabledTemporarily):
872         Use this to make the code a bit more readable.
873
874         (WebInspector.DebuggerManager.prototype._startDisablingBreakpointsTemporarily):
875         (WebInspector.DebuggerManager.prototype._stopDisablingBreakpointsTemporarily):
876         (WebInspector.DebuggerManager.prototype.startDisablingBreakpointsTemporarily): Deleted.
877         (WebInspector.DebuggerManager.prototype.stopDisablingBreakpointsTemporarily): Deleted.
878         Make this private since it's not used by other classes anymore.
879
880         (WebInspector.DebuggerManager.prototype._timelineCapturingWillStart): Added.
881         (WebInspector.DebuggerManager.prototype._timelineCapturingStopped): Added.
882
883         * UserInterface/Views/DebuggerSidebarPanel.js:
884         (WebInspector.DebuggerSidebarPanel.prototype._timelineRecordingWillStart): Deleted.
885         (WebInspector.DebuggerSidebarPanel.prototype._timelineRecordingStopped): Deleted.
886         (WebInspector.DebuggerSidebarPanel.prototype._timelineCapturingWillStart): Added.
887         (WebInspector.DebuggerSidebarPanel.prototype._timelineCapturingStopped): Added.
888         Make the listener names consistent with TimelineManager: timelineCapturing{WillStart,Stopped}.
889
890 2016-05-18  Joseph Pecoraro  <pecoraro@apple.com>
891
892         Web Inspector: Improve console.takeHeapSnapshot documentation in console
893         https://bugs.webkit.org/show_bug.cgi?id=157853
894
895         Reviewed by Timothy Hatcher.
896
897         * UserInterface/Models/NativeFunctionParameters.js:
898         Mention optional label argument.
899
900 2016-05-18  Brian Burg  <bburg@apple.com>
901
902         Web Inspector: race between frontend and backend both starting timeline recordings causes console assert
903         https://bugs.webkit.org/show_bug.cgi?id=157850
904         <rdar://problem/26349229>
905
906         Reviewed by Joseph Pecoraro.
907
908         If TimelineManager has created a fresh recording and the Timeline.autoCaptureStarted
909         event comes before Timeline.recordingStarted, then the manager will try to start the
910         same recording twice. In this scenario, the manager should just wait until the
911         Timeline.recordingStarted event comes, since it causes TimelineMangare to set up
912         the isCapturing flag and other state.
913
914         * UserInterface/Controllers/TimelineManager.js:
915         (WebInspector.TimelineManager):
916         (WebInspector.TimelineManager.prototype.startCapturing):
917         (WebInspector.TimelineManager.prototype.capturingStarted):
918         (WebInspector.TimelineManager.prototype.autoCaptureStarted):
919         Add a new flag, this._waitingForCapturingStartedEvent. If true, don't start the
920         recording in response to this event.
921
922 2016-05-18  Matt Baker  <mattbaker@apple.com>
923
924         Web Inspector: REGRESSION(r197488): Incorrect start time in Rendering Frames timeline grid
925         https://bugs.webkit.org/show_bug.cgi?id=157840
926         <rdar://problem/26344937>
927
928         Reviewed by Brian Burg.
929
930         * UserInterface/Views/TimelineRecordingContentView.js:
931         (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
932         The Rendering Frames timeline view needs a valid zero time.
933         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
934         Adjust ruler selection path component values by the zero time unless
935         the current view is the Rendering Frames timeline view.
936
937 2016-05-17  Matt Baker  <mattbaker@apple.com>
938
939         Web Inspector: NavigationSidebarPanel should coordinate item selection between its tree outlines
940         https://bugs.webkit.org/show_bug.cgi?id=157813
941         <rdar://problem/26331779>
942
943         Reviewed by Timothy Hatcher.
944
945         * UserInterface/Views/DebuggerSidebarPanel.js:
946         (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
947         Deselecting elements in other tree outlines is now done in the base class.
948
949         * UserInterface/Views/NavigationSidebarPanel.js:
950         (WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
951         Listen for selection changed events on all content tree outlines.
952         (WebInspector.NavigationSidebarPanel.prototype.treeElementAddedOrChanged):
953         Moved stub from the public section to the protected section.
954         (WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
955         Deselect tree elements in any content tree outline that is not the
956         parent of the selected element.
957
958         (WebInspector.NavigationSidebarPanel.prototype._treeSelectionDidChange): Deleted.
959         Rename _contentTreeOutlineTreeSelectionDidChange, to prevent being
960         shadowed by subclasses with _treeSelectionDidChange event handlers.
961
962 2016-05-17  Matt Baker  <mattbaker@apple.com>
963
964         Web Inspector: Remove TimelineSidebarPanel.js as it's no longer referenced anywhere
965         https://bugs.webkit.org/show_bug.cgi?id=157819
966
967         Reviewed by Timothy Hatcher.
968
969         * UserInterface/Views/TimelineSidebarPanel.js: Removed.
970         Removed unused file.
971
972 2016-05-17  Brian Burg  <bburg@apple.com>
973
974         Web Inspector: inspector tests should redirect and log console.trace() calls in test output
975         https://bugs.webkit.org/show_bug.cgi?id=157802
976         <rdar://problem/26325671>
977
978         Reviewed by Timothy Hatcher.
979
980         * UserInterface/Test/FrontendTestHarness.js:
981         (FrontendTestHarness.prototype.redirectConsoleToTestOutput.createProxyConsoleHandler):
982         Remove bind() that is now unnecessary. Also redirect console.warn.
983
984         (FrontendTestHarness.prototype.redirectConsoleToTestOutput):
985         For console.trace(), throw and catch a dummy Error to get a stack trace.
986         Do some post processing on it to remove useless frames and sanitize file paths.
987
988 2016-05-17  Brian Burg  <bburg@apple.com>
989
990         Web Inspector: Filtering huge data grids should yield occasionally so the UI remains responsive
991         https://bugs.webkit.org/show_bug.cgi?id=157702
992         <rdar://problem/26282898>
993
994         Based on a patch by Matt Baker <mattbaker@apple.com> on 2016-05-16
995         Reviewed by Timothy Hatcher.
996
997         This patch adds a new class, YieldableTask, for processing large
998         data sets without starving the runloop. A yieldable task takes a delegate,
999         an iterator that produces the items to be processed by the delegate, and
1000         the "work interval" time slice and "idle interval" to wait between time slices.
1001         It works by using `yield` to suspend processing when the current time
1002         slice is exceeded, and setting a timeout to wait out the idle interval.
1003
1004         The iterator is responsible for deciding a good traversal order for items,
1005         and the delegate is responsible for processing each item in turn. Tasks
1006         cannot be reused once cancelled or processing completes.
1007
1008         Change DataGrid to use a yieldable task for filtering data grid nodes.
1009         When the filtering criteria changes, cancel the task and run a new task.
1010
1011         * UserInterface/Base/YieldableTask.js: Added.
1012         (WebInspector.YieldableTask.prototype.get processing):
1013         (WebInspector.YieldableTask.prototype.get cancelled):
1014         (WebInspector.YieldableTask.prototype.get idleInterval):
1015         (WebInspector.YieldableTask.prototype.get workInterval):
1016         Add getters.
1017
1018         (WebInspector.YieldableTask.prototype.start.createIteratorForProcessingItems):
1019         (WebInspector.YieldableTask.prototype.start):
1020         Set up an iterator that cranks through items to be processed until the
1021         time slice is exceeded. Check to see if the task is cancelled before and
1022         after calling out to the delegate to perform processing on the item.
1023
1024         (WebInspector.YieldableTask.prototype.cancel):
1025         Set the cancel flag. Tell the delegate the task is finished soon.
1026
1027         (WebInspector.YieldableTask.prototype._processPendingItems):
1028         Request the next item from the cranking iterator so it tries to process
1029         more items. If it yields but still has more items to process, set a timeout
1030         and continue processing more items after the idle interval.
1031
1032         (WebInspector.YieldableTask.prototype._willYield): Notify the delegate.
1033         (WebInspector.YieldableTask.prototype._didFinish): Clear state and notify.
1034         (WebInspector.YieldableTask):
1035
1036         * UserInterface/Main.html:
1037         * UserInterface/Test.html: Add new file.
1038
1039         * UserInterface/Views/DataGrid.js:
1040         (WebInspector.DataGrid):
1041         (WebInspector.DataGrid.prototype.filterDidChange):
1042         Cancel the currently running filter task, if any exists.
1043
1044         (WebInspector.DataGrid.prototype._updateFilter.createIteratorForNodesToBeFiltered):
1045         (WebInspector.DataGrid.prototype._updateFilter):
1046         Set up and start a new filtering task when the filter updates.
1047
1048         (WebInspector.DataGrid.prototype.yieldableTaskWillProcessItem):
1049         (WebInspector.DataGrid.prototype.yieldableTaskDidYield):
1050         (WebInspector.DataGrid.prototype.yieldableTaskDidFinish):
1051         Batch up notifications about filtered nodes changing since this can
1052         cause a lot of unnecessary work by event listeners.
1053
1054 2016-05-17  Brian Burg  <bburg@apple.com>
1055
1056         Web Inspector: breakpoints in sourceURL named scripts are not persisted
1057         https://bugs.webkit.org/show_bug.cgi?id=157714
1058         <rdar://problem/26287099>
1059
1060         Reviewed by Joseph Pecoraro.
1061
1062         The Inspector frontend doesn't try to persist a breakpoint that
1063         lacks a URL, even if the breakpoint has a sourceURL. Similarly, for
1064         breakpoints without a URL, the frontend asks the backend to create
1065         the breakpoint for a specific script identifier rather than a
1066         URL-based breakpoint. This prevents breakpoints in injected scripts
1067         from being resolved if the page is reloaded.
1068
1069         The Inspector backend knows how to resolve URL-based breakpoints
1070         by matching against the script's URL or sourceURL, so we just need
1071         to teach the frontend when either is appropriate to use.
1072
1073         This patch adds SourceCode.contentIdentifier, which is roughly
1074         `url || sourceURL` for content that is not emphemeral, such as
1075         console evaluations. Change breakpoint and debugger code to use
1076         `contentIdentifier` rather than `url`, and pass contentIdentifier
1077         to the backend when setting a breakpoint by URL.
1078
1079         * UserInterface/Controllers/DebuggerManager.js:
1080         (WebInspector.DebuggerManager.prototype.breakpointsForSourceCode):
1081         (WebInspector.DebuggerManager.prototype.scriptsForURL):
1082         (WebInspector.DebuggerManager.prototype.get searchableScripts):
1083         (WebInspector.DebuggerManager.prototype.removeBreakpoint):
1084         (WebInspector.DebuggerManager.prototype.reset):
1085         (WebInspector.DebuggerManager.prototype.scriptDidParse):
1086         (WebInspector.DebuggerManager.prototype._setBreakpoint):
1087         (WebInspector.DebuggerManager.prototype._saveBreakpoints):
1088         (WebInspector.DebuggerManager.prototype._associateBreakpointsWithSourceCode):
1089
1090         * UserInterface/Models/Breakpoint.js:
1091         (WebInspector.Breakpoint):
1092         (WebInspector.Breakpoint.prototype.get contentIdentifier):
1093         (WebInspector.Breakpoint.prototype.get info):
1094         (WebInspector.Breakpoint.prototype.saveIdentityToCookie):
1095         (WebInspector.Breakpoint.prototype.get url): Deleted.
1096         Replace uses of Breakpoint.prototype.get url with
1097         contentIdentifier inside the class and at all callsites.
1098
1099         * UserInterface/Models/Script.js:
1100         (WebInspector.Script.prototype.get contentIdentifier):
1101         Added. Use the URL, or the sourceURL unless the script is
1102         ephemeral and only run once, like as a console evaluation.
1103
1104         * UserInterface/Models/SourceCode.js:
1105         (WebInspector.SourceCode.prototype.get url): Added.
1106         All subclasses already override this getter. Add it here so that
1107         the default implementation of contentIdentifier can use it.
1108
1109         (WebInspector.SourceCode.prototype.get contentIdentifier): Added.
1110
1111         * UserInterface/Views/BreakpointTreeElement.js:
1112         (WebInspector.BreakpointTreeElement.prototype.get filterableData):
1113         * UserInterface/Views/ProbeSetDetailsSection.js:
1114         (WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):
1115         * UserInterface/Views/SourceCodeTextEditor.js:
1116         (WebInspector.SourceCodeTextEditor.prototype._matchesBreakpoint):
1117         * UserInterface/Views/TextResourceContentView.js:
1118         (WebInspector.TextResourceContentView.prototype.get supplementalRepresentedObjects):
1119
1120 2016-05-16  Joseph Pecoraro  <pecoraro@apple.com>
1121
1122         Uncaught Exception: TypeError: null is not an object (evaluating 'event.data.pathComponent.domTreeElement')
1123         https://bugs.webkit.org/show_bug.cgi?id=157759
1124         <rdar://problem/26309427>
1125
1126         Reviewed by Timothy Hatcher.
1127
1128         * UserInterface/Views/DOMTreeContentView.js:
1129         (WebInspector.DOMTreeContentView.prototype._pathComponentSelected):
1130         Handle possible null path components.
1131
1132         * UserInterface/Views/HierarchicalPathComponent.js:
1133         (WebInspector.HierarchicalPathComponent.prototype.get selectedPathComponent):
1134         When there is a list of just one that is triggered, the Clicked
1135         event should produce that one, to be consistent with clicking
1136         on a list of multiple elements and selecting the same value.
1137
1138 2016-05-16  Saam barati  <sbarati@apple.com>
1139
1140         Hook up ShadowChicken to the debugger to show tail deleted frames
1141         https://bugs.webkit.org/show_bug.cgi?id=156685
1142         <rdar://problem/25770521>
1143
1144         Reviewed by Filip Pizlo and Mark Lam and Joseph Pecoraro.
1145
1146         This patch makes the WebInspector display tail deleted frames.
1147         We show tail deleted frames with a gray [f] instead of a green
1148         [f]. We also put text in the tooltip to indicate that the frame
1149         is tail deleted. Other than that, tail deleted frames behave like
1150         normal frames. You can evaluate in them, inspect their scope, etc.
1151
1152         * Localizations/en.lproj/localizedStrings.js:
1153         * UserInterface/Images/TailDeletedFunction.svg: Added.
1154         * UserInterface/Images/gtk/TailDeletedFunction.svg: Added.
1155         * UserInterface/Models/CallFrame.js:
1156         * UserInterface/Views/CallFrameIcons.css:
1157         * UserInterface/Views/CallFrameTreeElement.js:
1158         * UserInterface/Views/CallFrameView.js:
1159
1160 2016-05-16  Nikita Vasilyev  <nvasilyev@apple.com>
1161
1162         Web Inspector: Contents of Duration column are covered by always on (legacy) scroll bars
1163         https://bugs.webkit.org/show_bug.cgi?id=157590
1164
1165         Reviewed by Timothy Hatcher.
1166
1167         Set the right padding of the DataGrid header to match the scrollbar width.
1168
1169         * UserInterface/Views/DataGrid.css:
1170         (.data-grid .data-container):
1171         (.data-grid.inline .data-container):
1172         Don't show scrollbars for inline data grids.
1173
1174         (.data-grid > .header-wrapper):
1175         (.data-grid.no-header > .header-wrapper > table.header):
1176         (.data-grid.no-header > table.header): Deleted.
1177         (.data-grid th): Deleted.
1178         * UserInterface/Views/DataGrid.js:
1179         (WebInspector.DataGrid):
1180         We can't add padding-rigth to a table. Wrap the table in div.header-wrapper.
1181
1182         (WebInspector.DataGrid.prototype._updateScrollbarPadding):
1183         (WebInspector.DataGrid.prototype.layout):
1184
1185 2016-05-16  Nikita Vasilyev  <nvasilyev@apple.com>
1186
1187         Web Inspector: Background stripes don't span the width of Network sidebar
1188         https://bugs.webkit.org/show_bug.cgi?id=157744
1189
1190         Reviewed by Timothy Hatcher.
1191
1192         * UserInterface/Views/NetworkSidebarPanel.css:
1193         (.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content):
1194
1195 2016-05-16  Antoine Quint  <graouts@apple.com>
1196
1197         Web Inspector: Computed style shows both prefixed and unprefixed variants of properties
1198         https://bugs.webkit.org/show_bug.cgi?id=157674
1199         <rdar://problem/24339756>
1200
1201         Reviewed by Timothy Hatcher.
1202
1203         We make the CSSProperty `implicit` property read-write, and in the case where a computed style
1204         has a property marked as explicit, we also check that it's found in matching rules to consider
1205         it non-implicit. This correctly filters out variants of properties set explicitly.
1206
1207         * UserInterface/Models/CSSProperty.js:
1208         (WebInspector.CSSProperty.prototype.set implicit):
1209         * UserInterface/Models/DOMNodeStyles.js:
1210         (WebInspector.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
1211         (WebInspector.DOMNodeStyles.prototype.refresh):
1212         (WebInspector.DOMNodeStyles.prototype._isPropertyFoundInMatchingRules):
1213         (WebInspector.DOMNodeStyles):
1214
1215 2016-05-14  Timothy Hatcher  <timothy@apple.com>
1216
1217         Web Inspector: DataGrid _updateVisibleRows dominates profiles of timeline recordings when data grid (Overview or TimelineDataGrids) is showing
1218         https://bugs.webkit.org/show_bug.cgi?id=157664
1219         rdar://problem/26262219
1220
1221         Reviewed by Joseph Pecoraro.
1222
1223         * UserInterface/Views/DataGrid.js:
1224         (WebInspector.DataGrid): Added new members.
1225         (WebInspector.DataGrid.prototype.layout): Reset _cachedScrollTop and _cachedScrollHeight on resize.
1226         (WebInspector.DataGrid.prototype._noteScrollPositionChanged): Added.
1227         (WebInspector.DataGrid.prototype._updateVisibleRows): Cache sizes and positions when possible.
1228         (WebInspector.DataGridNode.prototype.set hidden): Added call to _noteRowsChanged.
1229         (WebInspector.DataGridNode.prototype.collapse): Call _noteRowsChanged instead of needsLayout.
1230         (WebInspector.DataGridNode.prototype.expand): Call _noteRowsChanged instead of needsLayout.
1231         (WebInspector.DataGrid.prototype._updateFilter): Removed direct call to _updateVisibleRows, this is
1232         better handled by DataGridNode's hidden setter.
1233
1234 2016-05-14  Timothy Hatcher  <timothy@apple.com>
1235
1236         Web Inspector: Many DataGrid instances do not save/restore their scroll position
1237         https://bugs.webkit.org/show_bug.cgi?id=157709
1238         rdar://problem/26286090
1239
1240         Reviewed by Brian Burg.
1241
1242         * UserInterface/Models/BackForwardEntry.js:
1243         (WebInspector.BackForwardEntry.prototype.makeCopy): Added.
1244         * UserInterface/Views/ContentViewContainer.js:
1245         (WebInspector.ContentViewContainer.prototype.showContentView): Copy the last entry for the view.
1246         * UserInterface/Views/DOMStorageContentView.js:
1247         (WebInspector.DOMStorageContentView.prototype.get scrollableElements): Added.
1248         * UserInterface/Views/HeapSnapshotContentView.js:
1249         (WebInspector.HeapSnapshotContentView.prototype.get scrollableElements): Added.
1250         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
1251         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype.get scrollableElements): Added.
1252         * UserInterface/Views/MemoryTimelineView.js:
1253         (WebInspector.MemoryTimelineView.prototype.get scrollableElements): Added.
1254         * UserInterface/Views/ProfileView.js:
1255         (WebInspector.ProfileView.prototype.get scrollableElements): Added.
1256         (WebInspector.ProfileView.prototype._repopulateDataGridFromTree): Removed unused skipRefresh argument.
1257         * UserInterface/Views/ScriptClusterTimelineView.js:
1258         (WebInspector.ScriptClusterTimelineView.prototype.get scrollableElements): Added.
1259         * UserInterface/Views/ScriptProfileTimelineView.js:
1260         (WebInspector.ScriptProfileTimelineView.prototype.get scrollableElements): Added.
1261         * UserInterface/Views/TimelineView.js:
1262         (WebInspector.TimelineView.prototype.get scrollableElements): Added.
1263
1264 2016-05-14  Nikita Vasilyev  <nvasilyev@apple.com>
1265
1266         Web Inspector: Empty line shows arrow when hovering over Animation Frame Requested in timeline recording
1267         https://bugs.webkit.org/show_bug.cgi?id=157707
1268
1269         Reviewed by Timothy Hatcher.
1270
1271         * UserInterface/Views/DataGrid.css:
1272         (.data-grid:not(.variable-height-rows) > .data-container > table.data > tbody > tr > td > div):
1273
1274 2016-05-13  Simon Fraser  <simon.fraser@apple.com>
1275
1276         Unprefix -webkit-cross-fade()
1277         https://bugs.webkit.org/show_bug.cgi?id=157632
1278
1279         Reviewed by Darin Adler.
1280
1281         * UserInterface/Models/CSSKeywordCompletions.js:
1282
1283 2016-05-13  Matt Baker  <mattbaker@apple.com>
1284
1285         Web Inspector: Typing "layout" in filter for Layout and Rendering Timeline matches everything
1286         https://bugs.webkit.org/show_bug.cgi?id=157684
1287         <rdar://problem/26276588>
1288
1289         Reviewed by Joseph Pecoraro.
1290
1291         Hidden columns should not participate in built-in grid filtering
1292         using DataGrid.filterText. Hidden columns can still be custom filtered,
1293         which is how TimelineDataGrid filters scopebar columns.
1294
1295         * UserInterface/Views/DataGrid.js:
1296         (WebInspector.DataGridNode.prototype.get filterableData):
1297         Skip hidden columns.
1298
1299 2016-05-13  Matt Baker  <mattbaker@apple.com>
1300
1301         Web Inspector: Script ProfileViews should be searchable
1302         https://bugs.webkit.org/show_bug.cgi?id=157581
1303         <rdar://problem/26228530>
1304
1305         Reviewed by Joseph Pecoraro.
1306
1307         * UserInterface/Views/DataGrid.js:
1308         (WebInspector.DataGrid.prototype.get filterText):
1309         Make filterText readable.
1310
1311         * UserInterface/Views/ProfileDataGridNode.js:
1312         (WebInspector.ProfileDataGridNode.prototype.get callingContextTreeNode):
1313         (WebInspector.ProfileDataGridNode.prototype.filterableDataForColumn):
1314         Add filterable data for the "function" column.
1315         (WebInspector.ProfileDataGridNode.prototype._updateChildrenForModifiers):
1316         (WebInspector.ProfileDataGridNode.prototype.get node): Deleted.
1317         Renamed callingContextTreeNode to be less ambiguous.
1318
1319         * UserInterface/Views/ProfileDataGridTree.js:
1320         (WebInspector.ProfileDataGridTree.prototype._updateCurrentFocusDetails):
1321
1322         * UserInterface/Views/ProfileView.js:
1323         (WebInspector.ProfileView.prototype.get dataGrid):
1324         Expose data grid for use in parent view.
1325
1326         * UserInterface/Views/ScriptClusterTimelineView.js:
1327         (WebInspector.ScriptClusterTimelineView.prototype.selectRecord):
1328         Drive-by fix: forward property to current child TimelineView.
1329
1330         * UserInterface/Views/ScriptProfileTimelineView.js:
1331         (WebInspector.ScriptProfileTimelineView):
1332         (WebInspector.ScriptProfileTimelineView.prototype._scopeBarSelectionDidChange):
1333         (WebInspector.ScriptProfileTimelineView.prototype._showProfileViewForOrientation):
1334         Helper function to switch profile views. Persist filter text when
1335         switching to the new profile view.
1336
1337         (WebInspector.ScriptProfileTimelineView.prototype.get showsFilterBar): Deleted.
1338         Remove FIXME and show filter bar.
1339
1340         * UserInterface/Views/TimelineView.js:
1341         (WebInspector.TimelineView.prototype.setupDataGrid):
1342         Support switching to a new data grid.
1343         (WebInspector.TimelineView.prototype.dataGridMatchNodeAgainstCustomFilters):
1344         Hooking up filtering causes data grid nodes to be filtered based on the
1345         ruler selection. Although ScriptProfileTimelineView performs its own
1346         time-based filtering, this is necessary to prevent an assert.
1347
1348         (WebInspector.TimelineView.prototype._timelineDataGridSelectedNodeChanged):
1349         (WebInspector.TimelineView.prototype._timelineDataGridNodeWasFiltered):
1350         Converted arrow functions to member functions to allow unregistering
1351         event listeners on outgoing data grid when swapping grids.
1352
1353 2016-05-12  Matt Baker  <mattbaker@apple.com>
1354
1355         Web Inspector: Remove "Extra Scripts" folder from Resources sidebar if all children removed
1356         https://bugs.webkit.org/show_bug.cgi?id=157656
1357
1358         Reviewed by Timothy Hatcher.
1359
1360         * UserInterface/Views/ResourceSidebarPanel.js:
1361         (WebInspector.ResourceSidebarPanel.prototype._scriptWasRemoved):
1362         Remove parent folder after last script tree element removed.
1363
1364 2016-05-12  Matt Baker  <mattbaker@apple.com>
1365
1366         Web Inspector: Can't filter Rendering Frames by duration
1367         https://bugs.webkit.org/show_bug.cgi?id=157654
1368
1369         Reviewed by Timothy Hatcher.
1370
1371         * UserInterface/Views/RenderingFrameTimelineView.js:
1372         (WebInspector.RenderingFrameTimelineView.prototype._scopeBarSelectionDidChange):
1373         Call filterDidChange on the grid, not the base class.
1374         TimelineView.filterDidChange exists to let TimelineViews perform
1375         additional work when the grid filter changes (see LayoutTimelineView).
1376         (WebInspector.RenderingFrameTimelineView):
1377
1378 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1379
1380         Web Inspector: Deleting nodes in DOM Tree sometimes changes selection to parent instead of sibling
1381         https://bugs.webkit.org/show_bug.cgi?id=157649
1382
1383         Reviewed by Timothy Hatcher.
1384
1385         * UserInterface/Views/DOMTreeElement.js:
1386         (WebInspector.DOMTreeElement.prototype._updateChildren): Deleted.
1387         When pressing delete, we remove the node via DOM.removeNode()
1388         and remove the DOMTreeElement when we receive a successful response.
1389         However, the backend could send a DOM.childNodeRemoved event before
1390         the response from DOM.removeNode, and the frontend would have a race
1391         between DOMTreeUpdater's timeout and the removeNode callback.
1392
1393         In DOMTreeUpdater's path, DOMTreeElement updateChildren would notice
1394         a removed node and set the selection to the parent node.
1395
1396         In the DOM.removeNode path, TreeOutline would update the selection
1397         based on availability of a previousSibling/nextSibling/parent.
1398
1399         Remove the custom code in DOMTreeElement updateChildren, so that it
1400         can just do the normal TreeOutline behavior via removeChildAtIndex.
1401
1402 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1403
1404         REGRESSION: Web Inspector: Fails to load sourceMappingURL with relative URL
1405         https://bugs.webkit.org/show_bug.cgi?id=157650
1406         <rdar://problem/26133763>
1407
1408         Reviewed by Timothy Hatcher.
1409
1410         * UserInterface/Controllers/SourceMapManager.js:
1411         Wrong order of arguments. The intent was to pass the incoming
1412         baseURL as the partialURL, because if it was not absolute by
1413         that point we could make it relative to the main resource.
1414         However we accidentally put the main resource as the partial
1415         portion, which would just always return the main resource url.
1416         Swap the order, so that if the incoming base is absolute
1417         (such as a resource.url) that will be used, but if the
1418         incoming base is relative (e.g. an incomplete sourceURL) we
1419         can make it absolute with the main resource.
1420
1421 2016-05-12  Matt Baker  <mattbaker@apple.com>
1422
1423         Web Inspector: Uncaught exception when removing selected Timeline instrument
1424         https://bugs.webkit.org/show_bug.cgi?id=157639
1425         <rdar://problem/26252938>
1426
1427         Reviewed by Timothy Hatcher.
1428
1429         * UserInterface/Views/TimelineOverview.js:
1430         (WebInspector.TimelineOverview.prototype._instrumentRemoved):
1431         Remove timeline tree element before modifying state. Removing the tree
1432         element triggers a SelectionDidChange event, which can have side effects.
1433
1434 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1435
1436         Web Inspector: Timeline Reset button only resets the one active Script TimelineView
1437         https://bugs.webkit.org/show_bug.cgi?id=157638
1438
1439         Reviewed by Timothy Hatcher.
1440
1441         * UserInterface/Views/ScriptClusterTimelineView.js:
1442         (WebInspector.ScriptClusterTimelineView.prototype.reset):
1443         Reset should reset all the views.
1444
1445         (WebInspector.ScriptClusterTimelineView.prototype.get navigationSidebarTreeOutline): Deleted.
1446         * UserInterface/Views/NetworkGridContentView.js:
1447         (WebInspector.NetworkGridContentView.prototype.get navigationSidebarTreeOutline): Deleted.
1448         * UserInterface/Views/TimelineView.js:
1449         (WebInspector.TimelineView.prototype.get navigationSidebarTreeOutlineScopeBar): Deleted.
1450         Remove dead code. Nobody calls these getters.
1451
1452 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1453
1454         Web Inspector: Layout timeline popovers are inconsistently shown
1455         https://bugs.webkit.org/show_bug.cgi?id=157640
1456         <rdar://problem/26253394>
1457
1458         Reviewed by Timothy Hatcher.
1459
1460         * UserInterface/Views/TimelineDataGrid.js:
1461         (WebInspector.TimelineDataGrid.prototype._showPopoverForSelectedNodeSoon):
1462         Fix the bug by clearing _showPopoverTimeout when we show the popover.
1463
1464         (WebInspector.TimelineDataGrid.prototype._hidePopover):
1465         Modernize the code to use arrow functions and avoid binds.
1466
1467         (WebInspector.TimelineDataGrid.prototype._updatePopoverForSelectedNode):
1468         Updating with presentNewContentWithFrame animates the popover to the correct
1469         position instead of jumping and ending up at the wrong location.
1470
1471 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1472
1473         Web Inspector: Remove forced layouts caused by DOMTreeElement during Timeline recording
1474         https://bugs.webkit.org/show_bug.cgi?id=157641
1475
1476         Reviewed by Timothy Hatcher.
1477
1478         * UserInterface/Views/DOMTreeElement.js:
1479         (WebInspector.DOMTreeElement.prototype.updateSelection): Deleted.
1480         This triggers forced layout and I could never actually get it to trigger anyways.
1481         Its history is from the original import, so I don't know why it was added to begin with.
1482         Just remove it.
1483
1484 2016-05-12  Commit Queue  <commit-queue@webkit.org>
1485
1486         Unreviewed, rolling out r200718.
1487         https://bugs.webkit.org/show_bug.cgi?id=157637
1488
1489         Data grid column dividers are misaligned (Requested by NVI on
1490         #webkit).
1491
1492         Reverted changeset:
1493
1494         "Web Inspector: Contents of Duration column are covered by
1495         always on (legacy) scroll bars"
1496         https://bugs.webkit.org/show_bug.cgi?id=157590
1497         http://trac.webkit.org/changeset/200718
1498
1499 2016-05-12  Matt Baker  <mattbaker@apple.com>
1500
1501         Web Inspector: 11% of time in TimelineRecording spent updating DataGrid that is not visible
1502         https://bugs.webkit.org/show_bug.cgi?id=157612
1503         <rdar://problem/26239051>
1504
1505         Reviewed by Timothy Hatcher.
1506
1507         During recording, a timeline view is constantly having its cached time
1508         values updated. These updates should only trigger forced layouts if the
1509         view supports live data.
1510
1511         * UserInterface/Views/TimelineView.js:
1512         (WebInspector.TimelineView.prototype.set zeroTime):
1513         Drive-by fix, add call to _filterTimesDidChange.
1514         (WebInspector.TimelineView.prototype.set startTime):
1515         (WebInspector.TimelineView.prototype.set endTime):
1516         (WebInspector.TimelineView.prototype.set currentTime):
1517         Don't update layout directly.
1518         (WebInspector.TimelineView.prototype._timesDidChange):
1519         Force a layout if the view supports live data. When not recording,
1520         a layout is always performed.
1521         (WebInspector.TimelineView):
1522         (WebInspector.TimelineView.prototype._filterTimesDidChange.delayedWork): Deleted.
1523         Changed to an arrow function.
1524         (WebInspector.TimelineView.prototype._filterTimesDidChange): Deleted.
1525         Renamed _timesDidChange, since the method now does more than throttle
1526         a filterDidChange call.
1527
1528 2016-05-12  Fujii Hironori  <Hironori.Fujii@sony.com>
1529
1530         Web Inspector: Windows Perl fails to run copy-user-interface-resources.pl
1531         https://bugs.webkit.org/show_bug.cgi?id=157620
1532         <rdar://problem/26241548>
1533
1534         Reviewed by Timothy Hatcher.
1535
1536         There are two problems on Windows platform. 'cat' command is
1537         missing and can not execute shebang.
1538
1539         * Scripts/copy-user-interface-resources.pl: Invoke Perl scripts
1540         with explicitly specifying Perl command instead of relying on
1541         shebang.  Add a new subroutine 'appendFile' to concatenate files
1542         instread of 'cat' command.
1543
1544 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1545
1546         Web Inspector: 3.8% of timeline recording spent in NavigationSidebarPanel _updateContentOverflowShadowVisibility for background tab
1547         https://bugs.webkit.org/show_bug.cgi?id=157616
1548
1549         Reviewed by Timothy Hatcher.
1550
1551         * UserInterface/Views/NavigationSidebarPanel.js:
1552         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
1553         (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
1554         Don't update or schedule and update if we aren't visible.
1555         When we are shown we will force an update.
1556
1557 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1558
1559         Web Inspector: Reduce rAF churn in DefaultDashboardView on pages with lots of resources
1560         https://bugs.webkit.org/show_bug.cgi?id=157618
1561
1562         Reviewed by Timothy Hatcher.
1563
1564         * UserInterface/Views/DefaultDashboardView.js:
1565         (WebInspector.DefaultDashboardView):
1566         (WebInspector.DefaultDashboardView.prototype._updateDisplaySoon):
1567         (WebInspector.DefaultDashboardView.prototype._updateDisplay):
1568         Previously we were scheduling multiple rAFs that would all fire with
1569         the same data, each time a resource was added. Coalesce into one.
1570
1571 2016-05-12  Matt Baker  <mattbaker@apple.com>
1572
1573         Web Inspector: Improve snapshot selection in heap allocations overview graph
1574         https://bugs.webkit.org/show_bug.cgi?id=157588
1575         <rdar://problem/26231245>
1576
1577         Reviewed by Joseph Pecoraro.
1578
1579         Heap snapshot icon selection now uses the built-in record selection
1580         behavior provided by TimelineOverview/TimelineOverviewGraph. The marker
1581         representing the selected heap snapshot now has a "selected" style, and
1582         clicking an icon when the HeapAllocationsTimeline is not selected causes
1583         the timeline to become selected.
1584
1585         * UserInterface/Images/HeapSnapshotSelected.svg: Added.
1586         New art for selected snapshot icon.
1587
1588         * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.css:
1589         (.timeline-overview-graph.heap-allocations > img.snapshot.selected):
1590         (.timeline-overview-graph.heap-allocations:not(.selected) > img.snapshot.selected):
1591         Selected icon styles for selected/unselected overview graph.
1592
1593         * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
1594         (WebInspector.HeapAllocationsTimelineOverviewGraph):
1595         Track selected image element.
1596
1597         (WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.layout):
1598         Associate image elements with their snapshot record, and reuse image
1599         elements between layouts. Image element click handler can just set the
1600         selectedRecord in the TimelineOverviewGraph base class.
1601
1602         (WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.updateSelectedRecord):
1603         (WebInspector.HeapAllocationsTimelineOverviewGraph.prototype._updateSnapshotMarkers):
1604         Refresh snapshot icon styles when selected record changes.
1605
1606         * UserInterface/Views/HeapAllocationsTimelineView.js:
1607         (WebInspector.HeapAllocationsTimelineView.prototype.selectRecord):
1608         Show snapshot list if no record selected.
1609         (WebInspector.HeapAllocationsTimelineView.prototype.userSelectedRecordFromOverview): Deleted.
1610         No longer needed.
1611
1612         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
1613         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateFrameMarker):
1614         No need to call dispatchSelectedRecordChangedEvent manually anymore,
1615         method has been removed from base class.
1616
1617         * UserInterface/Views/TimelineOverviewGraph.js:
1618         (WebInspector.TimelineOverviewGraph.prototype._needsSelectedRecordLayout):
1619         (WebInspector.TimelineOverviewGraph):
1620         (WebInspector.TimelineOverviewGraph.prototype.dispatchSelectedRecordChangedEvent): Deleted.
1621         No longer needed. Event dispatched automatically by the rAF callback.
1622
1623         * UserInterface/Views/TimelineRecordingContentView.js:
1624         (WebInspector.TimelineRecordingContentView.prototype._recordSelected):
1625         Allow switching to another timeline, if the selected record does not
1626         belong to the current timeline.
1627
1628 2016-05-12  Joseph Pecoraro  <pecoraro@apple.com>
1629
1630         Web Inspector: 3.5% of time in toFixed in TimelineRecordBar updating element positions
1631         https://bugs.webkit.org/show_bug.cgi?id=157608
1632
1633         Reviewed by Timothy Hatcher.
1634
1635         Avoid using toFixed to do an approximation comparison of two floating point numbers.
1636         Instead keep in Numbers by just doing the approximation with Math.round(num * 100).
1637         Since toFixed was doing stringification it was very expensive.
1638
1639         * UserInterface/Views/TimelineRecordBar.js:
1640         (WebInspector.TimelineRecordBar.prototype._updateElementPosition):
1641         (WebInspector.TimelineRecordBar):
1642         * UserInterface/Views/TimelineRecordFrame.js:
1643         (WebInspector.TimelineRecordFrame.prototype._updateElementPosition):
1644         (WebInspector.TimelineRecordFrame):
1645         * UserInterface/Views/TimelineRuler.js:
1646         (WebInspector.TimelineRuler.prototype._updatePositionOfElement):
1647
1648 2016-05-11  Joseph Pecoraro  <pecoraro@apple.com>
1649
1650         Web Inspector: 4% of time in TimelineOverviewGraph adding/removing classList styles on TimelineRecordBar
1651         https://bugs.webkit.org/show_bug.cgi?id=157607
1652
1653         Reviewed by Brian Burg.
1654
1655         This gets us down to about 0.5% of time.
1656
1657         * UserInterface/Views/TimelineRecordBar.js:
1658         (WebInspector.TimelineRecordBar.prototype.set records):
1659         Only modify the classLists when the record changes.
1660
1661         (WebInspector.TimelineRecordBar.prototype.refresh):
1662         Set unfinished once for either the uses active or not uses active cases.
1663
1664 2016-05-11  Joseph Pecoraro  <pecoraro@apple.com>
1665
1666         Web Inspector: Unexpected unread notification icon next to Log after clearing via clear()
1667         https://bugs.webkit.org/show_bug.cgi?id=157598
1668
1669         Reviewed by Timothy Hatcher.
1670
1671         We always show ConsoleCommand and ConsoleCommandResult messages no matter
1672         what the filter is. So it doesn't make sense to mark the "log" filter
1673         as having an unread notification for a ConsoleCommandResult when we can
1674         see the result.
1675
1676         * UserInterface/Views/LogContentView.js:
1677         (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
1678         (WebInspector.LogContentView.prototype._markScopeBarItemUnread):
1679
1680 2016-05-11  Joseph Pecoraro  <pecoraro@apple.com>
1681
1682         Web Inspector: Console unread indicators should be cleared however the console clears
1683         https://bugs.webkit.org/show_bug.cgi?id=157594
1684
1685         Reviewed by Timothy Hatcher.
1686
1687         * UserInterface/Views/LogContentView.js:
1688         (WebInspector.LogContentView.prototype._logCleared):
1689         (WebInspector.LogContentView.prototype._clearLog):
1690         Move code that clears unread indicators from clearLog to logCleared
1691         to handle all possible clear cases.
1692
1693 2016-05-11  Nikita Vasilyev  <nvasilyev@apple.com>
1694
1695         Web Inspector: Contents of Duration column are covered by always on (legacy) scroll bars
1696         https://bugs.webkit.org/show_bug.cgi?id=157590
1697
1698         Reviewed by Timothy Hatcher.
1699
1700         * UserInterface/Views/DataGrid.css:
1701         (.data-grid .data-container):
1702         Always show vertical scrollbars.
1703
1704         (.data-grid > .header-wrapper):
1705         (.data-grid > .header-wrapper::-webkit-scrollbar):
1706         Show invisible scrollbar for DataGrid's header to align the header table with the content.
1707
1708         (.data-grid.no-header > .header-wrapper > table.header):
1709         (.data-grid.no-header > table.header): Deleted.
1710         (.data-grid th): Deleted.
1711         * UserInterface/Views/DataGrid.js:
1712         (WebInspector.DataGrid):
1713         `overflow-y: scroll` doesn't work on a table element. Wrap table in a div.
1714
1715 2016-05-11  Matt Baker  <mattbaker@apple.com>
1716
1717         Web Inspector: Make it possible to do special styling on selected TimelineOverviewGraphs
1718         https://bugs.webkit.org/show_bug.cgi?id=157593
1719         <rdar://problem/26232886>
1720
1721         Reviewed by Timothy Hatcher.
1722
1723         * UserInterface/Views/TimelineOverview.js:
1724         (WebInspector.TimelineOverview.prototype._timelinesTreeSelectionDidChange.updateGraphSelectedState):
1725         (WebInspector.TimelineOverview.prototype._timelinesTreeSelectionDidChange):
1726         Select the new overview graph and deselect the old one.
1727
1728         * UserInterface/Views/TimelineOverviewGraph.js:
1729         (WebInspector.TimelineOverviewGraph):
1730         (WebInspector.TimelineOverviewGraph.prototype.get selected):
1731         (WebInspector.TimelineOverviewGraph.prototype.set selected):
1732         New property, toggles "selected" class on the graph element.
1733
1734 2016-05-11  Nikita Vasilyev  <nvasilyev@apple.com>
1735
1736         Web Inspector: "Selected Element" is hard to read when searching for "Element"
1737         https://bugs.webkit.org/show_bug.cgi?id=157542
1738         <rdar://problem/26207464>
1739
1740         Reviewed by Timothy Hatcher.
1741
1742         Change the style of highlighted text to match Xcode.
1743
1744         * UserInterface/Views/LogContentView.css:
1745         (.search-in-progress .console-item:not(.filtered-out-by-search).special-user-log .console-message-text .highlighted):
1746         * UserInterface/Views/OpenResourceDialog.css:
1747         (.open-resource-dialog > .tree-outline .item.selected .highlighted):
1748         * UserInterface/Views/Variables.css:
1749         (:root):
1750
1751 2016-05-11  Joseph Pecoraro  <pecoraro@apple.com>
1752
1753         Web Inspector: Hide filter bar in TimelineViews where it is not needed or not yet working
1754         https://bugs.webkit.org/show_bug.cgi?id=157583
1755
1756         Reviewed by Timothy Hatcher.
1757
1758         * UserInterface/Views/HeapAllocationsTimelineView.js:
1759         (WebInspector.HeapAllocationsTimelineView.prototype.get showsFilterBar):
1760         (WebInspector.HeapAllocationsTimelineView.prototype.layout):
1761         (WebInspector.HeapAllocationsTimelineView.prototype.updateFilter):
1762         Filter bar not yet hooked up for HeapSnapshot views.
1763         Make filtering work for the main timeline grid.
1764         It doesn't use the normal TimelineView filter based on selected range.
1765         This is intentional because it may be the case that a snapshot happens
1766         outside the selected time range (via the navigation bar button) and
1767         we want to show it. Otherwise a user might be confused why it is not
1768         showing up in the list.
1769
1770         * UserInterface/Views/MemoryTimelineView.js:
1771         (WebInspector.MemoryTimelineView.prototype.get showsFilterBar):
1772         Filter bar not needed in the Memory timeline view.
1773
1774         * UserInterface/Views/ScriptClusterTimelineView.js:
1775         (WebInspector.ScriptClusterTimelineView.prototype.get showsFilterBar):
1776         Filter bar works for the Events timeline view.
1777
1778         * UserInterface/Views/ScriptProfileTimelineView.js:
1779         (WebInspector.ScriptProfileTimelineView.prototype.get showsFilterBar):
1780         Filter bar not yet hooked up for Profile views.
1781
1782         * UserInterface/Views/TimelineRecordingContentView.js:
1783         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
1784         (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
1785         (WebInspector.TimelineRecordingContentView.prototype._updateFilterBar):
1786         Update the filter bar when the selection path components change, since
1787         that triggers when arbitrarily deep sub-content-views change.
1788
1789         * UserInterface/Views/TimelineView.js:
1790         (WebInspector.TimelineView.prototype.get showsFilterBar):
1791         Default is yes.
1792
1793 2016-05-10  Joseph Pecoraro  <pecoraro@apple.com>
1794
1795         Web Inspector: Avoid unnecessary timeout identifier churn in TimelineManager
1796         https://bugs.webkit.org/show_bug.cgi?id=157535
1797
1798         Reviewed by Timothy Hatcher.
1799
1800         * UserInterface/Controllers/TimelineManager.js:
1801         (WebInspector.TimelineManager):
1802         (WebInspector.TimelineManager.prototype.capturingStarted):
1803         (WebInspector.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
1804         Don't re-tickle if we tickled in the last 10ms.
1805
1806 2016-05-10  Matt Baker  <mattbaker@apple.com>
1807
1808         Web Inspector: Can't select record bar in Frames timeline
1809         https://bugs.webkit.org/show_bug.cgi?id=156963
1810         <rdar://problem/25898256>
1811
1812         Reviewed by Timothy Hatcher.
1813
1814         Sync record selection between the Rendering Frames grid and overview graph.
1815
1816         * UserInterface/Views/DataGrid.js:
1817         (WebInspector.DataGridNode.prototype.hasAncestor):
1818         Add helper function needed by TimelineView.
1819
1820         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
1821         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._mouseClicked):
1822         Don't deselect the selected record when clicked. Initially this seemed
1823         like a good idea but it complicates the UI for no added value.
1824
1825         * UserInterface/Views/TimelineRecordingContentView.js:
1826         (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
1827         Get path components from the current TimelineView instead of the
1828         TimelineRecordingContentView, now that the selected record appears
1829         in the bottom ContentBrowser's navigation bar.
1830
1831 2016-05-10  Joseph Pecoraro  <pecoraro@apple.com>
1832
1833         Web Inspector: Backend should initiate timeline recordings on page navigations to ensure nothing is missed
1834         https://bugs.webkit.org/show_bug.cgi?id=157504
1835         <rdar://problem/26188642>
1836
1837         Reviewed by Brian Burg.
1838
1839         * UserInterface/Controllers/TimelineManager.js:
1840         (WebInspector.TimelineManager):
1841         (WebInspector.TimelineManager.prototype.set autoCaptureOnPageLoad):
1842         (WebInspector.TimelineManager.prototype.set enabledTimelineTypes):
1843         (WebInspector.TimelineManager.prototype._updateAutoCaptureInstruments):
1844         For backends that support it, enable/disable auto capture and the instruments to use.
1845
1846         (WebInspector.TimelineManager.prototype.autoCaptureStarted):
1847         New event, stop and start a new recording. Set a flag that we should
1848         detect the auto capturing resource so we know when the stop the
1849         auto capture.
1850
1851         (WebInspector.TimelineManager.prototype._loadNewRecording):
1852         (WebInspector.TimelineManager.prototype._addRecord):
1853         (WebInspector.TimelineManager.prototype._startAutoCapturing): Renamed.
1854         (WebInspector.TimelineManager.prototype._attemptAutoCapturingForFrame):
1855         (WebInspector.TimelineManager.prototype._legacyAttemptStartAutoCapturingForFrame):
1856         (WebInspector.TimelineManager.prototype._stopAutoRecordingSoon):
1857         (WebInspector.TimelineManager.prototype._resetAutoRecordingMaxTimeTimeout):
1858         (WebInspector.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
1859         (WebInspector.TimelineManager.prototype._mainResourceDidChange):
1860         (WebInspector.TimelineManager.prototype._mergeScriptProfileRecords):
1861         Factor out the new path, old path, and shared code for auto capturing.
1862         Renamed _startAutoCapturing to _attemptAutoCapturingForFrame which
1863         better matches what it tries to do.
1864
1865         * UserInterface/Protocol/TimelineObserver.js:
1866         (WebInspector.TimelineObserver.prototype.autoCaptureStarted):
1867         Inform TimelineManager.
1868
1869 2016-05-10  Matt Baker  <mattbaker@apple.com>
1870
1871         Web Inspector: Debugger sidebar should refresh when Debug UI enabled/disabled
1872         https://bugs.webkit.org/show_bug.cgi?id=157540
1873         <rdar://problem/26207064>
1874
1875         Reviewed by Timothy Hatcher.
1876
1877         * UserInterface/Views/DebuggerSidebarPanel.js:
1878         (WebInspector.DebuggerSidebarPanel.prototype._scriptRemoved.removeScript):
1879         (WebInspector.DebuggerSidebarPanel.prototype._scriptRemoved):
1880         Remove element from both tree outlines, if it exists.
1881
1882 2016-05-10  Matt Baker  <mattbaker@apple.com>
1883
1884         Web Inspector: TimelineOverview assertion failed: Missing overview graph for timeline type undefined
1885         https://bugs.webkit.org/show_bug.cgi?id=157533
1886         <rdar://problem/26204033>
1887
1888         Reviewed by Timothy Hatcher.
1889
1890         * UserInterface/Views/TimelineRecordingContentView.js:
1891         (WebInspector.TimelineRecordingContentView.prototype._recordWasFiltered):
1892         The OverviewTimelineView's represented object is the entire recording,
1893         and TimelineOverview.recordWasFiltered expects a timeline. Return early
1894         since no graph in the overview needs updating.
1895
1896 2016-05-10  Matt Baker  <mattbaker@apple.com>
1897
1898         Web Inspector: Call Trees and Memory view blank
1899         https://bugs.webkit.org/show_bug.cgi?id=157486
1900         <rdar://problem/26178404>
1901
1902         Reviewed by Timothy Hatcher.
1903
1904         * UserInterface/Views/TimelineRecordingContentView.js:
1905         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
1906         (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
1907         Setting current time now handled by _updateTimelineViewTimes.
1908         (WebInspector.TimelineRecordingContentView.prototype._capturingStopped):
1909         Update times for the current TimelineView when the recording ends.
1910         This ensures that views that don't call TimelineView.setupDataGrid are
1911         able to update state that depends on the ruler selection.
1912
1913         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
1914         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineViewTimes):
1915         Renamed from _updateTimelineViewSelection. Sets start, end, and current times.
1916
1917 2016-05-10  Devin Rousso  <dcrousso+webkit@gmail.com>
1918
1919         Web Inspector: Cleanup super getter/setter now that underlying issue is fixed
1920         https://bugs.webkit.org/show_bug.cgi?id=157488
1921         <rdar://problem/26179120>
1922
1923         Reviewed by Brian Burg.
1924
1925         Addressed FIXMEs for bug 147064:
1926         <https://webkit.org/b/147064> Getter and setter on super are called with wrong "this" object
1927
1928         * UserInterface/Views/VisualStyleKeywordPicker.js:
1929         (WebInspector.VisualStyleKeywordPicker.prototype.get value):
1930         (WebInspector.VisualStyleKeywordPicker.prototype.set value):
1931         (WebInspector.VisualStyleKeywordPicker.prototype.get synthesizedValue):
1932         (WebInspector.VisualStyleKeywordPicker.prototype._getValue): Deleted.
1933         (WebInspector.VisualStyleKeywordPicker.prototype._setValue): Deleted.
1934         (WebInspector.VisualStyleKeywordPicker.prototype._generateSynthesizedValue): Deleted.
1935
1936         * UserInterface/Views/VisualStyleNumberInputBox.js:
1937         (WebInspector.VisualStyleNumberInputBox.prototype.set specialPropertyPlaceholderElementText):
1938
1939         * UserInterface/Views/VisualStyleTimingEditor.js:
1940         (WebInspector.VisualStyleTimingEditor.prototype.get value):
1941         (WebInspector.VisualStyleTimingEditor.prototype.set value):
1942         (WebInspector.VisualStyleTimingEditor.prototype.get synthesizedValue):
1943         (WebInspector.VisualStyleTimingEditor.prototype._getValue): Deleted.
1944         (WebInspector.VisualStyleTimingEditor.prototype._setValue): Deleted.
1945         (WebInspector.VisualStyleTimingEditor.prototype._generateSynthesizedValue): Deleted.
1946
1947 2016-05-09  Matt Baker  <mattbaker@apple.com>
1948
1949         Web Inspector: Filtering by Errors/Warnings should not filter Breakpoints list
1950         https://bugs.webkit.org/show_bug.cgi?id=157481
1951         <rdar://problem/26177346>
1952
1953         Reviewed by Timothy Hatcher.
1954
1955         * Localizations/en.lproj/localizedStrings.js:
1956         New UI strings.
1957
1958         * UserInterface/Views/DebuggerSidebarPanel.js:
1959         (WebInspector.DebuggerSidebarPanel.showResourcesWithIssuesOnlyFilterFunction):
1960         Only filter tree elements belonging to the scripts tree outline.
1961         (WebInspector.DebuggerSidebarPanel):
1962         Drive-by cleanup of Issues filter button tooltips.
1963
1964 2016-05-09  Nikita Vasilyev  <nvasilyev@apple.com>
1965
1966         REGRESSION: Web Inspector: DOM path bar blinks when modifying inline styles
1967         https://bugs.webkit.org/show_bug.cgi?id=149258
1968         <rdar://problem/22737843>
1969
1970         Reviewed by Timothy Hatcher.
1971
1972         * UserInterface/Base/Utilities.js:
1973         (Array.shallowEqual):
1974         * UserInterface/Views/ContentBrowser.js:
1975         (WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
1976         (WebInspector.ContentBrowser.prototype._removeAllNavigationItems):
1977         Don't re-render the navigation bar when all new navigation items match the previous ones.
1978
1979         * UserInterface/Views/HierarchicalPathNavigationItem.js:
1980         (WebInspector.HierarchicalPathNavigationItem.set components.let.componentsEqual):
1981         (WebInspector.HierarchicalPathNavigationItem.prototype.set components):
1982         Don't re-render HierarchicalPathComponent when all new path components match the previous ones.
1983
1984 2016-05-09  Matt Baker  <mattbaker@apple.com>
1985
1986         Web Inspector: Remove Global Breakpoints folder
1987         https://bugs.webkit.org/show_bug.cgi?id=157478
1988         <rdar://problem/26176524>
1989
1990         Reviewed by Timothy Hatcher.
1991
1992         * Localizations/en.lproj/localizedStrings.js:
1993         Remove UI string.
1994
1995         * UserInterface/Views/DebuggerSidebarPanel.js:
1996         (WebInspector.DebuggerSidebarPanel):
1997         (WebInspector.DebuggerSidebarPanel.prototype._breakpointTreeOutlineContextMenuTreeElement):
1998         (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
1999         Remove references to folder tree element.
2000
2001         (WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements.isSpecialBreakpoint):
2002         (WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements):
2003         Top level comparison should check for "special" breakpoints.
2004
2005 2016-05-09  Matt Baker  <mattbaker@apple.com>
2006
2007         Web Inspector: Heap Snapshot Timeline view can be live
2008         https://bugs.webkit.org/show_bug.cgi?id=157487
2009         <rdar://problem/26178439>
2010
2011         Reviewed by Joseph Pecoraro.
2012
2013         * UserInterface/Views/HeapAllocationsTimelineView.js:
2014         (WebInspector.HeapAllocationsTimelineView.prototype.get showsLiveRecordingData): Deleted.
2015         Don't override, should return true.
2016
2017 2016-05-09  Manuel Rego Casasnovas  <rego@igalia.com>
2018
2019         [css-grid] Update Grid Layout properties in CSSKeywordCompletions.js
2020         https://bugs.webkit.org/show_bug.cgi?id=157166
2021
2022         Reviewed by Timothy Hatcher.
2023
2024         The CSS Grid Layout properties have been changing on the spec,
2025         however they haven't been updated in CSSKeywordCompletions for a long time.
2026         Update them using the last spec draft:
2027         https://drafts.csswg.org/css-grid/#property-index
2028
2029         * UserInterface/Models/CSSKeywordCompletions.js:
2030
2031 2016-05-09  Matt Baker  <mattbaker@apple.com>
2032
2033         Web Inspector: Cleanup issue tree elements in the Debugger sidebar
2034         https://bugs.webkit.org/show_bug.cgi?id=157469
2035         <rdar://problem/26162999>
2036
2037         Reviewed by Timothy Hatcher.
2038
2039         * UserInterface/Views/DebuggerSidebarPanel.js:
2040         (WebInspector.DebuggerSidebarPanel):
2041         (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
2042         Don't add duplicate issue tree elements.
2043         (WebInspector.DebuggerSidebarPanel.prototype._handleIssuesCleared):
2044         Remove issues from the correct tree outline.
2045
2046         * UserInterface/Views/IssueTreeElement.css:
2047         (.issue .icon):
2048         (.issue.warning .icon):
2049         (.issue.error .icon):
2050         Match dashboard icons.
2051
2052 2016-05-09  Matt Baker  <mattbaker@apple.com>
2053
2054         Web Inspector: Show in progress message in Timeline views that do not show data until the recording finishes
2055         https://bugs.webkit.org/show_bug.cgi?id=156761
2056         <rdar://problem/25970771>
2057
2058         Reviewed by Timothy Hatcher.
2059
2060         * Localizations/en.lproj/localizedStrings.js:
2061         New UI strings.
2062
2063         * UserInterface/Main.html:
2064         New view class.
2065
2066         * UserInterface/Views/HeapAllocationsTimelineView.js:
2067         (WebInspector.HeapAllocationsTimelineView.prototype.get showsLiveRecordingData):
2068         * UserInterface/Views/RenderingFrameTimelineView.js:
2069         (WebInspector.RenderingFrameTimelineView.prototype.get showsLiveRecordingData):
2070         * UserInterface/Views/ScriptDetailsTimelineView.js:
2071         (WebInspector.ScriptDetailsTimelineView.prototype.get showsLiveRecordingData):
2072         * UserInterface/Views/ScriptProfileTimelineView.js:
2073         (WebInspector.ScriptProfileTimelineView.prototype.get showsLiveRecordingData):
2074         Don't show live recording data.
2075
2076         * UserInterface/Views/ScriptClusterTimelineView.js:
2077         (WebInspector.ScriptClusterTimelineView.prototype.get showsLiveRecordingData):
2078         Forward property to current child TimelineView.
2079
2080         * UserInterface/Views/TimelineRecordingContentView.css:
2081         (.content-view.timeline-recording > .content-browser .recording-progress):
2082         (.content-view.timeline-recording > .content-browser .recording-progress > .status):
2083         (.content-view.timeline-recording > .content-browser .recording-progress > .status > .indeterminate-progress-spinner):
2084         New progress view styles.
2085
2086         * UserInterface/Views/TimelineRecordingContentView.js:
2087         (WebInspector.TimelineRecordingContentView):
2088         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
2089         (WebInspector.TimelineRecordingContentView.prototype._capturingStarted):
2090         (WebInspector.TimelineRecordingContentView.prototype._capturingStopped):
2091         Refresh progress view visibility.
2092
2093         (WebInspector.TimelineRecordingContentView.prototype._updateProgressView):
2094         Show the progress view if we're currently capturing, and showing a view
2095         that doesn't support showing live data.
2096
2097         * UserInterface/Views/TimelineRecordingProgressView.js:
2098         (WebInspector.TimelineRecordingProgressView):
2099         (WebInspector.TimelineRecordingProgressView.prototype.get visible):
2100         (WebInspector.TimelineRecordingProgressView.prototype.set visible):
2101         Show a status message, indeterminate progress spinner, and Stop Recording
2102         button while timeline data is being recorded.
2103
2104         * UserInterface/Views/TimelineView.js:
2105         (WebInspector.TimelineView.prototype.get showsLiveRecordingData):
2106         Implemented by TimelineViews that don't support showing data while recording.
2107
2108         * UserInterface/Views/Variables.css:
2109         (:root):
2110         Add --panel-background-color-light for the progress view.
2111
2112 2016-05-08  Matt Baker  <mattbaker@apple.com>
2113
2114         Web Inspector: Add Breakpoints and Scripts folders to Debugger sidebar
2115         https://bugs.webkit.org/show_bug.cgi?id=151119
2116         <rdar://problem/23488916>
2117
2118         Reviewed by Timothy Hatcher.
2119
2120         Add a collapsible Sources section to the Debugger beneath the existing
2121         Breakpoints section.
2122
2123         * UserInterface/Views/DebuggerSidebarPanel.css:
2124         Remove unused CSS class names.
2125
2126         (.sidebar > .panel.navigation.debugger .details-section.scripts:not(.collapsed)):
2127         Hide scripts section bottom border when expanded. As the last
2128         section, a border only adds visual clutter.
2129
2130         (.sidebar > .panel.navigation.debugger .details-section.scripts): Deleted.
2131         (.sidebar > .panel.navigation.debugger.paused .details-section.scripts): Deleted.
2132         (.sidebar > .panel.navigation.debugger .details-section.scripts .header): Deleted.
2133         (.sidebar > .panel.navigation.debugger.paused .details-section.scripts .header): Deleted.
2134         (.sidebar > .panel.navigation.debugger .details-section.scripts.collapsed > .content): Deleted.
2135         (.sidebar > .panel.navigation.debugger.paused .details-section.scripts.collapsed > .content): Deleted.
2136         No longer needed.
2137
2138         * UserInterface/Views/DebuggerSidebarPanel.js:
2139         (WebInspector.DebuggerSidebarPanel):
2140         Create separate "Breakpoints" and "Sources" sections, and make filter
2141         placeholder text generic. Remove unused class from breakpoints tree.
2142
2143         (WebInspector.DebuggerSidebarPanel.prototype.treeElementForRepresentedObject):
2144         Check both breakpoint and scripts tree outlines.
2145
2146         (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
2147         (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
2148         Make helper function generic.
2149
2150         (WebInspector.DebuggerSidebarPanel.prototype._addResource):
2151         (WebInspector.DebuggerSidebarPanel.prototype._mainResourceDidChange):
2152         (WebInspector.DebuggerSidebarPanel.prototype._addScript):
2153         Add resources to the scripts tree.
2154
2155         (WebInspector.DebuggerSidebarPanel.prototype._scriptsCleared):
2156         Clear the scripts tree.
2157
2158         (WebInspector.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
2159         Remove script element when last breakpoint is removed.
2160
2161         (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
2162         (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToContentTreeOutline): Deleted.
2163         Renamed _addTreeElementForSourceCodeToTreeOutline.
2164
2165 2016-05-08  Matt Baker  <mattbaker@apple.com>
2166
2167         Web Inspector: SourceCodeTextEditor issue widgets/line styles should reset when log is cleared
2168         https://bugs.webkit.org/show_bug.cgi?id=157460
2169         <rdar://problem/26159633>
2170
2171         Reviewed by Timothy Hatcher.
2172
2173         * UserInterface/Views/SourceCodeTextEditor.js:
2174         (WebInspector.SourceCodeTextEditor):
2175         (WebInspector.SourceCodeTextEditor.prototype._logCleared):
2176         Clear issue widgets and CodeMirror line class names when log cleared.
2177
2178 2016-05-06  Joseph Pecoraro  <pecoraro@apple.com>
2179
2180         Web Inspector: Inspect Element and Element Selection searching should work with Shadow DOM Nodes
2181         https://bugs.webkit.org/show_bug.cgi?id=157446
2182         <rdar://problem/24688447>
2183
2184         Reviewed by Ryosuke Niwa.
2185
2186         * UserInterface/Models/DOMNode.js:
2187         (WebInspector.DOMNode):
2188         Shadow DOM nodes did not have a parent, and so when attempting
2189         to create DOM Tree elements up the chain, we were failing at
2190         shadow boundaries. Create the parent relationship, the parent
2191         already treats it as a child.
2192
2193         * UserInterface/Views/DOMTreeOutline.js:
2194         (WebInspector.DOMTreeOutline.prototype._revealAndSelectNode):
2195         Whenever we try to reveal and select an element in a shadow tree
2196         but the setting to show shadow DOM is disabled, walk up until
2197         we are out of the shadow tree.
2198
2199 2016-05-06  Nikita Vasilyev  <nvasilyev@apple.com>
2200
2201         Web Inspector: Unexpected white border at the bottom of Debugger filter bar
2202         https://bugs.webkit.org/show_bug.cgi?id=157430
2203         <rdar://problem/26146602>
2204
2205         Reviewed by Timothy Hatcher.
2206
2207         Remove the semi-transparent white borders.
2208
2209         * UserInterface/Views/NavigationBar.css:
2210         (.navigation-bar): Deleted.
2211         * UserInterface/Views/SearchSidebarPanel.css:
2212         (.sidebar > .panel.navigation.search > .search-bar): Deleted.
2213
2214 2016-05-06  Joseph Pecoraro  <pecoraro@apple.com>
2215
2216         Web Inspector: Remove HeapSnapshot Summary View
2217         https://bugs.webkit.org/show_bug.cgi?id=157385
2218
2219         Reviewed by Timothy Hatcher.
2220
2221         * Localizations/en.lproj/localizedStrings.js:
2222         * UserInterface/Main.html:
2223         * UserInterface/Views/HeapSnapshotClusterContentView.js:
2224         (WebInspector.HeapSnapshotClusterContentView):
2225         (WebInspector.HeapSnapshotClusterContentView.prototype.get summaryContentView): Deleted.
2226         (WebInspector.HeapSnapshotClusterContentView.prototype.showSummary): Deleted.
2227         (WebInspector.HeapSnapshotClusterContentView.prototype._pathComponentForContentView):
2228         (WebInspector.HeapSnapshotClusterContentView.prototype._identifierForContentView):
2229         (WebInspector.HeapSnapshotClusterContentView.prototype._showContentViewForIdentifier):
2230         * UserInterface/Views/HeapSnapshotSummaryContentView.css: Removed.
2231         * UserInterface/Views/HeapSnapshotSummaryContentView.js: Removed.
2232         * UserInterface/Views/Variables.css:
2233         (:root):
2234
2235 2016-05-06  Manuel Rego Casasnovas  <rego@igalia.com>
2236
2237         [css-grid] Unprefix CSS Grid Layout properties
2238         https://bugs.webkit.org/show_bug.cgi?id=157137
2239
2240         Reviewed by Simon Fraser.
2241
2242         Remove "-webkit" prefix from all the grid layout properties,
2243         including the display value.
2244         Update the source code to remove the prefix where it was used too.
2245
2246         * UserInterface/Models/CSSKeywordCompletions.js:
2247
2248 2016-05-05  Joseph Pecoraro  <pecoraro@apple.com>
2249
2250         REGRESSION(r200474): Exception in autocompletion - `getCompletions` not found
2251         https://bugs.webkit.org/show_bug.cgi?id=157408
2252
2253         Reviewed by Timothy Hatcher.
2254
2255         * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
2256         (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated):
2257         This function was renamed, but this instance was missed.
2258
2259 2016-05-05  Joseph Pecoraro  <pecoraro@apple.com>
2260
2261         Web Inspector: Provide go-to links next to Functions in GC Root Path popover
2262         https://bugs.webkit.org/show_bug.cgi?id=157381
2263         <rdar://problem/26122531>
2264
2265         Reviewed by Timothy Hatcher.
2266
2267         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
2268         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
2269         For functions, create a go-to-link. Insert a placeholder to replace
2270         so that the popover sizes itself with a potential go-to arrow, as
2271         it won't resize when the go-to arrows get inserted.
2272
2273         * UserInterface/Views/HeapSnapshotInstancesContentView.css:
2274         (.heap-snapshot-instance-popover-content .node .go-to-link):
2275         Move down 1px to align better with the text.
2276
2277 2016-05-05  Joseph Pecoraro  <pecoraro@apple.com>
2278
2279         Web Inspector: HeapSnapshot should exploratory Object Graph view
2280         https://bugs.webkit.org/show_bug.cgi?id=157371
2281         <rdar://problem/26107304>
2282
2283         Reviewed by Timothy Hatcher.
2284
2285         HeapSnapshots now have two ContentViews for viewing the graph.
2286
2287         HeapSnapshotInstancesContentView:
2288           - top level are Class Categories nodes
2289           - categories expand to Instances
2290           - instances expand to show what they retain
2291           - retained sizes only shown for dominated nodes of the instance
2292
2293         HeapSnapshotObjectGraphContentView:
2294           - top level are GlobalObject or Window nodes
2295           - expand to show what they retain
2296           - retained sizes are shown for all nodes, everything is shown
2297
2298         This also provides a custom preview for Window instances. Instead of
2299         showing an ObjectPreview, it just shows the `window.location.href`
2300         for that instance, which is useful when there are multiple Window
2301         instances for different frames.
2302
2303         * Localizations/en.lproj/localizedStrings.js:
2304         * UserInterface/Main.html:
2305         New "Object Graph" string and new files.
2306
2307         * UserInterface/Images/HeapSnapshotObjectGraph.svg: Added.
2308         * UserInterface/Images/gtk/HeapSnapshotObjectGraph.svg: Added.
2309         * UserInterface/Views/PathComponentIcons.css:
2310         (.heap-snapshot-object-graph-icon .icon):
2311         Copy the red [{}] icon from Style Rules.
2312
2313         * UserInterface/Views/HeapSnapshotClusterContentView.js:
2314         (WebInspector.HeapSnapshotClusterContentView):
2315         (WebInspector.HeapSnapshotClusterContentView.prototype.get objectGraphContentView):
2316         (WebInspector.HeapSnapshotClusterContentView.prototype.showObjectGraph):
2317         (WebInspector.HeapSnapshotClusterContentView.prototype._supportsObjectGraph):
2318         (WebInspector.HeapSnapshotClusterContentView.prototype._pathComponentForContentView):
2319         (WebInspector.HeapSnapshotClusterContentView.prototype._identifierForContentView):
2320         (WebInspector.HeapSnapshotClusterContentView.prototype._showContentViewForIdentifier):
2321         Include an "Object Graph" content view. This is unavailable in Diff views
2322         but is available for individual HeapSnapshots.
2323
2324         * UserInterface/Views/HeapSnapshotContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstancesContentView.js.
2325         (WebInspector.HeapSnapshotContentView):
2326         (WebInspector.HeapSnapshotContentView.prototype.shown):
2327         (WebInspector.HeapSnapshotContentView.prototype.hidden):
2328         (WebInspector.HeapSnapshotContentView.prototype._sortDataGrid):
2329         (WebInspector.HeapSnapshotContentView.prototype._heapSnapshotDataGridTreeDidPopulate):
2330         (WebInspector.HeapSnapshotInstancesContentView):
2331         (WebInspector.HeapSnapshotObjectGraphContentView):
2332         Share and generalize a HeapSnapshot ContentView. The only differences are
2333         the DataGrid columns, DataGridTree class, and identifier prefix for settings.
2334
2335         * UserInterface/Views/HeapSnapshotDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/Views/HeapSnapshotInstancesDataGridTree.js.
2336         (WebInspector.HeapSnapshotDataGridTree):
2337         (WebInspector.HeapSnapshotDataGridTree.buildSortComparator):
2338         (WebInspector.HeapSnapshotDataGridTree.prototype.get heapSnapshot):
2339         (WebInspector.HeapSnapshotDataGridTree.prototype.get visible):
2340         (WebInspector.HeapSnapshotDataGridTree.prototype.get popover):
2341         (WebInspector.HeapSnapshotDataGridTree.prototype.get popoverNode):
2342         (WebInspector.HeapSnapshotDataGridTree.prototype.set popoverNode):
2343         (WebInspector.HeapSnapshotDataGridTree.prototype.get children):
2344         (WebInspector.HeapSnapshotDataGridTree.prototype.appendChild):
2345         (WebInspector.HeapSnapshotDataGridTree.prototype.insertChild):
2346         (WebInspector.HeapSnapshotDataGridTree.prototype.removeChildren):
2347         (WebInspector.HeapSnapshotDataGridTree.prototype.set sortComparator):
2348         (WebInspector.HeapSnapshotDataGridTree.prototype.sort):
2349         (WebInspector.HeapSnapshotDataGridTree.prototype.shown):
2350         (WebInspector.HeapSnapshotDataGridTree.prototype.hidden):
2351         (WebInspector.HeapSnapshotDataGridTree.prototype.willDismissPopover):
2352         (WebInspector.HeapSnapshotDataGridTree.prototype.get alwaysShowRetainedSize):
2353         (WebInspector.HeapSnapshotDataGridTree.prototype.populateTopLevel):
2354         (WebInspector.HeapSnapshotDataGridTree.prototype.didPopulate):
2355         (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.get alwaysShowRetainedSize):
2356         (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
2357         (WebInspector.HeapSnapshotInstancesDataGridTree):
2358         (WebInspector.HeapSnapshotObjectGraphDataGridTree.prototype.get alwaysShowRetainedSize):
2359         (WebInspector.HeapSnapshotObjectGraphDataGridTree.prototype.populateTopLevel):
2360         (WebInspector.HeapSnapshotObjectGraphDataGridTree):
2361
2362         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
2363         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
2364         Start using different previews based on instance type.
2365
2366         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateError):
2367         Common preview error logic. Also, don't output "Internal object" next to things
2368         like Structure, InferredType, etc. Just don't output anything. Eventually, if
2369         we provide preview data, something will show, but for now nothing is fine.
2370
2371         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateWindowPreview.inspectedPage_window_getLocationHref):
2372         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateWindowPreview):
2373         Custom preview logic for Window's gets `window.location.href` on the instance if it is alive.
2374
2375         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
2376         Normal preview logic.
2377
2378         * UserInterface/Views/HeapSnapshotInstancesContentView.css:
2379         (.heap-snapshot > .data-grid tr:not(.selected) td .preview-error): Deleted.
2380         The red text for errors was standing out too much. Make it the default black.
2381
2382         * UserInterface/Views/HeapAllocationsTimelineView.js:
2383         (WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotTimelineRecord):
2384         Better variable name.
2385
2386         * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
2387         (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.inspectedPage_evalResult_getArrayCompletions):
2388         (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.inspectedPage_evalResult_getCompletions):
2389         (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.getArrayCompletions): Deleted.
2390         (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.getCompletions): Deleted.
2391         (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated):
2392         Try to be clearer about functions that run on the inspected page
2393         by using the pattern with inspectedPage_<thisObject>_functionName.
2394
2395 2016-05-05  Nikita Vasilyev  <nvasilyev@apple.com>
2396
2397         Web Inspector: Console is unresponsive for >10 seconds when it tries to render 10,000 messages
2398         https://bugs.webkit.org/show_bug.cgi?id=157368
2399         <rdar://problem/26103657>
2400
2401         Reviewed by Timothy Hatcher.
2402
2403         Render only up to 100 messages per animation frame to keep the Inspector's UI responsive.
2404
2405         * UserInterface/Controllers/JavaScriptLogViewController.js:
2406         (WebInspector.JavaScriptLogViewController.prototype.renderPendingMessages):
2407
2408 2016-05-05  Joseph Pecoraro  <pecoraro@apple.com>
2409
2410         Crash if you type "debugger" in the console and continue
2411         https://bugs.webkit.org/show_bug.cgi?id=156924
2412         <rdar://problem/25884189>
2413
2414         Reviewed by Mark Lam.
2415
2416         * UserInterface/Test/InspectorProtocol.js:
2417         (InspectorProtocol.sendCommand):
2418         Simplify sending a command with no parameters.
2419
2420 2016-05-04  Nikita Vasilyev  <nvasilyev@apple.com>
2421
2422         REGRESSION (r200401): Web Inspector: TypeError: undefined is not an object (evaluating 'messageElement.classList')
2423         https://bugs.webkit.org/show_bug.cgi?id=157356
2424         <rdar://problem/26097424>
2425
2426         Reviewed by Timothy Hatcher.
2427
2428         * UserInterface/Views/LogContentView.js:
2429         (WebInspector.LogContentView.prototype._reappendProvisionalMessages):
2430         Don't filter messages since we already do that in didAppendConsoleMessageView.
2431
2432 2016-05-04  Joseph Pecoraro  <pecoraro@apple.com>
2433
2434         Web Inspector: GC Root Path sometimes does not go up to Window
2435         https://bugs.webkit.org/show_bug.cgi?id=156768
2436         <rdar://problem/25816131>
2437
2438         Reviewed by Geoffrey Garen.
2439
2440         * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
2441         (WebInspector.HeapSnapshotNodeProxy.prototype.retainers):
2442         Include paths for debugging.
2443
2444         * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
2445         (HeapSnapshot.prototype.shortestGCRootPath):
2446         (HeapSnapshot.prototype._isNodeGlobalObject):
2447         Prefer the shortest GC Root Path that contains a known
2448         global object, otherwise fallback to the shortest.
2449
2450         (HeapSnapshot.prototype.retainers):
2451         Include paths for debugging.
2452
2453 2016-05-03  Nikita Vasilyev  <nvasilyev@apple.com>
2454
2455         Web Inspector: Adding a new console message shouldn't modify DOM when the console log is hidden
2456         https://bugs.webkit.org/show_bug.cgi?id=155629
2457         <rdar://problem/25235470>
2458
2459         Reviewed by Timothy Hatcher.
2460
2461         Instead of rendering console messages right away, store them (in _pendingMessages)
2462         and render only when the console tab or the split console is visible.
2463         Also, batch rendering operations using requestAnimationFrame.
2464
2465         * UserInterface/Controllers/JavaScriptLogViewController.js:
2466         (WebInspector.JavaScriptLogViewController):
2467         Store console message views in _pendingMessages.
2468
2469         (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
2470         (WebInspector.JavaScriptLogViewController.prototype.renderPendingMessages):
2471         Use requestAnimationFrame batching. Run isScrolledToBottom() at most only once
2472         per batch.
2473
2474         (WebInspector.JavaScriptLogViewController.prototype.renderPendingMessagesSoon):
2475         (WebInspector.JavaScriptLogViewController.prototype._didRenderConsoleMessageView):
2476         There is no need to run scrollToBottom again.
2477
2478         * UserInterface/Views/ConsoleCommandView.js:
2479         (WebInspector.ConsoleCommandView):
2480         Move all DOM operations to a new render method.
2481
2482         (WebInspector.ConsoleCommandView.prototype.render):
2483         * UserInterface/Views/ConsoleMessageView.js:
2484         (WebInspector.ConsoleMessageView):
2485         (WebInspector.ConsoleMessageView.prototype.render):
2486         (WebInspector.ConsoleMessageView.prototype.set repeatCount):
2487         (WebInspector.ConsoleMessageView.prototype._renderRepeatCount):
2488         * UserInterface/Views/LogContentView.js:
2489         (WebInspector.LogContentView.prototype.shown):
2490         When the console tab or the split console is opened render all pending messages.
2491
2492         (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
2493         Don't call needsLayout on every added console message. Call it only once per
2494         requestAnimationFrame. Also, no need to scrollToBottom once again.
2495
2496         (WebInspector.LogContentView.prototype._messageAdded):
2497         (WebInspector.LogContentView.prototype._previousMessageRepeatCountUpdated):
2498         (WebInspector.LogContentView.prototype._scopeFromMessageLevel): Deleted.
2499         (WebInspector.LogContentView.prototype._markScopeBarItemUnread): Added.
2500         Rename _pulseScopeBarItemBorder. In the very first version the border was pulsing,
2501         but now we use small colored circles instead.
2502
2503 2016-05-03  Joseph Pecoraro  <pecoraro@apple.com>
2504
2505         Web Inspector: Give console.time/timeEnd a default label and warnings
2506         https://bugs.webkit.org/show_bug.cgi?id=157325
2507         <rdar://problem/26073290>
2508
2509         Reviewed by Timothy Hatcher.
2510
2511         * UserInterface/Models/NativeFunctionParameters.js:
2512         Update the convenience signature.
2513
2514 2016-05-03  Joseph Pecoraro  <pecoraro@apple.com>
2515
2516         Web Inspector: Update window.console function API description strings in Console
2517         https://bugs.webkit.org/show_bug.cgi?id=157298
2518
2519         Reviewed by Timothy Hatcher.
2520
2521         * UserInterface/Models/NativeFunctionParameters.js:
2522         * UserInterface/Views/ObjectTreePropertyTreeElement.js:
2523         (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
2524         The Console object changed how it works. Work with the new
2525         structure, and the older structure for legacy backends.
2526
2527 2016-05-03  Joseph Pecoraro  <pecoraro@apple.com>
2528
2529         Web Inspector: Allow format specifiers in console.assert and console.trace
2530         https://bugs.webkit.org/show_bug.cgi?id=157295
2531         <rdar://problem/26056039>
2532
2533         Reviewed by Timothy Hatcher.
2534
2535         * UserInterface/Views/ConsoleMessageView.js:
2536         (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
2537         Treat the first argument as a format specifier.
2538
2539 2016-05-02  Commit Queue  <commit-queue@webkit.org>
2540
2541         Unreviewed, rolling out r200337.
2542         https://bugs.webkit.org/show_bug.cgi?id=157294
2543
2544         Console hangs when evaluating expresisons (Requested by
2545         JoePeck on #webkit).
2546
2547         Reverted changeset:
2548
2549         "Web Inspector: Adding a new console message shouldn't modify
2550         DOM when the console log is hidden"
2551         https://bugs.webkit.org/show_bug.cgi?id=155629
2552         http://trac.webkit.org/changeset/200337
2553
2554 2016-05-02  Joseph Pecoraro  <pecoraro@apple.com>
2555
2556         Web Inspector: Unexpected "Script Element #" resources in Debugger Sidebar
2557         https://bugs.webkit.org/show_bug.cgi?id=157280
2558
2559         Reviewed by Timothy Hatcher.
2560
2561         * UserInterface/Views/DebuggerSidebarPanel.js:
2562         (WebInspector.DebuggerSidebarPanel.prototype._addScript):
2563         Don't include Script Element resources in the debugger sidebar by default.
2564
2565 2016-05-02  Joseph Pecoraro  <pecoraro@apple.com>
2566
2567         Web Inspector: Prefer "Console Evaluation" to "Eval Code" if we know it was a console evaluation
2568         https://bugs.webkit.org/show_bug.cgi?id=157278
2569
2570         Reviewed by Timothy Hatcher.
2571
2572         * Localizations/en.lproj/localizedStrings.js:
2573         "Console Evaluation" string.
2574
2575         * UserInterface/Controllers/DebuggerManager.js:
2576         (WebInspector.DebuggerManager.prototype._sourceCodeLocationFromPayload): Deleted.
2577         Delete an assert that would throw when the location is noSourceID:-1:-1.
2578
2579         * UserInterface/Models/CallFrame.js:
2580         (WebInspector.CallFrame.fromDebuggerPayload):
2581         (WebInspector.CallFrame.fromPayload):
2582         (WebInspector.CallFrame):
2583         When this is in a Console Evalution provide better values.
2584
2585         * UserInterface/Models/GarbageCollection.js:
2586         (WebInspector.GarbageCollection):
2587         Drive-by address a common assertions seen while paused.
2588
2589 2016-05-02  Nikita Vasilyev  <nvasilyev@apple.com>
2590
2591         Web Inspector: Adding a new console message shouldn't modify DOM when the console log is hidden
2592         https://bugs.webkit.org/show_bug.cgi?id=155629
2593         <rdar://problem/25235470>
2594
2595         Reviewed by Timothy Hatcher.
2596
2597         Instead of rendering console messages right away, store them (in _pendingMessages)
2598         and render only when the console tab or the split console is visible.
2599         Also, batch rendering operations using requestAnimationFrame.
2600
2601         * UserInterface/Controllers/JavaScriptLogViewController.js:
2602         (WebInspector.JavaScriptLogViewController):
2603         Store console message views in _pendingMessages.
2604
2605         (WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
2606         (WebInspector.JavaScriptLogViewController.prototype.renderPendingMessages):
2607         Use requestAnimationFrame batching. Run isScrolledToBottom() at most only once
2608         per batch.
2609
2610         (WebInspector.JavaScriptLogViewController.prototype.renderPendingMessagesSoon):
2611         (WebInspector.JavaScriptLogViewController.prototype._didRenderConsoleMessageView):
2612         There is no need to run scrollToBottom again.
2613
2614         * UserInterface/Views/ConsoleCommandView.js:
2615         (WebInspector.ConsoleCommandView):
2616         Move all DOM operations to a new render method.
2617
2618         (WebInspector.ConsoleCommandView.prototype.render):
2619         * UserInterface/Views/ConsoleMessageView.js:
2620         (WebInspector.ConsoleMessageView):
2621         (WebInspector.ConsoleMessageView.prototype.render):
2622         (WebInspector.ConsoleMessageView.prototype.set repeatCount):
2623         (WebInspector.ConsoleMessageView.prototype._renderRepeatCount):
2624         * UserInterface/Views/LogContentView.js:
2625         (WebInspector.LogContentView.prototype.shown):
2626         When the console tab or the split console is opened render all pending messages.
2627
2628         (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
2629         No need to scrollToBottom once again.
2630
2631         (WebInspector.LogContentView.prototype._messageAdded):
2632         (WebInspector.LogContentView.prototype._previousMessageRepeatCountUpdated):
2633         (WebInspector.LogContentView.prototype._scopeFromMessageLevel): Deleted.
2634         (WebInspector.LogContentView.prototype._markScopeBarItemUnread): Added.
2635         Rename _pulseScopeBarItemBorder. In the very first version the border was pulsing,
2636         but now we use small colored circles instead.
2637
2638 2016-05-02  Joseph Pecoraro  <pecoraro@apple.com>
2639
2640         Uncaught Exception: TypeError: null is not an object (evaluating 'sourceCodeLocation.formattedLineNumber')
2641         https://bugs.webkit.org/show_bug.cgi?id=157239
2642         <rdar://problem/26030791>
2643
2644         Reviewed by Timothy Hatcher.
2645
2646         * UserInterface/Controllers/IssueManager.js:
2647         (WebInspector.IssueManager.issueMatchSourceCode):
2648         Require a sourceCodeLocation for Script errors.
2649
2650         * UserInterface/Views/SourceCodeTextEditor.js:
2651         (WebInspector.SourceCodeTextEditor.prototype._addIssue):
2652         Be safe against a missing sourceCodeLocation.
2653
2654         * UserInterface/Views/SourceCodeTextEditor.css:
2655         (.source-code.text-editor > .CodeMirror .issue-widget.inline > .arrow):
2656         (@media (-webkit-min-device-pixel-ratio: 2)):
2657         Adjust the style, on non-Retina the inline message arrow would sometimes
2658         be detached from the warning message.
2659
2660 2016-05-02  Timothy Hatcher  <timothy@apple.com>
2661
2662         Web Inspector: Zooming of docked Web Inspector affects the webpage, but reset to 0 does not
2663         https://bugs.webkit.org/show_bug.cgi?id=157234
2664         rdar://problem/26027177
2665
2666         Always prevent default for the zoom keyboard shortcuts to avoid passing the event back to
2667         Safari to handle and add explicit beeps when max/min is hit.
2668
2669         Reviewed by Brian Burg.
2670
2671         * UserInterface/Base/Main.js:
2672         (WebInspector.contentLoaded): Removed setting implicitlyPreventsDefault on zoom keyboard shortcuts.
2673         (WebInspector._increaseZoom): Add explicit beep and remove preventDefault call.
2674         (WebInspector._decreaseZoom): Ditto.
2675
2676 2016-05-01  Dan Bernstein  <mitz@apple.com>
2677
2678         WebInspectorUI.framework/Versions/A/Resources/Images/Legacy is empty
2679         https://bugs.webkit.org/show_bug.cgi?id=157248
2680
2681         Reviewed by Timothy Hatcher.
2682
2683         * UserInterface/Images/Legacy: Removed.
2684
2685 2016-04-29  Joseph Pecoraro  <pecoraro@apple.com>
2686
2687         Web Inspector: Issues inspecting the inspector, pausing on breakpoints causes content to not load
2688         https://bugs.webkit.org/show_bug.cgi?id=157198
2689         <rdar://problem/26011049>
2690
2691         Reviewed by Timothy Hatcher.
2692
2693         * UserInterface/Protocol/InspectorBackend.js:
2694         (InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
2695         (InspectorBackendClass.prototype._sendCommandToBackendExpectingPromise):
2696         While auditing, use simpler check.
2697
2698         * UserInterface/Proxies/FormatterWorkerProxy.js:
2699         (WebInspector.FormatterWorkerProxy.canFormat): Deleted.
2700         While auditing, remove dead code.
2701
2702 2016-04-29  Timothy Hatcher  <timothy@apple.com>
2703
2704         Web Inspector: Scrolling in Timelines causes flashing of the DataGrid
2705         https://bugs.webkit.org/show_bug.cgi?id=157212
2706         rdar://problem/25994717
2707
2708         Listen for mousewheel events too so we can update the visible rows sooner.
2709
2710         Reviewed by Joseph Pecoraro.
2711
2712         * UserInterface/Views/DataGrid.js:
2713         (WebInspector.DataGrid): Call _updateScrollListeners.
2714         (WebInspector.DataGrid.prototype.set inline): Use _updateScrollListeners.
2715         (WebInspector.DataGrid.prototype.set variableHeightRows): Use _updateScrollListeners.
2716         (WebInspector.DataGrid.prototype._updateScrollListeners): Added. Listen for mousewheel too.
2717
2718 2016-04-29  Joseph Pecoraro  <pecoraro@apple.com>
2719
2720         Web Inspector: Jump to Line in auto formatted JavaScript does not work the first time
2721         https://bugs.webkit.org/show_bug.cgi?id=157194
2722         <rdar://problem/26008471>
2723
2724         Reviewed by Timothy Hatcher.
2725
2726         When doing asynchronous formatting we set the content of the editor
2727         twice. First to prime the editors back/foward list with the original
2728         content, and then again after we get the formatted content from the
2729         Worker, and then display the content.
2730
2731         The TextEditor attempts to reveal a position when the initial string
2732         has been set. Back when autoformatting was synchronous this was fine.
2733         Asynchronously however, this ends up happening between the original
2734         and formatted value. Also, the TextEditor has no idea that the
2735         SourceCodeTextEditor is going to format / defer displaying the
2736         contents. Add a "defer" property to the TextEditor that the
2737         SourceCodeTextEditor can use in this circumstance.
2738
2739         * UserInterface/Views/SourceCodeTextEditor.js:
2740         (WebInspector.SourceCodeTextEditor.prototype._populateWithContent):
2741         Avoid revealing a position when setting the original content. We will
2742         be formatting and we will want to reveal the position afterwards.
2743
2744         * UserInterface/Views/TextEditor.js:
2745         (WebInspector.TextEditor):
2746         (WebInspector.TextEditor.prototype.set deferReveal):
2747         Provide another reason to defer revealing.
2748
2749 2016-04-28  Joseph Pecoraro  <pecoraro@apple.com>
2750
2751         Web Inspector: FormatterWorker fails to find "External/Esprima.js" in Production builds
2752         https://bugs.webkit.org/show_bug.cgi?id=157162
2753         <rdar://problem/25996556>
2754
2755         Reviewed by Timothy Hatcher.
2756
2757         Workers have relative include paths. FormatterWorker has an includes
2758         that looks like:
2759
2760             importScripts(...[
2761                 "../../External/Esprima/esprima.js",
2762                 ...
2763             ]);
2764
2765         In optimized builds (Production) the esprima resources are combined
2766         and moved out of an External directory to "Esprima.js". We need to
2767         update the path of this include in optimized builds.
2768
2769         This adds a script to do some basic rewrites of paths. It will also
2770         produce a build error if there are any other External paths that
2771         may have been unhandled.
2772
2773         * Scripts/copy-user-interface-resources.pl:
2774         Run a new script to fix up the Worker imports for new pathes.
2775
2776         * Scripts/fix-worker-imports-for-optimized-builds.pl: Added.
2777         (fixWorkerImportsInFile):
2778         (fixWorkerImportsInDirectory):
2779         Replace "/External/Esprima/esprima.js" with "/Esprima.js" in imports.
2780         Fatal error for any unhandled "/External" lines that were not replaced.
2781
2782 2016-04-27  Joseph Pecoraro  <pecoraro@apple.com>
2783
2784         Web Inspector: Missing CSS autocompletion suggestions for -webkit-user-select
2785         https://bugs.webkit.org/show_bug.cgi?id=157104
2786
2787         Reviewed by Timothy Hatcher.
2788
2789         * UserInterface/Models/CSSKeywordCompletions.js:
2790
2791 2016-04-26  Joseph Pecoraro  <pecoraro@apple.com>
2792
2793         Web Inspector: Clarify Heap Snapshot instance Retained Size by hiding retained size of non-dominated children
2794         https://bugs.webkit.org/show_bug.cgi?id=157018
2795
2796         Reviewed by Timothy Hatcher.
2797
2798         * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
2799         (WebInspector.HeapSnapshotNodeProxy):
2800         (WebInspector.HeapSnapshotNodeProxy.deserialize):
2801         * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
2802         (HeapSnapshot.prototype.serializeNode):
2803         Include dominatorNodeIdentifier in the default proxy properties.
2804
2805         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
2806         (WebInspector.HeapSnapshotInstanceDataGridNode):
2807         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get node):
2808         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
2809         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._isDominatedByBase):
2810         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._isDominatedByNonBaseParent):
2811         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate):
2812         * UserInterface/Views/HeapSnapshotInstancesContentView.css:
2813         (.heap-snapshot > .data-grid td .sub-retained):
2814         Save the base HeapSnapshotInstanceDataGridNode so that it can be referenced by
2815         children. When expanding an instance, hide the retained size for children
2816         that are not dominated by the base object. Show the retained size for children
2817         for children that are dominated. If dominated directly, show the size in the
2818         normal black. If dominated transitively, show the size in a dimmed gray.
2819
2820 2016-04-25  Matt Baker  <mattbaker@apple.com>
2821
2822         Web Inspector: hook up grid row filtering in the new Timelines UI
2823         https://bugs.webkit.org/show_bug.cgi?id=154924
2824         <rdar://problem/24934607>
2825
2826         Reviewed by Timothy Hatcher.
2827
2828         Re-implement timeline data grid filtering that previously existed in the
2829         navigation sidebar. This patch adds support for filter text, scope bars,
2830         and filtering based on ruler selection.
2831
2832         Multi-column filter support is now part of DataGrid. The grid checks compares
2833         filter text against cell data of type string. DataGridNode subclasses may
2834         provide custom string data for columns that format complex objects (such
2835         as SourceCodeLocations). Cells containing data of type number are not
2836         considered for filtering at this time.
2837
2838         * UserInterface/Views/DataGrid.js:
2839         (WebInspector.DataGrid):
2840         (WebInspector.DataGrid.prototype.set filterText):
2841         (WebInspector.DataGrid.prototype.get filterDelegate):
2842         (WebInspector.DataGrid.prototype.set filterDelegate):
2843         (WebInspector.DataGrid.prototype.filterDidChange):
2844         Called internally by the grid whenever the filter text or delegate changes.
2845         Also called by clients that implement a filter delegate, to inform the
2846         grid that a custom filter has changed.
2847
2848         (WebInspector.DataGrid.prototype.hasCustomFilters):
2849         (WebInspector.DataGrid.prototype.matchNodeAgainstCustomFilters):
2850         Calls the filter delegate, if it exists, and provides a hook for
2851         subclasses to provide custom filtering.
2852
2853         (WebInspector.DataGrid.prototype._applyFiltersToNode.matchTextFilter):
2854         (WebInspector.DataGrid.prototype._applyFiltersToNode.makeVisible):
2855         (WebInspector.DataGrid.prototype._applyFiltersToNode):
2856         Filters data grid nodes and fires filter events as needed.
2857         (WebInspector.DataGrid.prototype._hasFilterDelegate):
2858         Helper function.
2859         (WebInspector.DataGrid.prototype._updateVisibleRows):
2860         Exclude hidden nodes from revealed rows.
2861         (WebInspector.DataGrid.prototype._updateFilter):
2862         Filtering entry point, called on an animation frame. Updates visible
2863         rows if any node was filtered/unfiltered.
2864
2865         (WebInspector.DataGridNode):
2866         (WebInspector.DataGridNode.prototype.get filterableData):
2867         Gets an array of filterable strings for the node.
2868         (WebInspector.DataGridNode.prototype.refresh):
2869         Resets cached filterable strings.
2870         (WebInspector.DataGridNode.prototype.filterableDataForColumn):
2871         Can be overridden by subclasses to provide filterable text for complex
2872         cell data, like as objects formatted as document fragments.
2873
2874         * UserInterface/Views/LayoutTimelineDataGridNode.js:
2875         (WebInspector.LayoutTimelineDataGridNode.prototype.get data):
2876
2877         * UserInterface/Views/LayoutTimelineView.js:
2878         (WebInspector.LayoutTimelineView):
2879         Register grid and remove logic that has been moved to the base class.
2880         (WebInspector.LayoutTimelineView.prototype.filterDidChange):
2881         Update highlight after grid filter change.
2882         (WebInspector.LayoutTimelineView.prototype._dataGridSelectedNodeChanged):
2883         Update highlight when selection changes.
2884         (WebInspector.LayoutTimelineView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
2885         (WebInspector.LayoutTimelineView.prototype.treeElementDeselected): Deleted.
2886         (WebInspector.LayoutTimelineView.prototype._dataGridFiltersDidChange): Deleted.
2887         (WebInspector.LayoutTimelineView.prototype._dataGridNodeSelected): Deleted.
2888         No longer needed.
2889
2890         * UserInterface/Views/NetworkTimelineView.js:
2891         (WebInspector.NetworkTimelineView):
2892         Register grid and remove logic that has been moved to the base class.
2893         (WebInspector.NetworkTimelineView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
2894         (WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange): Deleted.
2895         (WebInspector.NetworkTimelineView.prototype._dataGridNodeSelected): Deleted.
2896         No longer needed.
2897
2898         * UserInterface/Views/OverviewTimelineView.js:
2899         (WebInspector.OverviewTimelineView):
2900         Register grid and remove logic that has been moved to the base class.
2901         (WebInspector.OverviewTimelineView.prototype._dataGridNodeSelected): Deleted.
2902         No longer needed.
2903
2904         * UserInterface/Views/RenderingFrameTimelineView.js:
2905         (WebInspector.RenderingFrameTimelineView):
2906         Register grid and remove logic that has been moved to the base class.
2907         (WebInspector.RenderingFrameTimelineView.prototype.get filterStartTime):
2908         (WebInspector.RenderingFrameTimelineView.prototype.get filterEndTime):
2909         Convert selection indices into filter start and end times.
2910         (WebInspector.RenderingFrameTimelineView.prototype.matchDataGridNodeAgainstCustomFilters):
2911         Perform custom filtering on rendering frame duration.
2912         (WebInspector.RenderingFrameTimelineView.prototype._scopeBarSelectionDidChange):
2913         Inform grid of custom filter change.
2914         (WebInspector.RenderingFrameTimelineView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
2915         (WebInspector.RenderingFrameTimelineView.prototype._dataGridNodeSelected): Deleted.
2916         No longer needed.
2917
2918         * UserInterface/Views/ResourceTimelineDataGridNode.js:
2919         (WebInspector.ResourceTimelineDataGridNode.prototype.filterableDataForColumn):
2920         Use URL string for filtering "name" column.
2921
2922         * UserInterface/Views/ScriptClusterTimelineView.js:
2923         (WebInspector.ScriptClusterTimelineView.prototype.updateFilter):
2924         Forwarding for TimelineView API.
2925         (WebInspector.ScriptClusterTimelineView.prototype.matchDataGridNodeAgainstCustomFilters):
2926         (WebInspector.ScriptClusterTimelineView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
2927         Renamed to matchDataGridNodeAgainstCustomFilters.
2928         (WebInspector.ScriptClusterTimelineView.prototype._scriptClusterViewCurrentContentViewDidChange): Deleted.
2929         Removed FIXME comment. Updating TimelineView times is sufficient to trigger filtering.
2930
2931         * UserInterface/Views/ScriptDetailsTimelineView.js:
2932         (WebInspector.ScriptDetailsTimelineView):
2933         Register grid and remove logic that has been moved to the base class.
2934         (WebInspector.ScriptDetailsTimelineView.prototype._dataGridFiltersDidChange): Deleted.
2935         (WebInspector.ScriptDetailsTimelineView.prototype._dataGridNodeSelected): Deleted.
2936         No longer needed.
2937
2938         * UserInterface/Views/ScriptTimelineDataGridNode.js:
2939         (WebInspector.ScriptTimelineDataGridNode.prototype.filterableDataForColumn):
2940         Use main title and subtitle strings for filtering "name" column.
2941         (WebInspector.ScriptTimelineDataGridNode.prototype._createNameCellDocumentFragment):
2942         (WebInspector.ScriptTimelineDataGridNode.prototype._subtitle):
2943         Break out for use in filterableDataForColumn.
2944
2945         * UserInterface/Views/TimelineDataGrid.js:
2946         (WebInspector.TimelineDataGrid):
2947         Cleanup variable names.
2948         (WebInspector.TimelineDataGrid.prototype.hasCustomFilters):
2949         Always true because filtering on ruler selection always occurs.
2950         (WebInspector.TimelineDataGrid.prototype.matchNodeAgainstCustomFilters):
2951         Match nodes against scope bar filters.
2952         (WebInspector.TimelineDataGrid.prototype._scopeBarSelectedItemsDidChange):
2953         Inform grid of custom filter change.
2954         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters): Deleted.
2955         Re-implemented as _nodeMatchesActiveScopeFilters.
2956         (WebInspector.TimelineDataGrid.prototype._updateScopeBarForcedVisibility): Deleted.
2957         Old UI. No longer needed.
2958
2959         * UserInterface/Views/TimelineDataGridNode.js:
2960         (WebInspector.TimelineDataGridNode.prototype.filterableDataForColumn):
2961         Filter strings for SourceCodeLocation and CallFrame objects.
2962
2963         * UserInterface/Views/TimelineRecordingContentView.js:
2964         (WebInspector.TimelineRecordingContentView):
2965         Listen for FilterBar changes and TimelineView record filtering.
2966         (WebInspector.TimelineRecordingContentView.prototype._filterDidChange):
2967         Update grid filters when filter bar changes.
2968         (WebInspector.TimelineRecordingContentView.prototype._recordWasFiltered):
2969         Update overview when records are filtered/unfiltered.
2970         (WebInspector.TimelineRecordingContentView.prototype.filterDidChange): Deleted.
2971         (WebInspector.TimelineRecordingContentView.prototype.recordWasFiltered): Deleted.
2972         (WebInspector.TimelineRecordingContentView.prototype.matchTreeElementAgainstCustomFilters.checkTimeBounds): Deleted.
2973         (WebInspector.TimelineRecordingContentView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
2974         Re-implemented in DataGrid.
2975         (WebInspector.TimelineRecordingContentView.prototype._updateTimes): Deleted.
2976         FIXME comment removed. Filtering occurs when TimelineView times are updated.
2977         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged): Deleted.
2978
2979         * UserInterface/Views/TimelineView.js:
2980         (WebInspector.TimelineView):
2981         (WebInspector.TimelineView.prototype.get navigationItems):
2982         Used by TimelineRecordingContentView to add scope bar items to the
2983         lower content browser's navigation bar.
2984
2985         (WebInspector.TimelineView.prototype.set startTime):
2986         (WebInspector.TimelineView.prototype.set endTime):
2987         (WebInspector.TimelineView.prototype.set currentTime):
2988         Update grid filter when recording times change.
2989         (WebInspector.TimelineView.prototype.get filterStartTime):
2990         (WebInspector.TimelineView.prototype.get filterEndTime):
2991         Let subclasses (RenderingFrameTimelineView) provide filter start/end times.
2992         (WebInspector.TimelineView.prototype.setupDataGrid):
2993         Register the grid used by the TimelineView subclass, allowing the base
2994         class to hook into common event listeners and provide boilerplate functionality.
2995
2996         (WebInspector.TimelineView.prototype.updateFilter):
2997         For data grid views, updates grid filters and sets new filter text.
2998         (WebInspector.TimelineView.prototype.matchDataGridNodeAgainstCustomFilters):
2999         (WebInspector.TimelineView.prototype.dataGridMatchNodeAgainstCustomFilters.checkTimeBounds):
3000         (WebInspector.TimelineView.prototype.dataGridMatchNodeAgainstCustomFilters):
3001         DataGrid filter delegate. Lets subclasses apply custom filters first,
3002         then filters based on ruler selection if needed.
3003
3004         (WebInspector.TimelineView.prototype.filterDidChange):
3005         Hook for subclasses to respond to filter changes.
3006         (WebInspector.TimelineView.prototype._filterTimesDidChange.delayedWork):
3007         (WebInspector.TimelineView.prototype._filterTimesDidChange):
3008         Helper function for coalescing ruler selection updates into a single
3009         filter update.
3010
3011         (WebInspector.TimelineView.prototype.matchTreeElementAgainstCustomFilters): Deleted.
3012         (WebInspector.TimelineView.prototype.filterUpdated): Deleted.
3013         No longer needed.
3014
3015 2016-04-25  Joseph Pecoraro  <pecoraro@apple.com>
3016
3017         Web Inspector: React.js JSXTransformer produces bogus error locations
3018         https://bugs.webkit.org/show_bug.cgi?id=150010
3019         <rdar://problem/23062233>
3020
3021         Reviewed by Timothy Hatcher.
3022
3023         Show dynamically added <script> elements added to a frame as resources.
3024         For cases where the scripts had source map resources or error messages
3025         we have a root from which to associate them to.
3026
3027         * Localizations/en.lproj/localizedStrings.js:
3028         "Script Element %d" tree element title.
3029
3030         * UserInterface/Models/Frame.js:
3031         (WebInspector.Frame.prototype.commitProvisionalLoad):
3032         (WebInspector.Frame.prototype.get extraScripts):
3033         (WebInspector.Frame.prototype.addExtraScript):
3034         Have a frame keep a list of its extra scripts.
3035
3036         * UserInterface/Models/Script.js:
3037         (WebInspector.Script):
3038         (WebInspector.Script.prototype.get displayName):
3039         (WebInspector.Script.prototype.get dynamicallyAddedScriptElement):
3040         Identify dynamically added script elements and associate them
3041         with the frame, instead of the frame's main resource.
3042
3043         * UserInterface/Views/FrameTreeElement.js:
3044         (WebInspector.FrameTreeElement.prototype.onpopulate):
3045         (WebInspector.FrameTreeElement.prototype._extraScriptAdded):
3046         Show named / source mapped dynamic script elements under a frame.
3047
3048         * UserInterface/Views/ResourceSidebarPanel.js:
3049         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
3050         Dynamically added script element Scripts will be added by the frame that
3051         owns them.
3052
3053         * UserInterface/Views/ScriptTreeElement.js:
3054         (WebInspector.ScriptTreeElement):
3055         Don't include a subtitle for dynamicallyAddedScriptElement, details match
3056         the frame that owns them.
3057
3058 2016-04-25  Joseph Pecoraro  <pecoraro@apple.com>
3059
3060         Web Inspector: Line error widget showed in the wrong resource
3061         https://bugs.webkit.org/show_bug.cgi?id=150009
3062         <rdar://problem/23062199>
3063
3064         Reviewed by Timothy Hatcher.
3065
3066         This addresses a few long standing issues:
3067
3068             - IssueMessage and ConsoleMessage should not fight eachother
3069             - Displayed issue messages now correctly have format string formatting, e.g. console.error("Foo %s", str)
3070             - IssueMessage wraps a ConsoleMessage, so we don't duplicate everything
3071             - Gives ConsoleMessage a sourceCodeLocation (lazy)
3072                 - Since a sourceCodeLocation can have the exact SourceCode, if it was a Script
3073                   without a Resource, we can only show the error in the Script's editor.            
3074
3075         * UserInterface/Models/CallFrame.js:
3076         (WebInspector.CallFrame.fromPayload):
3077         Prefer the script identifier lookup first. And from the Script go
3078         to a resource if possible. This allows us to distinguish a location
3079         that should be in a Script that doesn't have a Resource when there
3080         exists a Resource with the same URL. This will soon be the case
3081         for dyanamic <script> elements append to a document.
3082
3083         * UserInterface/Controllers/IssueManager.js:
3084         (WebInspector.IssueManager.issueMatchSourceCode):
3085         Consolidate all the different checks to this one function.
3086
3087         (WebInspector.IssueManager.prototype.issueWasAdded):
3088         Create IssueMessages with ConsoleMessages.
3089
3090         (WebInspector.IssueManager.prototype.issuesForSourceCode):
3091         Simplify now that we have the better check.
3092
3093         * UserInterface/Controllers/LogManager.js:
3094         (WebInspector.LogManager.prototype.messageWasAdded):
3095         Once a ConsoleMessage has been created (and modified `parameters` for us)
3096         create the IssueMessage if it was an issue.
3097
3098         * UserInterface/Models/ConsoleMessage.js:
3099         (WebInspector.ConsoleMessage.prototype.get sourceCodeLocation):
3100         Lazily create a source code from the best possible location. This can
3101         be the top call frame or the url/line/column combination.
3102
3103         * UserInterface/Models/IssueMessage.js:
3104         (WebInspector.IssueMessage):
3105         Creation and most properties just call through to a ConsoleMessage.
3106         The `type` and `text` are Issue specific. Anything that uses location
3107         data should use the sourceCodeLocation.
3108         
3109         (WebInspector.IssueMessage.prototype.saveIdentityToCookie):
3110         Fix implementation that didn't account for a null sourceCodeLocation.
3111
3112         (WebInspector.IssueMessage.prototype._formatTextIfNecessary):
3113         Basic text format message formatting.
3114
3115         * UserInterface/Protocol/ConsoleObserver.js:
3116         (WebInspector.ConsoleObserver.prototype.messageAdded):
3117         No longer call IssueMessage from the observer. Let LogManager trigger issues.
3118
3119         * UserInterface/Views/ContentView.js:
3120         (WebInspector.ContentView.createFromRepresentedObject):
3121         (WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject):
3122         (WebInspector.ContentView.isViewable):
3123         An IssueMessage represented object for an IssueMessageTreeElement should be
3124         restorable by just going to the sourceCodeLocation it references. This is
3125         identical to a Breakpoint.
3126
3127         * UserInterface/Views/IssueTreeElement.js:
3128         (WebInspector.IssueTreeElement.prototype._updateTitles):
3129         (WebInspector.IssueTreeElement):
3130         * UserInterface/Views/ResourceContentView.js:
3131         (WebInspector.ResourceContentView.prototype._issueWasAdded):
3132         * UserInterface/Views/SourceCodeTextEditor.js:
3133         (WebInspector.SourceCodeTextEditor.prototype._issueWasAdded):
3134         (WebInspector.SourceCodeTextEditor.prototype._addIssue):
3135         (WebInspector.SourceCodeTextEditor.prototype._reinsertAllIssues):
3136         (WebInspector.SourceCodeTextEditor.prototype._matchesIssue): Deleted.
3137         Update to use Issue's sourceCodeLocation or IssueManager's new APIs.
3138
3139 2016-04-24  Matt Baker  <mattbaker@apple.com>
3140
3141         Web Inspector: Can't sort by name/source code location columns in Timeline data grids
3142         https://bugs.webkit.org/show_bug.cgi?id=156965
3143         <rdar://problem/25898716>
3144
3145         Reviewed by Timothy Hatcher.
3146
3147         Add support for sorting SourceCodeLocation objects to TimelineDataGrid,
3148         and include a grid delegate so that views can extend sorting logic for
3149         other document fragment columns.
3150
3151         * UserInterface/Views/NetworkTimelineView.js:
3152         (WebInspector.NetworkTimelineView):
3153         (WebInspector.NetworkTimelineView.prototype.dataGridSortComparator):
3154         Sort "name" column by display name first, then resource URL.
3155
3156         * UserInterface/Views/ScriptDetailsTimelineView.js:
3157         (WebInspector.ScriptDetailsTimelineView):
3158         (WebInspector.ScriptDetailsTimelineView.prototype.dataGridSortComparator):
3159         Sort "name" column by display name first, then subtitle.
3160
3161         * UserInterface/Views/ScriptTimelineDataGridNode.js:
3162         (WebInspector.ScriptTimelineDataGridNode.prototype.get subtitle):
3163         Make subtitle accessible externally for sorting.
3164         (WebInspector.ScriptTimelineDataGridNode.prototype._createNameCellDocumentFragment):
3165         (WebInspector.ScriptTimelineDataGridNode):
3166
3167         * UserInterface/Views/TimelineDataGrid.js:
3168         (WebInspector.TimelineDataGrid):
3169         (WebInspector.TimelineDataGrid.prototype.get sortDelegate):
3170         (WebInspector.TimelineDataGrid.prototype.set sortDelegate):
3171         Fire a SortChanged event if the delegate changed and the grid is sorted.
3172         (WebInspector.TimelineDataGrid.prototype._sort):
3173         If a sort delegate exists, and it returns a numeric value, skip the
3174         default compare.
3175
3176         (WebInspector.TimelineDataGrid.prototype._sortComparator):
3177         Add support for sorting SourceCodeLocation columns.
3178
3179 2016-04-24  Matt Baker  <mattbaker@apple.com>
3180
3181         Web Inspector: Error when selecting a bar in the Frames timeline
3182         https://bugs.webkit.org/show_bug.cgi?id=156960
3183         <rdar://problem/25897955>
3184
3185         Reviewed by Timothy Hatcher.
3186
3187         Fixes timeline grid node selection when record selected in the overview.
3188         Adds general purpose `findNode` method to DataGrid.
3189
3190         * UserInterface/Views/DataGrid.js:
3191         (WebInspector.DataGrid.prototype.findNode):
3192         Basic find function for locating a grid node in linear time.
3193
3194         * UserInterface/Views/TimelineRecordingContentView.js:
3195         (WebInspector.TimelineRecordingContentView.prototype._recordSelected):
3196         Remove tree outline references, call generic select method.
3197
3198         * UserInterface/Views/TimelineView.js:
3199         (WebInspector.TimelineView.prototype.selectRecord):
3200         If a data grid was set, deselect current selection and select the node
3201         associated with the timeline record.
3202
3203 2016-04-24  Matt Baker  <mattbaker@apple.com>
3204
3205         Web Inspector: Events in JavaScript & Events timeline have no profile children
3206         https://bugs.webkit.org/show_bug.cgi?id=156627
3207         <rdar://problem/25749740>
3208
3209         Reviewed by Timothy Hatcher.
3210
3211         ProfileNodeDataGridNode should handle `populate` events when expanded.
3212         This was previously done by ProfileNodeTreeElement, which is no longer
3213         used in the Timelines tab.
3214
3215         * UserInterface/Views/ProfileDataGridNode.js:
3216         (WebInspector.ProfileDataGridNode.prototype._updateChildrenForModifiers):
3217         (WebInspector.ProfileDataGridNode.prototype._populate):
3218         (WebInspector.ProfileDataGridNode):
3219         DataGridNode sets `shouldRefreshChildren` to false after populating
3220         child nodes. No need to track with a separate flag.
3221
3222         * UserInterface/Views/ProfileNodeDataGridNode.js:
3223         (WebInspector.ProfileNodeDataGridNode):
3224         (WebInspector.ProfileNodeDataGridNode.prototype._populate):
3225
3226 2016-04-22  Matt Baker  <mattbaker@apple.com>
3227
3228         Web Inspector: HeapAllocationsTimeline grid should use built-in grid column icons
3229         https://bugs.webkit.org/show_bug.cgi?id=156934
3230
3231         Reviewed by Timothy Hatcher.
3232
3233         * UserInterface/Views/HeapAllocationsTimelineDataGridNode.js:
3234         (WebInspector.HeapAllocationsTimelineDataGridNode):
3235         Use existing base class helper function to create main title text.
3236         (WebInspector.HeapAllocationsTimelineDataGridNode.prototype.createCellContent):
3237         Add icon class names to cell, remove icon element.
3238
3239         * UserInterface/Views/HeapAllocationsTimelineView.js:
3240         (WebInspector.HeapAllocationsTimelineView):
3241         Turn on icons for the column.
3242
3243 2016-04-22  Timothy Hatcher  <timothy@apple.com>
3244
3245         Change an assert to a warn based on post review feedback.
3246
3247         https://bugs.webkit.org/show_bug.cgi?id=156919
3248         rdar://problem/25857118
3249
3250         Rubber-stamped by Joseph Pecoraro.
3251
3252         * UserInterface/Controllers/DebuggerManager.js:
3253         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
3254
3255 2016-04-22  Timothy Hatcher  <timothy@apple.com>
3256
3257         Web Inspector: Debugger statement in console does not provide any call frames and debugger UI is confused
3258
3259         https://bugs.webkit.org/show_bug.cgi?id=156919
3260         rdar://problem/25857118
3261
3262         This makes console expressions show up in the Debugger tab sidebar if a ScriptContentView is shown for them.
3263         We now also show call frames that originate from a console expression, so the call frames in the sidebar is not empty.
3264         Also fix a bug where when there are no call frames we auto resume the debugger and don't leave it in a broken state.
3265
3266         Reviewed by Joseph Pecoraro.
3267
3268         * Localizations/en.lproj/localizedStrings.js: Updated.
3269
3270         * UserInterface/Base/Utilities.js:
3271         (appendWebInspectorSourceURL): Don't append if another sourceURL is already added.
3272         (appendWebInspectorConsoleEvaluationSourceURL): Added.
3273         (isWebInspectorConsoleEvaluationScript): Added.
3274         (isWebKitInternalScript): Return false for isWebInspectorConsoleEvaluationScript().
3275
3276         * UserInterface/Controllers/DebuggerManager.js:
3277         (WebInspector.DebuggerManager.prototype.debuggerDidPause): Resume if call frames is empty. This is not as common now
3278         since console expression call frames are not skipped.
3279         (WebInspector.DebuggerManager.prototype.scriptDidParse): Change an early return for isWebInspectorInternalScript() that
3280         was skipping adding internal scripts to the known script lists, but it should only do that when the debug UI is disabled.
3281
3282         * UserInterface/Controllers/JavaScriptLogViewController.js:
3283         (WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
3284         Call appendWebInspectorConsoleEvaluationSourceURL so the console expressions are tagged before evaluateInInspectedWindow
3285         added the internal sourceURL name.
3286
3287         * UserInterface/Models/Script.js:
3288         (WebInspector.Script): Assign unique identifiers to console scripts so they are named correctly.
3289         (WebInspector.Script.resetUniqueDisplayNameNumbers): Reset _nextUniqueConsoleDisplayNameNumber.
3290         (WebInspector.Script.prototype.get displayName): Special case console expressions with a better name.
3291
3292         * UserInterface/Views/DebuggerSidebarPanel.js:
3293         (WebInspector.DebuggerSidebarPanel.prototype.treeElementForRepresentedObject): Add a script tree element on demand
3294         like the ResourceSidebarPanel does for anonymous scripts.
3295         (WebInspector.DebuggerSidebarPanel.prototype._addScript): Return treeElement so treeElementForRepresentedObject can use it.
3296
3297 2016-04-21  Joseph Pecoraro  <pecoraro@apple.com>
3298
3299         Web Inspector: sourceMappingURL not loaded in generated script
3300         https://bugs.webkit.org/show_bug.cgi?id=156022
3301         <rdar://problem/25438595>
3302
3303         Reviewed by Geoffrey Garen.
3304
3305         * UserInterface/Controllers/SourceMapManager.js:
3306         (WebInspector.SourceMapManager.prototype.downloadSourceMap):
3307         If the sourceMapURL is a dataURL at this point, we can just pass it on,
3308         otherwise we would have returned and skipped it.
3309         
3310         * UserInterface/Models/CallFrame.js:
3311         (WebInspector.CallFrame.fromPayload):
3312         Add handling for "scriptId" if it is available in the Console.CallFrame.
3313         Don't automatically mark CallFrames that didn't have a "url" as native,
3314         instead try to get a SourceCode.
3315
3316         * UserInterface/Models/Script.js:
3317         (WebInspector.Script.prototype.get displayURL):
3318         Used by SourceCodeLocation formatting, so behave more like Resources
3319         when we have only have a sourceURL name. This produces output like:
3320         "foo.js:#:#" instead of "foo.js (line #:#)"
3321
3322         (WebInspector.Script.prototype.get anonymous):
3323         Easy accessor to see if this would be treated as anonymous or not.
3324
3325         * UserInterface/Models/SourceMap.js:
3326         (WebInspector.SourceMap.prototype.get sourceMappingBasePathURLComponents):
3327         Gracefully handle no path.
3328
3329         * UserInterface/Models/StackTrace.js:
3330         (WebInspector.StackTrace.prototype.get firstNonNativeCallFrame):
3331         (WebInspector.StackTrace.prototype.get firstNonNativeNonAnonymousCallFrame):
3332         * UserInterface/Views/ConsoleMessageView.js:
3333         (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
3334         Now that "Eval Code" with a sourceURL is no longer native, we still don't
3335         want to show it in the Web Inspector if it is anonymous. So include a stricter
3336         version that skips native and anonymous call frames.
3337
3338 2016-04-21  Joseph Pecoraro  <pecoraro@apple.com>
3339
3340         Web Inspector: Debugger statement gets a space after it when pretty printed
3341         https://bugs.webkit.org/show_bug.cgi?id=156867
3342         <rdar://problem/25862308>
3343
3344         Reviewed by Geoffrey Garen.
3345
3346         * Tools/Formatting/index.html:
3347         * UserInterface/Workers/Formatter/EsprimaFormatter.js:
3348         (EsprimaFormatter.prototype._handleTokenAtNode):
3349         Handle the unhandled DebuggerStatement node type.
3350
3351 2016-04-20  Joseph Pecoraro  <pecoraro@apple.com>
3352
3353         Web Inspector: console.table(navigator) throws exception about `rowPreview.propertyPreviews.length`
3354         https://bugs.webkit.org/show_bug.cgi?id=156698
3355         <rdar://problem/25778244>
3356
3357         Reviewed by Timothy Hatcher.
3358
3359         * UserInterface/Views/ConsoleMessageView.js:
3360         (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
3361         Handle a row with a value preview but no sub-property previews (a function).
3362
3363 2016-04-19  Timothy Hatcher  <timothy@apple.com>
3364
3365         Web Inspector: Use debounce proxies in a couple more places
3366
3367         https://bugs.webkit.org/show_bug.cgi?id=156759
3368
3369         Reviewed by Joseph Pecoraro.
3370
3371         * UserInterface/Views/ContentBrowser.js:
3372         (WebInspector.ContentBrowser.prototype._dispatchCurrentRepresentedObjectsDidChangeEvent):
3373         (WebInspector.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
3374         (WebInspector.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
3375         (WebInspector.ContentBrowser.prototype._dispatchCurrentRepresentedObjectsDidChangeEventSoon): Deleted.
3376         * UserInterface/Views/DOMTreeUpdater.js:
3377         (WebInspector.DOMTreeUpdater.prototype._attributesUpdated):
3378         (WebInspector.DOMTreeUpdater.prototype._characterDataModified):
3379         (WebInspector.DOMTreeUpdater.prototype._nodeInserted):
3380         (WebInspector.DOMTreeUpdater.prototype._nodeRemoved):
3381         (WebInspector.DOMTreeUpdater.prototype._updateModifiedNodes):
3382         (WebInspector.DOMTreeUpdater.prototype._updateModifiedNodesSoon): Deleted.
3383         * UserInterface/Views/NavigationSidebarPanel.js:
3384         (WebInspector.NavigationSidebarPanel):
3385         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
3386         (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
3387         (WebInspector.NavigationSidebarPanel.prototype._treeElementDisclosureDidChange):
3388         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibilitySoon): Deleted.
3389
3390 2016-04-19  Timothy Hatcher  <timothy@apple.com>
3391
3392         Web Inspector: Make debounce use an ES6 Proxy
3393
3394         https://bugs.webkit.org/show_bug.cgi?id=156756
3395         rdar://problem/25809771
3396
3397         Reviewed by Joseph Pecoraro.
3398
3399         * UserInterface/Base/Utilities.js:
3400         (Object.prototype.soon): Added.
3401         (Object.prototype.debounce): Added.
3402         (Function.prototype.debounce): Deleted.
3403         (Function.prototype.cancelDebounce): Added.
3404
3405         * UserInterface/Views/BezierEditor.js:
3406         (WebInspector.BezierEditor.createBezierInput): Use new debounce proxy.
3407         * UserInterface/Views/VisualStyleBackgroundPicker.js:
3408         (WebInspector.VisualStyleBackgroundPicker): Ditto.
3409         * UserInterface/Views/VisualStyleURLInput.js:
3410         (WebInspector.VisualStyleURLInput): Ditto.
3411
3412 2016-04-19  Joseph Pecoraro  <pecoraro@apple.com>
3413
3414         Web Inspector: Picking Snapshot from navigation bar popup does to switch views
3415         https://bugs.webkit.org/show_bug.cgi?id=156762
3416
3417         Reviewed by Timothy Hatcher.
3418
3419         * UserInterface/Views/TimelineDataGridNodePathComponent.js:
3420         (WebInspector.TimelineDataGridNodePathComponent.prototype.get previousSibling):
3421         (WebInspector.TimelineDataGridNodePathComponent.prototype.get nextSibling):
3422         Wrong represented object provided by TimelineDataGridNodePathComponent.
3423
3424 2016-04-18  Timothy Hatcher  <timothy@apple.com>
3425
3426         Web Inspector: DataGrid should be virtualized so it only renders visible rows
3427
3428         https://bugs.webkit.org/show_bug.cgi?id=156663
3429         rdar://problem/25765256
3430
3431         Reviewed by Joseph Pecoraro.
3432
3433         * UserInterface/Views/ComputedStyleDetailsPanel.js:
3434         (WebInspector.ComputedStyleDetailsPanel.prototype.set containerRegions):
3435         Call updateLayoutIfNeeded since we don't use views here.
3436
3437         * UserInterface/Views/ConsoleMessageView.js:
3438         (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
3439         Set inline and variableHeightRows to true, remove direct classList add. Call updateLayoutIfNeeded since we don't use views here.
3440
3441         * UserInterface/Views/DOMTreeDataGrid.js:
3442         (WebInspector.DOMTreeDataGrid):
3443         Set inline to true, remove direct classList add.
3444
3445         * UserInterface/Views/DataGrid.css:
3446         (.data-grid td):
3447         (.data-grid table.data):
3448         (.data-grid:not(.variable-height-rows) table.data):
3449         (.data-grid:not(.variable-height-rows) table.data.odd-first-zebra-stripe):
3450         (.data-grid.variable-height-rows table.data tr:nth-child(odd)):
3451         (.data-grid.variable-height-rows table.data tr:nth-child(even)):
3452         (.data-grid.variable-height-rows.odd-first-zebra-stripe table.data tr:nth-child(odd)):
3453         (.data-grid.variable-height-rows.odd-first-zebra-stripe table.data tr:nth-child(even)):
3454         (.data-grid.variable-height-rows table.data tr.filler):
3455         Updated styles to support variable height rows directly and flipping the order of the stripes
3456         when the virtual table starts at an odd row.
3457
3458         * UserInterface/Views/DataGrid.js:
3459         (WebInspector.DataGrid): Added rowHeight and rows.
3460         (WebInspector.DataGrid.prototype.get inline): Added.
3461         (WebInspector.DataGrid.prototype.set inline): Added.
3462         (WebInspector.DataGrid.prototype.get variableHeightRows): Added.
3463         (WebInspector.DataGrid.prototype.set variableHeightRows): Added.
3464         (WebInspector.DataGrid.prototype.layout): Call _updateVisibleRows.
3465         (WebInspector.DataGrid.prototype._noteRowsChanged): Added.
3466         (WebInspector.DataGrid.prototype._updateVisibleRows): Added.
3467         (WebInspector.DataGrid.prototype._sortNodesCallback): Update to not use the DOM.
3468         (WebInspector.DataGridNode.prototype.set hasChildren): Call needsLayout.
3469         (WebInspector.DataGridNode.prototype.collapse): Call needsLayout.
3470         (WebInspector.DataGridNode.prototype.expand): Call needsLayout.
3471         (WebInspector.DataGridNode.prototype._attach): Call _noteRowsChanged.
3472         (WebInspector.DataGridNode.prototype._detach): Call _noteRowsChanged.
3473
3474         * UserInterface/Views/DatabaseUserQuerySuccessView.js:
3475         (WebInspector.DatabaseUserQuerySuccessView):
3476         Set inline to true, remove direct classList add. Call updateLayoutIfNeeded since we don't use views here.
3477
3478         * UserInterface/Views/DetailsSection.css:
3479         (.details-section > .content .data-grid td.value-column):
3480         (.details-section > .content .data-grid table.data): Deleted.
3481         (.details-section > .content .data-grid tr:nth-child(even)): Deleted.
3482         (.details-section > .content .data-grid tr:nth-child(odd)): Deleted.
3483         Now handled by DataGrid.css directly.
3484
3485         * UserInterface/Views/DetailsSectionDataGridRow.js:
3486         (WebInspector.DetailsSectionDataGridRow.prototype.set dataGrid):
3487         Set inline and variableHeightRows to true, remove direct classList add. Call updateLayoutIfNeeded since we don't use views here.
3488
3489         * UserInterface/Views/HeapSnapshotInstancesContentView.css:
3490         (.heap-snapshot > .data-grid tr:matches(.selected, :hover) td .go-to-arrow):
3491         (.heap-snapshot .icon):
3492         Remove margin-top to fit inside 20px row instead of 21px.
3493
3494         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.css:
3495         (.content-view.indexed-database-object-store > .data-grid table.data): Deleted.
3496         (.content-view.indexed-database-object-store > .data-grid table.data tr:nth-child(even)): Deleted.
3497         (.content-view.indexed-database-object-store > .data-grid table.data tr:nth-child(odd)): Deleted.
3498         (.content-view.indexed-database-object-store > .data-grid table.data tr.filler): Deleted.
3499         Now handled by DataGrid.css directly.
3500
3501         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
3502         (WebInspector.IndexedDatabaseObjectStoreContentView):
3503         Set variableHeightRows to true.
3504
3505         * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
3506         (WebInspector.LayerTreeDetailsSidebarPanel.prototype._buildDataGridSection):
3507         Set inline to true, remove direct classList add. Call updateLayoutIfNeeded since we don't use views here.
3508
3509         * UserInterface/Views/LogContentView.css:
3510         (.console-item .data-grid table.data): Deleted.
3511         (.console-item .data-grid table.data tr:nth-child(even)): Deleted.
3512         Now handled by DataGrid.css directly.
3513
3514         * UserInterface/Views/NetworkGridContentView.css:
3515         (.content-view.network-grid > .data-grid td): Deleted.
3516         (.content-view.network-grid > .data-grid table.data): Deleted.
3517         Now handled by DataGrid.css directly.
3518
3519         * UserInterface/Views/ProbeSetDataGrid.js:
3520         (WebInspector.ProbeSetDataGrid):
3521         Set inline to true, remove direct classList add.
3522
3523         * UserInterface/Views/ProfileView.css:
3524         (.profile > .data-grid td .icon):
3525         (.profile > .data-grid tr:matches(.selected, :hover) .go-to-arrow):
3526         Remove margin-top to fit inside 20px row instead of 21px.
3527
3528         * UserInterface/Views/TimelineRecordingContentView.css:
3529         (.content-view.timeline-recording > .content-browser > .content-view-container > .timeline-view > .data-grid td): Deleted.
3530         (.content-view.timeline-recording > .content-browser > .content-view-container > .timeline-view > .data-grid table.data): Deleted.
3531         Now handled by DataGrid.css directly.
3532
3533         * UserInterface/Views/Variables.css:
3534         (:root): Added zebra stripe colors.
3535
3536 2016-04-19  Joseph Pecoraro  <pecoraro@apple.com>
3537
3538         REGRESSION (r199635) Web Inspector: Percentages in Heap Allocations view are too large
3539         https://bugs.webkit.org/show_bug.cgi?id=156729
3540         <rdar://problem/25796002>
3541
3542         Reviewed by Timothy Hatcher.
3543
3544         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
3545         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
3546         Fix callsite that failed to be updated once percentageString
3547         required 0..1 input instead of 0..100.
3548
3549 2016-04-18  Timothy Hatcher  <timothy@apple.com>
3550
3551         Web Inspector: NavigationSidebarPanel does a lot of style recalc and layout on busy sites
3552
3553         https://bugs.webkit.org/show_bug.cgi?id=156704
3554         rdar://problem/25778744
3555
3556         Reviewed by Brian Burg.
3557
3558         * UserInterface/Views/NavigationSidebarPanel.js:
3559         (WebInspector.NavigationSidebarPanel):
3560         (WebInspector.NavigationSidebarPanel.prototype._treeElementDisclosureDidChange):
3561         Use _updateContentOverflowShadowVisibilitySoon in more places so the style recalc
3562         and layout changes are coalesced into one action after all rapid fire calls.
3563
3564 2016-04-18  Timothy Hatcher  <timothy@apple.com>
3565
3566         Web Inspector: Database query result DataGrids have misaligned header columns
3567
3568         https://bugs.webkit.org/show_bug.cgi?id=156701
3569         rdar://problem/25778310
3570
3571         Reviewed by Brian Burg.
3572
3573         * UserInterface/Views/DataGrid.js:
3574         (WebInspector.DataGrid.prototype.autoSizeColumns): Set the width on the <col> element
3575         for the body table to match the <col> in the header.
3576
3577 2016-04-18  Timothy Hatcher  <timothy@apple.com>
3578
3579         Web Inspector: Fix the debounce function
3580
3581         https://bugs.webkit.org/show_bug.cgi?id=156696
3582         rdar://problem/25778133
3583
3584         Reviewed by Brian Burg.
3585
3586         * UserInterface/Base/Utilities.js:
3587         (Function.prototype.debounce): Store the timeout on the original function instead
3588         of the bound function. Also simplify the implementation with arrow functions
3589         and eliminate the bind altogether.
3590
3591 2016-04-16  Matt Baker  <mattbaker@apple.com>
3592
3593         Web Inspector: Adopt Number.prototype.toLocaleString For All Sizes and Times
3594         https://bugs.webkit.org/show_bug.cgi?id=152033
3595         <rdar://problem/23815589>
3596
3597         Reviewed by Timothy Hatcher.
3598
3599         Update string formatters to localize float and percentage strings. Hook up
3600         console message formatters to use String.standardFormatters so that console
3601         statements (e.g. console.log("%.3f", 3.14159)) are properly formatted.
3602
3603         * Localizations/en.lproj/localizedStrings.js:
3604         * UserInterface/Base/Utilities.js:
3605         (value):
3606         tokenizeFormatString should default to 6 digits when no precision
3607         sub-specifier is provided.
3608
3609         percentageString should localize formatting, and take a fraction value
3610         (0 to 1) instead of a percentage.
3611
3612         secondsToString should perform special-case formatting for zero values
3613         ("0ms") instead of the general purpose float formatter.
3614
3615         (value.d):
3616         Switch to parseInt to floor floating point values and support numeric strings.
3617         Return NaN instead of zero when passed a value that can't be converted to integer.
3618
3619         (value.f):
3620         Switch to parseFloat to support numeric strings, and localize formatting.
3621         Remove precision check, as it will never be less than zero. Return NaN
3622         instead of zero when passed a value that can't be converted to float.
3623
3624         (prettyFunctionName):
3625         Convert substitutions (an arguments object) to an array before calling join.
3626
3627         * UserInterface/Views/ConsoleMessageView.js:
3628         (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.floatFormatter):
3629         Use String.standardFormatters.f.
3630
3631         (WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.integerFormatter):
3632         Use String.standardFormatters.d.
3633
3634         * UserInterface/Views/LayoutTimelineDataGridNode.js:
3635         (WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
3636         (WebInspector.LayoutTimelineDataGridNode):
3637         Use integer formatting for pixel values.
3638
3639         * UserInterface/Views/ProfileDataGridNode.js:
3640         (WebInspector.ProfileDataGridNode.prototype._recalculateData):
3641         (WebInspector.ProfileDataGridNode.prototype._totalTimeContent):
3642         Treat percentage as a fraction from 0 to 1.
3643
3644         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
3645         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection):
3646         Use integer formatting for pixel values.
3647
3648 2016-04-16  Matt Baker  <mattbaker@apple.com>
3649
3650         Web Inspector: Network timeline grid nodes aren't refreshed on LoadingFinished
3651         https://bugs.webkit.org/show_bug.cgi?id=156666
3652         <rdar://problem/25765811>
3653
3654         Reviewed by Timothy Hatcher.
3655
3656         Fix a regression caused by the recent Timelines UI redesign, and
3657         reorder TimelineDataGrid's constructor arguments now that most
3658         timeline views no longer have an associated tree outline.
3659
3660         * UserInterface/Views/HeapAllocationsTimelineView.js:
3661         (WebInspector.HeapAllocationsTimelineView):
3662         * UserInterface/Views/LayoutTimelineView.js:
3663         (WebInspector.LayoutTimelineView):
3664         * UserInterface/Views/NetworkGridContentView.js:
3665         (WebInspector.NetworkGridContentView):
3666         * UserInterface/Views/NetworkTimelineView.js:
3667         (WebInspector.NetworkTimelineView):
3668         * UserInterface/Views/RenderingFrameTimelineView.js:
3669         (WebInspector.RenderingFrameTimelineView):
3670         * UserInterface/Views/ScriptDetailsTimelineView.js:
3671         (WebInspector.ScriptDetailsTimelineView):
3672         Reorder constructor parameters and omit optional treeOutline and
3673         synchronizerDelegate arguments when they aren't needed.
3674
3675         * UserInterface/Views/TimelineDataGrid.js:
3676         (WebInspector.TimelineDataGrid):
3677         Reorder constructor arguments so that treeOutline can be optional.
3678         (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
3679         Nodes should be refreshed and re-inserted in the data grid without
3680         requiring a grid synchronizer. If a synchronizer exists, re-insert
3681         the tree element for the node. Since the syncronizer is disabled the
3682         order of grid/tree operations doesn't matter.
3683
3684 2016-04-15  Joseph Pecoraro  <pecoraro@apple.com>
3685
3686         Web Inspector: sourceMappingURL not used when sourceURL is set
3687         https://bugs.webkit.org/show_bug.cgi?id=156021
3688         <rdar://problem/25438417>
3689
3690         Reviewed by Timothy Hatcher.
3691
3692         Previously Debugger.sourceParsed only providing the sourceURL, and
3693         wiping out the resourceURL, meant that a Script from a Resource that
3694         set a sourceURL directive would fail to be associated with its Resource.
3695
3696         This would result in duplicated tree elements in the Resources Sidebar,
3697         one for the Resource, and one for the Script. With the Script getting
3698         ultimately getting the SourceMap resources. However, since the frontend
3699         prefers Resources over Scripts when possible, an error that generated
3700         from the script would point to a location in the Resource, not following
3701         source maps.
3702
3703         By always providing the resource URL in Debugger.sourceParsed, a Script
3704         can better be associated with its Resource. The result is now a single
3705         shared tree element in the Resources Sidebar, and the Resource getting
3706         the SourceMap resources. Now the script error goes through the Resource
3707         to its SourceMap resources as we would expect.
3708
3709         * UserInterface/Protocol/DebuggerObserver.js:
3710         (WebInspector.DebuggerObserver):
3711         (WebInspector.DebuggerObserver.prototype.scriptParsed):
3712         We now have to handle two different signatures of scriptParsed. One
3713         for legacy, and one for non-legacy. Cache that value early on, since
3714         scriptParsed happens a lot.
3715
3716         * UserInterface/Protocol/InspectorBackend.js:
3717         (InspectorBackend.Agent.prototype.hasEventParameter):
3718         Runtime check a protocol event to see if it has a parameter. This
3719         is used to check if Debugger.sourceParsed is legacy or not based
3720         on if it has the legacy "hasSourceURL" parameter.
3721
3722         * UserInterface/Models/Script.js:
3723         (WebInspector.Script):
3724         (WebInspector.Script.prototype.get sourceURL):
3725         Treat sourceURL and url separately.
3726
3727         (WebInspector.Script.prototype.get displayName):
3728         Handle both the url and sourceURL in displayName.
3729
3730         * UserInterface/Controllers/DebuggerManager.js:
3731         (WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
3732         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
3733         (WebInspector.DebuggerManager.prototype.scriptDidParse):
3734         * UserInterface/Protocol/RemoteObject.js:
3735         (WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
3736         Update code that checks the sourceURL to explicitly use sourceURL.
3737
3738         * UserInterface/Controllers/SourceMapManager.js:
3739         (WebInspector.SourceMapManager.prototype.downloadSourceMap):
3740         For legacy backends, or in case we get a resource that has an incomplete
3741         baseURL, attempt to get an absolute URL based on the main resource.
3742
3743         * UserInterface/Views/DebuggerSidebarPanel.js:
3744         (WebInspector.DebuggerSidebarPanel.prototype._addScript):
3745         * UserInterface/Views/ResourceSidebarPanel.js:
3746         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
3747         Ignore scripts without a url or sourceURL.
3748
3749 2016-04-14  Joseph Pecoraro  <pecoraro@apple.com>
3750
3751         Web Inspector: Cleanup inspector/debugger tests
3752         https://bugs.webkit.org/show_bug.cgi?id=156619
3753
3754         Reviewed by Brian Burg.
3755
3756         * UserInterface/Base/Main.js:
3757         (WebInspector.loaded):
3758         * UserInterface/Controllers/DebuggerManager.js:
3759         Remove agent checks for agents that are always available.
3760
3761 2016-04-14  Joseph Pecoraro  <pecoraro@apple.com>
3762
3763         Web Inspector: Add a JavaScript Formatting test for template strings
3764         https://bugs.webkit.org/show_bug.cgi?id=156600
3765
3766         Reviewed by Brian Burg.
3767
3768         * Tools/Formatting/index.html:
3769
3770 2016-04-14  Carlos Garcia Campos  <cgarcia@igalia.com>
3771
3772         REGRESSION: Web Inspector: Remote inspector doesn't work
3773         https://bugs.webkit.org/show_bug.cgi?id=156543
3774
3775         Reviewed by Timothy Hatcher.
3776
3777         WebSocket connection is blocked by CSP, but needed by the remote web inspector to work, so allow connect to ws
3778         URLs from the web inspector. Also add stubs for zoomFactor and setZoomFactor to InspectorFrontendHostStub,
3779         required after r199396.
3780
3781         * UserInterface/Base/InspectorFrontendHostStub.js:
3782         (window.InspectorFrontendHost.WebInspector.InspectorFrontendHostStub.prototype.setZoomFactor):
3783         (window.InspectorFrontendHost.WebInspector.InspectorFrontendHostStub.prototype.zoomFactor):
3784         * UserInterface/Main.html:
3785
3786 2016-04-12  Brian Burg  <bburg@apple.com>
3787
3788         Web Inspector: save inspector's zoom factor as a persistent setting across sessions
3789         https://bugs.webkit.org/show_bug.cgi?id=156522
3790         <rdar://problem/25635774>
3791
3792         Reviewed by Timothy Hatcher.
3793
3794         * UserInterface/Base/Main.js:
3795         (WebInspector.loaded):
3796         Initialize the setting and immediately set the zoom before the frontend page loads.
3797
3798         (WebInspector._increaseZoom):
3799         (WebInspector._decreaseZoom):
3800         (WebInspector._resetZoom):
3801         Use the internal get/set method which updates the WebInspector.Setting.
3802
3803         (WebInspector._setZoomFactor):
3804         Added. Round-trip through the frontend host method in case it further clamps the value.
3805
3806         (WebInspector._zoomFactor):
3807         Added. Just return the setting, since there's no other way for zoom to have changed.
3808
3809 2016-04-12  Joseph Pecoraro  <pecoraro@apple.com>
3810
3811         Web Inspector: Show the normal Native icon for all Internal objects in Heap Snapshots
3812         https://bugs.webkit.org/show_bug.cgi?id=156513
3813
3814         Reviewed by Timothy Hatcher.
3815
3816         * UserInterface/Views/HeapSnapshotClusterContentView.js:
3817         (WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
3818         Show the native icon for internal objects.
3819
3820 2016-04-12  Joseph Pecoraro  <pecoraro@apple.com>
3821
3822         Web Inspector: Keyboard shortcut for "Inspect Element" only works when Web Inspector is open.
3823         https://bugs.webkit.org/show_bug.cgi?id=111193
3824         <rdar://problem/13325889>
3825
3826         Reviewed by Timothy Hatcher.
3827
3828         * UserInterface/Controllers/DOMTreeManager.js:
3829         (WebInspector.DOMTreeManager.prototype.set inspectModeEnabled):
3830         (WebInspector.DOMTreeManager.set inspectModeEnabled.callback):
3831         * UserInterface/Protocol/InspectorFrontendAPI.js:
3832         (InspectorFrontendAPI.setElementSelectionEnabled):
3833         Frontend API to enable element selection.
3834
3835 2016-04-12  Joseph Pecoraro  <pecoraro@apple.com>
3836
3837         Web Inspector: Should be able to expand Objects in Heap Allocations View to see exactly what it retains
3838         https://bugs.webkit.org/show_bug.cgi?id=156419
3839         <rdar://problem/25633863>
3840
3841         Reviewed by Timothy Hatcher.
3842
3843         * Localizations/en.lproj/localizedStrings.js:
3844         * UserInterface/Main.html:
3845         Remove strings, and fix sort.
3846
3847         * UserInterface/Models/HeapSnapshotRootPath.js:
3848         (WebInspector.HeapSnapshotRootPath.pathComponentForIndividualEdge):
3849         (WebInspector.HeapSnapshotRootPath.canPropertyNameBeDotAccess):
3850         (WebInspector.HeapSnapshotRootPath.prototype.appendPropertyName):
3851         (WebInspector.HeapSnapshotRootPath.prototype._canPropertyNameBeDotAccess):
3852         Provide a helper to get an path component string for an individual edge.
3853
3854         * UserInterface/Models/PropertyPreview.js:
3855         (WebInspector.PropertyPreview):
3856         Fix an assert that may have errantly fired for an empty string name.
3857
3858         * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
3859         (WebInspector.HeapSnapshotNodeProxy):
3860         (WebInspector.HeapSnapshotNodeProxy.deserialize):
3861         Include "hasChildren" property in the original proxy message.
3862
3863         (WebInspector.HeapSnapshotNodeProxy.prototype.retainedNodes):
3864         The method now also returns a list of edges for each of the retained nodes.
3865
3866         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
3867         (WebInspector.HeapSnapshotInstanceDataGridNode):
3868         (WebInspector.HeapSnapshotInstanceDataG