22ede4fd5ea3d1ea5c8c678428f9fef0953e8a48
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2016-03-08  Joseph Pecoraro  <pecoraro@apple.com>
2
3         Web Inspector: Make debugging Test.html easier
4         https://bugs.webkit.org/show_bug.cgi?id=155207
5
6         Reviewed by Brian Burg.
7
8         * UserInterface/Base/InspectorFrontendHostStub.js: Renamed from Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendHostStub.js.
9         (window.InspectorFrontendHost.WebInspector.InspectorFrontendHostStub.prototype.unbufferedLog):
10         Add new stub for test function.
11
12         * UserInterface/Main.html:
13         * UserInterface/Test.html:
14         Move the stub to the Base directory.
15
16 2016-03-08  Joseph Pecoraro  <pecoraro@apple.com>
17
18         Web Inspector: Add a way to create a Heap Snapshot
19         https://bugs.webkit.org/show_bug.cgi?id=155188
20
21         Reviewed by Brian Burg.
22
23         * UserInterface/Main.html:
24         * UserInterface/Test.html:
25         Add new Model resources.
26
27         * UserInterface/Models/HeapSnapshot.js: Added.
28         (WebInspector.HeapSnapshotClassCategory):
29         (WebInspector.HeapSnapshot):
30         (WebInspector.HeapSnapshot.fromPayload):
31         (WebInspector.HeapSnapshot.prototype.get rootNode):
32         (WebInspector.HeapSnapshot.prototype.get nodes):
33         (WebInspector.HeapSnapshot.prototype.get identifier):
34         (WebInspector.HeapSnapshot.prototype.get instances):
35         (WebInspector.HeapSnapshot.prototype.get categories):
36         (WebInspector.HeapSnapshot.prototype.get totalSize):
37         (WebInspector.HeapSnapshot.prototype.get totalObjectCount):
38         (WebInspector.HeapSnapshot.prototype.instancesWithClassName):
39         (WebInspector.HeapSnapshot.prototype.nodeWithObjectIdentifier):
40         * UserInterface/Models/HeapSnapshotEdge.js: Added.
41         (WebInspector.HeapSnapshotEdge):
42         (WebInspector.HeapSnapshotEdge.prototype.stringify):
43         * UserInterface/Models/HeapSnapshotNode.js: Added.
44         (WebInspector.HeapSnapshotNode):
45         Data structures for a HeapSnapshot.
46
47 2016-03-08  Joseph Pecoraro  <pecoraro@apple.com>
48
49         Web Inspector: Miscellaneous inspector fixes for typos / stale code
50         https://bugs.webkit.org/show_bug.cgi?id=155193
51
52         Reviewed by Timothy Hatcher.
53
54         * UserInterface/Models/SourceCodeLocation.js:
55         (WebInspector.SourceCodeLocation.prototype._locationString):
56         Fix whitespace.
57
58         * UserInterface/Views/ApplicationCacheFrameContentView.js:
59         (WebInspector.ApplicationCacheFrameContentView):
60         Remove unused class name.
61
62         * UserInterface/Views/SourceCodeTextEditor.js:
63         (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
64         Remove inferredName, as that was never sent by our backend and is getting removed.
65
66         * UserInterface/Views/TimelineRuler.js:
67         (WebInspector.TimelineRuler.prototype._handleMouseUp):
68         Fix variable name typo.
69
70 2016-03-08  Joseph Pecoraro  <pecoraro@apple.com>
71
72         Web Inspector: Images being blocked by CSP 2.0
73         https://bugs.webkit.org/show_bug.cgi?id=155182
74         <rdar://problem/25040640>
75
76         Reviewed by Daniel Bates.
77
78         * UserInterface/Main.html:
79         Allow Web Inspector to load file: and blob: image resources.
80         Also blob: media and font resources.
81
82 2016-03-06  Nikita Vasilyev  <nvasilyev@apple.com>
83
84         Web Inspector: Use half-pixel borders for data grids
85         https://bugs.webkit.org/show_bug.cgi?id=154437
86         <rdar://problem/24736365>
87
88         Reviewed by Timothy Hatcher.
89
90         * UserInterface/Views/DataGrid.css:
91         (.data-grid.inline):
92         (.data-grid th):
93         (.data-grid :matches(th, td):not(:last-child)):
94         Half-pixel borders round to 1px on 1x (non-retina) screens since r192444.
95
96         * UserInterface/Views/DataGrid.js:
97         (WebInspector.DataGrid.prototype._positionResizerElements):
98         Use getBoundingClientRect for better precision since it provides subpixel values.
99
100 2016-03-05  Joseph Pecoraro  <pecoraro@apple.com>
101
102         Web Inspector: Have separate path component for Script Timeline content views
103         https://bugs.webkit.org/show_bug.cgi?id=155075
104         <rdar://problem/24996564>
105
106         Reviewed by Timothy Hatcher.
107
108         * UserInterface/Images/CallTrees.svg: Added.
109         * UserInterface/Images/Events.svg: Added.
110         New icons based off of ResultLine.svg.
111
112         * UserInterface/Views/PathComponentIcons.css:
113         (.events-icon .icon):
114         (.call-trees-icon .icon):
115         (body:not(.mac-platform, .windows-platform) .call-trees-icon .icon):
116         Use the new icons and fallback to ResultLine.svg for other ports.
117
118         * UserInterface/Views/ScriptClusterTimelineView.js:
119         (WebInspector.ScriptClusterTimelineView):
120         (WebInspector.ScriptClusterTimelineView.prototype.get eventsContentView):
121         (WebInspector.ScriptClusterTimelineView.prototype.showEvents):
122         (WebInspector.ScriptClusterTimelineView.prototype.showProfile):
123         (WebInspector.ScriptClusterTimelineView.prototype._pathComponentForContentView):
124         (WebInspector.ScriptClusterTimelineView.prototype._identifierForContentView):
125         (WebInspector.ScriptClusterTimelineView.prototype._showContentViewForIdentifier):
126         (WebInspector.ScriptClusterTimelineView.prototype._scriptClusterViewCurrentContentViewDidChange):
127         (WebInspector.ScriptClusterTimelineView.prototype.get detailsContentView): Deleted.
128         (WebInspector.ScriptClusterTimelineView.prototype.showDetails): Deleted.
129         Rename "Details" to "Events".
130
131         * UserInterface/Views/TimelineRecordingContentView.js:
132         (WebInspector.TimelineRecordingContentView.prototype.contentBrowserTreeElementForRepresentedObject): Deleted.
133         Always include the top level "Details" component.
134
135 2016-03-05  Joseph Pecoraro  <pecoraro@apple.com>
136
137         Web Inspector: Add back support for a heavy / bottom up profile view
138         https://bugs.webkit.org/show_bug.cgi?id=140578
139         <rdar://problem/19506794>
140
141         Reviewed by Timothy Hatcher.
142
143         * Localizations/en.lproj/localizedStrings.js:
144         * UserInterface/Main.html:
145         New strings and resources.
146
147         * UserInterface/Base/Utilities.js:
148         (Number.secondsToMillisecondsString):
149         Helper for providing a consistent milliseconds string used in profiles.
150
151         * UserInterface/Controllers/TimelineManager.js:
152         (WebInspector.TimelineManager.prototype.scriptProfilerTrackingCompleted):
153         The calling context tree should be stored on a Recording, not on the global
154         TimelineManager. Also create two trees, one top down and one bottom up.
155
156         * UserInterface/Models/CallingContextTree.js:
157         (WebInspector.CallingContextTree):
158         (WebInspector.CallingContextTree.prototype.get type):
159         (WebInspector.CallingContextTree.prototype.get totalExecutionTime):
160         (WebInspector.CallingContextTree.prototype.reset):
161         (WebInspector.CallingContextTree.prototype.numberOfSamplesInTimeRange):
162         (WebInspector.CallingContextTree.prototype.increaseExecutionTime):
163         Give a CallingContextTree a type (TopDown / BottomUp) and some getters.
164
165         (WebInspector.CallingContextTree.prototype.updateTreeWithStackTrace):
166         Build a bottom up or top down tree from samples.
167
168         (WebInspector.CallingContextTree.prototype.forEachChild):
169         Allow iterating from the root.
170
171         (WebInspector.CCTNode):
172         (WebInspector.CCTNode.prototype.hasChildrenInTimeRange):
173         (WebInspector.CCTNode.prototype.numberOfLeafTimestamps):
174         (WebInspector.CCTNode.prototype.addTimestampAndExpressionLocation):
175         (WebInspector.CCTNode.prototype.equals):
176         (WebInspector.CCTNode.prototype.hasChildren): Deleted.
177         Give a CCTNode a list of leaf timestamps alongside the list of all timestamps.
178         Leaf timestamps will count as "self time" in a profile view.
179
180         * UserInterface/Models/SourceCodeLocation.js:
181         (WebInspector.SourceCodeLocation.prototype._locationString):
182         Nobody was using "ColumnStyle.Hidden" so repurpose it to be even simpler.
183
184         * UserInterface/Models/TimelineRecording.js:
185         (WebInspector.TimelineRecording):
186         (WebInspector.TimelineRecording.prototype.get topDownCallingContextTree):
187         (WebInspector.TimelineRecording.prototype.get bottomUpCallingContextTree):
188         (WebInspector.TimelineRecording.prototype.reset):
189         Store the two types of calling context trees and allow reseting them.
190
191         * UserInterface/Protocol/InspectorFrontendAPI.js:
192         (InspectorFrontendAPI.contextMenuItemSelected):
193         Helper for debugging uncaught exceptions in context menus.
194
195         * UserInterface/Views/ContentView.js:
196         (WebInspector.ContentView.createFromRepresentedObject):
197         (WebInspector.ContentView.isViewable):
198         A ScriptTimeline now has a cluster view.
199         A CallingContextTree now has a ProfileView.
200
201         * UserInterface/Views/DataGrid.js:
202         (WebInspector.DataGrid.prototype.insertChild):
203         (WebInspector.DataGrid.prototype._contextMenuInDataTable):
204         (WebInspector.DataGridNode.prototype.refreshRecursively):
205         (WebInspector.DataGridNode.prototype.elementWithColumnIdentifier):
206         (WebInspector.DataGridNode.prototype.forEachImmediateChild):
207         (WebInspector.DataGridNode.prototype.forEachChildInSubtree):
208         (WebInspector.DataGridNode.prototype.isInSubtreeOfNode):
209         Provide some helpers for iterating DataGridNodes, useful when the
210         actual DataGrid comes from a DataGridTree.
211
212         (WebInspector.DataGridNode.prototype.select):
213         (WebInspector.DataGridNode.prototype.deselect):
214         The indent width of DataGridNodes was not getting reset when a
215         node was removed and re-added to a tree due to a cached padding.
216
217         (WebInspector.DataGridNode.prototype.appendContextMenuItems):
218         Allow DataGridNodes to provide context menu items by overriding this method.
219
220         * UserInterface/Views/PathComponentIcons.css:
221         (.function-icon .icon):
222         (.native-icon .icon):
223         (.program-icon .icon):
224         Icons for profile nodes in path components.
225
226         * UserInterface/Views/ProfileDataGridNode.js: Added.
227         (WebInspector.ProfileDataGridNode):
228         (WebInspector.ProfileDataGridNode.prototype.get node):
229         (WebInspector.ProfileDataGridNode.prototype.displayName):
230         (WebInspector.ProfileDataGridNode.prototype.iconClassName):
231         (WebInspector.ProfileDataGridNode.prototype.get data):
232         (WebInspector.ProfileDataGridNode.prototype.createCellContent):
233         (WebInspector.ProfileDataGridNode.prototype.sort):
234         (WebInspector.ProfileDataGridNode.prototype.refresh):
235         (WebInspector.ProfileDataGridNode.prototype.appendContextMenuItems):
236         (WebInspector.ProfileDataGridNode.prototype._updateChildrenForModifiers):
237         (WebInspector.ProfileDataGridNode.prototype._recalculateData):
238         (WebInspector.ProfileDataGridNode.prototype._totalTimeContent):
239         (WebInspector.ProfileDataGridNode.prototype._displayContent):
240         (WebInspector.ProfileDataGridNode.prototype._populate):
241         CCTNode DataGridNode. A row in the ProfileDataGridTree. Handles
242         tree modifiers like charge to caller.
243
244         * UserInterface/Views/ProfileDataGridTree.js: Added.
245         (WebInspector.ProfileDataGridTree):
246         (WebInspector.ProfileDataGridTree.buildSortComparator):
247         (WebInspector.ProfileDataGridTree.prototype.get callingContextTree):
248         (WebInspector.ProfileDataGridTree.prototype.get sampleInterval):
249         (WebInspector.ProfileDataGridTree.prototype.get focusNodes):
250         (WebInspector.ProfileDataGridTree.prototype.get currentFocusNode):
251         (WebInspector.ProfileDataGridTree.prototype.get modifiers):
252         (WebInspector.ProfileDataGridTree.prototype.get startTime):
253         (WebInspector.ProfileDataGridTree.prototype.get endTime):
254         (WebInspector.ProfileDataGridTree.prototype.get numberOfSamples):
255         (WebInspector.ProfileDataGridTree.prototype.get children):
256         (WebInspector.ProfileDataGridTree.prototype.appendChild):
257         (WebInspector.ProfileDataGridTree.prototype.insertChild):
258         (WebInspector.ProfileDataGridTree.prototype.removeChildren):
259         (WebInspector.ProfileDataGridTree.prototype.set sortComparator):
260         (WebInspector.ProfileDataGridTree.prototype.sort):
261         (WebInspector.ProfileDataGridTree.prototype.refresh):
262         (WebInspector.ProfileDataGridTree.prototype.addFocusNode):
263         (WebInspector.ProfileDataGridTree.prototype.rollbackFocusNode):
264         (WebInspector.ProfileDataGridTree.prototype.clearFocusNodes):
265         (WebInspector.ProfileDataGridTree.prototype.hasModifiers):
266         (WebInspector.ProfileDataGridTree.prototype.addModifier):
267         (WebInspector.ProfileDataGridTree.prototype.clearModifiers):
268         (WebInspector.ProfileDataGridTree.prototype._repopulate):
269         (WebInspector.ProfileDataGridTree.prototype._focusChanged):
270         (WebInspector.ProfileDataGridTree.prototype._updateCurrentFocusDetails):
271         (WebInspector.ProfileDataGridTree.prototype._restoreFocusedNodeToOriginalParent):
272         (WebInspector.ProfileDataGridTree.prototype._modifiersChanged):
273         Start of a DataGridTree for a CallingContextTree.
274         Contains special logic for focused nodes and modifiers.
275
276         * UserInterface/Views/ProfileView.css: Added.
277         (.profile > .data-grid):
278         (.profile > .data-grid th):
279         (.profile > .data-grid td .icon):
280         (.profile > .data-grid td .percentage):
281         (.profile > .data-grid td .location):
282         (.profile > .data-grid:matches(:focus, .force-focus) tr.selected td .location):
283         (.profile > .data-grid td .icon.function-icon):
284         (.profile > .data-grid td .icon.native-icon):
285         (.profile > .data-grid td .icon.program-icon):
286         (.profile > .data-grid tr:matches(.selected, :hover) .go-to-arrow):
287         (.profile > .data-grid td.function-column):
288         (.profile > .data-grid td .guidance):
289         (.profile > .data-grid td .guidance.hover):
290         (.profile > .data-grid td .guidance.base):
291         (.profile > .data-grid tr:not(.expanded) td .guidance.base):
292         (.profile > .data-grid tr.expanded td .guidance.base):
293         * UserInterface/Views/ProfileView.js: Added.
294         (WebInspector.ProfileView):
295         (WebInspector.ProfileView.prototype.get callingContextTree):
296         (WebInspector.ProfileView.prototype.get startTime):
297         (WebInspector.ProfileView.prototype.get endTime):
298         (WebInspector.ProfileView.prototype.setStartAndEndTime):
299         (WebInspector.ProfileView.prototype.hasFocusNodes):
300         (WebInspector.ProfileView.prototype.clearFocusNodes):
301         (WebInspector.ProfileView.prototype.get selectionPathComponents):
302         (WebInspector.ProfileView.prototype._recreate):
303         (WebInspector.ProfileView.prototype._repopulateDataGridFromTree):
304         (WebInspector.ProfileView.prototype._pathComponentClicked):
305         (WebInspector.ProfileView.prototype._dataGridTreeFocusChanged):
306         (WebInspector.ProfileView.prototype._dataGridTreeModifiersChanged):
307         (WebInspector.ProfileView.prototype._dataGridSortChanged):
308         (WebInspector.ProfileView.prototype._dataGridNodeSelected):
309         (WebInspector.ProfileView.prototype._dataGridNodeExpanded):
310         (WebInspector.ProfileView.prototype._mouseOverDataGrid):
311         (WebInspector.ProfileView.prototype._mouseLeaveDataGrid):
312         (WebInspector.ProfileView.prototype._guidanceElementKey):
313         (WebInspector.ProfileView.prototype._removeGuidanceElement):
314         (WebInspector.ProfileView.prototype._appendGuidanceElement):
315         ProfileView holds a data grid which is populated from the data grid tree.
316         Special handing for guidance markers when hovering / selecting parts of the tree.
317
318         * UserInterface/Views/ScriptClusterTimelineView.js: Added.
319         (WebInspector.ScriptClusterTimelineView.createPathComponent):
320         (WebInspector.ScriptClusterTimelineView):
321         (WebInspector.ScriptClusterTimelineView.prototype.get zeroTime):
322         (WebInspector.ScriptClusterTimelineView.prototype.set zeroTime):
323         (WebInspector.ScriptClusterTimelineView.prototype.get startTime):
324         (WebInspector.ScriptClusterTimelineView.prototype.set startTime):
325         (WebInspector.ScriptClusterTimelineView.prototype.get endTime):
326         (WebInspector.ScriptClusterTimelineView.prototype.set endTime):
327         (WebInspector.ScriptClusterTimelineView.prototype.get currentTime):
328         (WebInspector.ScriptClusterTimelineView.prototype.set currentTime):
329         (WebInspector.ScriptClusterTimelineView.prototype.get navigationSidebarTreeOutline):
330         (WebInspector.ScriptClusterTimelineView.prototype.reset):
331         (WebInspector.ScriptClusterTimelineView.prototype.filterDidChange):
332         (WebInspector.ScriptClusterTimelineView.prototype.matchTreeElementAgainstCustomFilters):
333         (WebInspector.ScriptClusterTimelineView.prototype.get detailsContentView):
334         (WebInspector.ScriptClusterTimelineView.prototype.get profileContentView):
335         (WebInspector.ScriptClusterTimelineView.prototype.get selectionPathComponents):
336         (WebInspector.ScriptClusterTimelineView.prototype.saveToCookie):
337         (WebInspector.ScriptClusterTimelineView.prototype.restoreFromCookie):
338         (WebInspector.ScriptClusterTimelineView.prototype.showDetails):
339         (WebInspector.ScriptClusterTimelineView.prototype.showProfile):
340         (WebInspector.ScriptClusterTimelineView.prototype._pathComponentForContentView):
341         (WebInspector.ScriptClusterTimelineView.prototype._identifierForContentView):
342         (WebInspector.ScriptClusterTimelineView.prototype._showContentViewForIdentifier):
343         (WebInspector.ScriptClusterTimelineView.prototype._pathComponentSelected):
344         (WebInspector.ScriptClusterTimelineView.prototype._scriptClusterViewCurrentContentViewDidChange):
345         Script Timeline ClusterContentView. Toggle between the normal "Details" data grid
346         and the new "Call Tree" profile view. Currently the recording expects child content
347         views to be TimelineViews, this ClusterContentView forwards TimelineView relevant
348         methods to the real TimelineView children.
349
350         * UserInterface/Views/ScriptDetailsTimelineView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ScriptTimelineView.js.
351         (WebInspector.ScriptDetailsTimelineView):
352         (WebInspector.ScriptDetailsTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
353         (WebInspector.ScriptDetailsTimelineView.prototype.shown):
354         (WebInspector.ScriptDetailsTimelineView.prototype.hidden):
355         (WebInspector.ScriptDetailsTimelineView.prototype.closed):
356         (WebInspector.ScriptDetailsTimelineView.prototype.get selectionPathComponents):
357         (WebInspector.ScriptDetailsTimelineView.prototype.reset):
358         (WebInspector.ScriptDetailsTimelineView.prototype.canShowContentViewForTreeElement):
359         (WebInspector.ScriptDetailsTimelineView.prototype.showContentViewForTreeElement):
360         (WebInspector.ScriptDetailsTimelineView.prototype.treeElementPathComponentSelected):
361         (WebInspector.ScriptDetailsTimelineView.prototype.treeElementSelected):
362         (WebInspector.ScriptDetailsTimelineView.prototype.dataGridNodeForTreeElement):
363         (WebInspector.ScriptDetailsTimelineView.prototype.populateProfileNodeTreeElement):
364         (WebInspector.ScriptDetailsTimelineView.prototype.layout):
365         (WebInspector.ScriptDetailsTimelineView.prototype._processPendingRecords):
366         (WebInspector.ScriptDetailsTimelineView.prototype._scriptTimelineRecordAdded):
367         (WebInspector.ScriptDetailsTimelineView.prototype._scriptTimelineRecordRefreshed):
368         (WebInspector.ScriptDetailsTimelineView.prototype._dataGridFiltersDidChange):
369         (WebInspector.ScriptDetailsTimelineView.prototype._dataGridNodeSelected):
370         * UserInterface/Views/ScriptProfileTimelineView.js: Added.
371         (WebInspector.ScriptProfileTimelineView):
372         (WebInspector.ScriptProfileTimelineView.prototype.closed):
373         (WebInspector.ScriptProfileTimelineView.prototype.get navigationItems):
374         (WebInspector.ScriptProfileTimelineView.prototype.get selectionPathComponents):
375         (WebInspector.ScriptProfileTimelineView.prototype.layout):
376         (WebInspector.ScriptProfileTimelineView.prototype._callingContextTreeForOrientation):
377         (WebInspector.ScriptProfileTimelineView.prototype._profileViewSelectionPathComponentsDidChange):
378         (WebInspector.ScriptProfileTimelineView.prototype._scriptTimelineRecordRefreshed):
379         (WebInspector.ScriptProfileTimelineView.prototype._updateProfileOrientationButtonItem):
380         (WebInspector.ScriptProfileTimelineView.prototype._toggleProfileOrientation):
381         (WebInspector.ScriptProfileTimelineView.prototype._updateClearFocusNodesButtonItem):
382         (WebInspector.ScriptProfileTimelineView.prototype._clearFocusNodes):
383         The two TimelineViews.
384
385         * UserInterface/Views/TimelineRecordingContentView.js:
386         (WebInspector.TimelineRecordingContentView.prototype.get currentTimelineView):
387         (WebInspector.TimelineRecordingContentView.prototype.contentBrowserTreeElementForRepresentedObject):
388         The timeline content browser may now hold a ClusterContentView. It is not exactly a TimelineView,
389         but it holds TimelineViews, so treat it like one. Assume the ClusterContentView will add its own
390         path components.
391
392         (WebInspector.TimelineRecordingContentView.prototype._instrumentAdded):
393         Add extra information other than the sidebar to TimelineViews. The ProfileView looks
394         at the recording for the calling context trees.
395
396 2016-03-03  Timothy Hatcher  <timothy@apple.com>
397
398         Web Inspector: Temporarily hide the TimelineSidebarPanel
399
400         https://bugs.webkit.org/show_bug.cgi?id=154974
401         rdar://problem/24956380
402
403         Reviewed by Joseph Pecoraro.
404
405         * UserInterface/Views/TimelineTabContentView.js:
406         (WebInspector.TimelineTabContentView): Remove _showNavigationSidebarItem and hide the sidebar.
407
408 2016-03-03  Matt Baker  <mattbaker@apple.com>
409
410         Web Inspector: Selected range path component should be zero time corrected
411         https://bugs.webkit.org/show_bug.cgi?id=154950
412         <rdar://problem/24947022>
413
414         Reviewed by Timothy Hatcher.
415
416         Subtracts zero time from TimelineRange start and end values, and corrects
417         a cosmetic issue in TimelineRuler which showed selection handle tooltips
418         that weren't adjusted for the ruler's zero time.
419
420         * UserInterface/Views/TimelineRecordingContentView.js:
421         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
422
423         * UserInterface/Views/TimelineRuler.js:
424         (WebInspector.TimelineRuler.prototype._updateSelection):
425
426 2016-03-03  Matt Baker  <mattbaker@apple.com>
427
428         Web Inspector: Events and Frames mode switch does not fully switch until first zoom
429         https://bugs.webkit.org/show_bug.cgi?id=154971
430         <rdar://problem/24955871>
431
432         Reviewed by Timothy Hatcher.
433
434         Switching modes toggles the visibility of the tree outline, which changes
435         the width of the overview's ruler, graphs, and scroll container. When the
436         view mode changes, the overview needs a forced "resize" layout.
437
438         * UserInterface/Views/TimelineOverview.js:
439         (WebInspector.TimelineOverview.prototype._viewModeDidChange):
440
441 2016-03-03  Matt Baker  <mattbaker@apple.com>
442
443         Web Inspector: Assertion Failed: Cannot show timeline because it does not belong to the shown recording. – "overview"
444         https://bugs.webkit.org/show_bug.cgi?id=154972
445         <rdar://problem/24956233>
446
447         Reviewed by Timothy Hatcher.
448
449         * UserInterface/Views/TimelineTabContentView.js:
450         (WebInspector.TimelineTabContentView.prototype._showTimelineViewForType):
451         Just show the overview if the recording has no timeline of the given type.
452
453 2016-03-02  Matt Baker  <mattbaker@apple.com>
454
455         Web Inspector: Update MemoryTimelineView for new ruler height
456         https://bugs.webkit.org/show_bug.cgi?id=153904
457         <rdar://problem/24517259>
458
459         Reviewed by Timothy Hatcher.
460
461         * UserInterface/Views/MemoryTimelineView.css:
462         (.timeline-view.memory > .content > .details > .timeline-ruler):
463         (.timeline-view.memory > .content > .details > .subtitle):
464         Adjust ruler top and subtitle padding for shorter timeline ruler.
465         Also reduced padding in the Categories heading area to tighen up
466         the layout a bit.
467
468 2016-03-02  Matt Baker  <mattbaker@apple.com>
469
470         Web Inspector: Timelines UI redesign: replace content view container with a content browser
471         https://bugs.webkit.org/show_bug.cgi?id=153033
472         <rdar://problem/24195565>
473
474         Reviewed by Timothy Hatcher.
475
476         This patch replaces the ContentViewContainer in the Timelines tab with a ContentBrowser,
477         moves filtering controls from the sidebar to the new browser's navigation bar, and adds
478         a new leaf path component for the current ruler selection to the main content browser's
479         navigation bar.
480
481         * Localizations/en.lproj/localizedStrings.js:
482         New UI strings.
483
484         * UserInterface/Base/Utilities.js:
485         Added global en dash string.
486
487         * UserInterface/Main.html:
488         * UserInterface/Test.html:
489         New files.
490
491         * UserInterface/Models/TimelineRange.js:
492         (WebInspector.TimelineRange):
493         (WebInspector.TimelineRange.prototype.get startValue):
494         (WebInspector.TimelineRange.prototype.set startValue):
495         (WebInspector.TimelineRange.prototype.get endValue):
496         (WebInspector.TimelineRange.prototype.set endValue):
497         New represented object used by ruler selection path components.
498
499         * UserInterface/Views/FilterBarNavigationItem.js:
500         (WebInspector.FilterBarNavigationItem):
501         (WebInspector.FilterBarNavigationItem.prototype.get filterBar):
502         Adapter class for using a FilterBar as a NavigationItem.
503
504         * UserInterface/Views/TimelineIcons.css:
505         (.time-icon .icon):
506         Icon class used by ruler selection path component.
507
508         * UserInterface/Views/TimelineRecordingContentView.css:
509         (.content-view.timeline-recording > .content-browser):
510         (.content-view.timeline-recording > .content-browser > .navigation-bar):
511         (.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
512         (.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
513         (.content-view.timeline-recording > .content-browser > .content-view-container > .timeline-view > .data-grid td):
514         (.content-view.timeline-recording > .content-browser > .content-view-container > .timeline-view > .data-grid table.data):
515         (.content-view.timeline-recording > .content-view-container): Deleted.
516         (.content-view.timeline-recording > .content-view-container > .timeline-view > .data-grid td): Deleted.
517         (.content-view.timeline-recording > .content-view-container > .timeline-view > .data-grid table.data): Deleted.
518         New styles for the ContentBrowser that replaces the ContentViewContainer.
519
520         * UserInterface/Views/TimelineRecordingContentView.js:
521         (WebInspector.TimelineRecordingContentView):
522         Create the ContentBrowser, ruler selection path components, and the browser's filter bar.
523
524         (WebInspector.TimelineRecordingContentView.prototype.showOverviewTimelineView):
525         (WebInspector.TimelineRecordingContentView.prototype.showTimelineViewForTimeline):
526         Implemented by the content browser instead of the view container.
527
528         (WebInspector.TimelineRecordingContentView.prototype.get selectionPathComponents):
529         Add timeline and selection path components. Components for the current TimelineView
530         are now located in the lower content browser's navigation bar.
531
532         (WebInspector.TimelineRecordingContentView.prototype.get supplementalRepresentedObjects):
533         (WebInspector.TimelineRecordingContentView.prototype.get handleCopyEvent):
534         (WebInspector.TimelineRecordingContentView.prototype.get supportsSave):
535         (WebInspector.TimelineRecordingContentView.prototype.get saveData):
536         (WebInspector.TimelineRecordingContentView.prototype.get currentTimelineView):
537         (WebInspector.TimelineRecordingContentView.prototype.shown):
538         (WebInspector.TimelineRecordingContentView.prototype.hidden):
539         (WebInspector.TimelineRecordingContentView.prototype.closed):
540         (WebInspector.TimelineRecordingContentView.prototype.canGoBack):
541         (WebInspector.TimelineRecordingContentView.prototype.canGoForward):
542         (WebInspector.TimelineRecordingContentView.prototype.goBack):
543         (WebInspector.TimelineRecordingContentView.prototype.goForward):
544         (WebInspector.TimelineRecordingContentView.prototype.saveToCookie):
545         Implemented by the content browser instead of the view container.
546
547         (WebInspector.TimelineRecordingContentView.prototype.contentBrowserTreeElementForRepresentedObject):
548         Create the root tree element for the lower content browser's navigation bar.
549
550         (WebInspector.TimelineRecordingContentView.prototype._timeRangePathComponentSelected):
551         Update the ruler selection based on the new path component.
552
553         (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
554         (WebInspector.TimelineRecordingContentView.prototype._contentViewSupplementalRepresentedObjectsDidChange):
555         (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
556         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
557         Implemented by the content browser instead of the view container.
558
559         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
560         Update the currently selected path component when the ruler selection changes.
561         If the entire range is selected, show the "Entire Recording" path component,
562         otherwise update the TimelineRange of the path component for the user-defined
563         selection and refresh all timeline range path components.
564
565         (WebInspector.TimelineRecordingContentView.prototype._updateTimeRangePathComponents):
566         Update title text and sibling relationships for ruler selection path components.
567
568         (WebInspector.TimelineRecordingContentView.prototype._createTimelineRangePathComponent):
569         Helper function for creating TimelineRange path components.
570
571         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
572         The TimelineView scope bar is no longer added to the sidebar. The UI has been moved
573         to the lower content browser navigation bar.
574
575         (WebInspector.TimelineRecordingContentView.prototype._updateFrameSelection): Deleted.
576         No longer needed since the selected range is shown in the navigation bar.
577
578         * UserInterface/Views/TimelineView.js:
579         (WebInspector.TimelineView.prototype.get navigationItems):
580         Adds the TimelineView's scope bar (if any) to the lower content browser's navigation
581         bar. Items are inserted before the filter bar, which is always the right-most item.
582
583 2016-03-02  Matt Baker  <mattbaker@apple.com>
584
585         Web Inspector: Timelines UI redesign: show content tree outline records in timeline data grids
586         https://bugs.webkit.org/show_bug.cgi?id=153032
587         <rdar://problem/24195317>
588
589         Reviewed by Timothy Hatcher.
590
591         This patch relocates the data shown in the Timelines navigation sidebar content tree outline
592         to a new grid column in each TimelineDataGrid. Logic for creating subtitles, goto arrow buttons,
593         and status elements (the progress spinner used for network resources) has been replicated in
594         the appropriate TimelineDataGridNode classes.
595
596         Duplicate logic contained in TimelineRecordTreeElement classes is left in place for now, but
597         will be removed in <https://webkit.org/b/153036>.
598
599         * UserInterface/Views/DataGrid.css:
600         (.data-grid td.error):
601         Use --error-text-color CSS variable.
602
603         * UserInterface/Views/DataGrid.js:
604         Removed GoToArrowClicked event.
605         (WebInspector.DataGridNode.prototype.createGoToArrowButton.buttonClicked): Deleted.
606         (WebInspector.DataGridNode.prototype.createGoToArrowButton): Deleted.
607         Now part of TimelineDataGridNode.
608
609         * UserInterface/Views/LayoutTimelineDataGridNode.js:
610         (WebInspector.LayoutTimelineDataGridNode):
611         (WebInspector.LayoutTimelineDataGridNode.prototype.get data):
612         Add name cell to row data.
613         (WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
614         Create name cell.
615
616         * UserInterface/Views/LayoutTimelineView.css:
617         (.timeline-view.layout > .data-grid .eventType-column): Deleted.
618         Column border no longer hidden.
619
620         * UserInterface/Views/LayoutTimelineView.js:
621         (WebInspector.LayoutTimelineView):
622         Setup name column.
623
624         * UserInterface/Views/NetworkTimelineView.css:
625         (.timeline-view.network > .data-grid .name-column .subtitle):
626         Don't show subtitles in the Network grid's name column.
627
628         * UserInterface/Views/NetworkTimelineView.js:
629         (WebInspector.NetworkTimelineView):
630         Setup name column.
631
632         * UserInterface/Views/OverviewTimelineView.css:
633         (.timeline-view.overview > .data-grid th.graph-column > .timeline-ruler):
634         (.timeline-view.overview > .data-grid th.graph-column > .timeline-ruler > .header):
635         (.timeline-view.overview > .data-grid th):
636         (body.window-inactive .timeline-view.overview > .data-grid th):
637         (.timeline-view.overview .timeline-ruler > .event-markers):
638         (.timeline-view.overview > .data-grid):
639         (.timeline-view.overview > .timeline-ruler): Deleted.
640         (.timeline-view.overview > .timeline-ruler > .header): Deleted.
641         (body.window-inactive .timeline-view.overview > .timeline-ruler > .header): Deleted.
642         (.timeline-view.overview > .timeline-ruler > .event-markers): Deleted.
643         New styles for adding grid column headers and using a TimelineRuler as the
644         graph column header.
645
646         * UserInterface/Views/OverviewTimelineView.js:
647         (WebInspector.OverviewTimelineView):
648         Setup name column and add ruler to graph column header.
649
650         * UserInterface/Views/ProfileNodeDataGridNode.js:
651         (WebInspector.ProfileNodeDataGridNode):
652         Use cached data instead of creating row data at construction time.
653         (WebInspector.ProfileNodeDataGridNode.prototype.get data):
654         Add name cell to row data.
655         (WebInspector.ProfileNodeDataGridNode.prototype.createCellContent):
656         Create name cell.
657         (WebInspector.ProfileNodeDataGridNode.prototype._iconClassNameForProfileNode):
658         (WebInspector.ProfileNodeDataGridNode.prototype._titleForProfileNode):
659         Copied from ProfileNodeTreeElement.
660
661         * UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
662         (WebInspector.RenderingFrameTimelineDataGridNode):
663         (WebInspector.RenderingFrameTimelineDataGridNode.prototype.get data):
664         Add name cell to row data.
665         (WebInspector.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
666         Create name cell.
667
668         * UserInterface/Views/RenderingFrameTimelineView.js:
669         (WebInspector.RenderingFrameTimelineView):
670         Setup name column.
671
672         * UserInterface/Views/ResourceTimelineDataGridNode.js:
673         (WebInspector.ResourceTimelineDataGridNode):
674         Renamed "graphOnly" to "includesGraph", since resource rows in the overview
675         now show the name column in addition to the graph column. Resource events
676         LoadingDidFinish and LoadingDidFail now need to be handled for both types
677         of resource rows.
678
679         (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
680         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
681         Update resource status element and create name cell content.
682         (WebInspector.ResourceTimelineDataGridNode.prototype._createNameCellDocumentFragment):
683         Create DOM fragment with titles. Based on code in TimelineRecordTreeElement.
684         (WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
685         Show resource when goto arrow is clicked.
686         (WebInspector.ResourceTimelineDataGridNode.prototype._updateStatus):
687         Update name cell's text color and progress spinner.
688
689         * UserInterface/Views/ResourceTreeElement.css:
690         (.item.resource.failed):
691         (.item.resource.failed .subtitle):
692         Use --error-text-color CSS variable.
693
694         * UserInterface/Views/ScriptTimelineDataGridNode.js:
695         (WebInspector.ScriptTimelineDataGridNode):
696         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
697         (WebInspector.ScriptTimelineDataGridNode.prototype._createNameCellDocumentFragment):
698         Create DOM fragment with titles. Based on code in TimelineRecordTreeElement.
699
700         * UserInterface/Views/ScriptTimelineView.js:
701         (WebInspector.ScriptTimelineView):
702         Setup name column.
703
704         * UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:
705         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.createCellContent):
706         Added now that this node type is no longer "graph only".
707         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._createNameCellContent):
708         Create DOM fragment with titles. Based on code in TimelineRecordTreeElement.
709
710         * UserInterface/Views/TimelineDataGridNode.js:
711         (WebInspector.TimelineDataGridNode):
712         Renamed `graphOnly` to `includesGraph`.
713         (WebInspector.TimelineDataGridNode.prototype.createCellContent):
714         Removed icon element creation. This is now handled by the DataGrid.
715         (WebInspector.TimelineDataGridNode.prototype.refresh):
716         Refresh of all node cells after updating the graph.
717         (WebInspector.TimelineDataGridNode.prototype.createGoToArrowButton):
718         (WebInspector.TimelineDataGridNode.prototype.createGoToArrowButton.buttonClicked):
719         Relocated from DataGrid, as it's only used by TimelineDataGridNodes.
720
721         * UserInterface/Views/TimelineView.css:
722         (.timeline-view > .data-grid .indeterminate-progress-spinner):
723         Styles for grid cell progress spinners.
724
725         * UserInterface/Views/Variables.css:
726         (:root):
727         Added --error-text-color variable to remove duplication.
728
729 2016-03-02  Matt Baker  <mattbaker@apple.com>
730
731         Web Inspector: Timelines UI redesign: relocate recording controls to TimelineTabContentView's content browser
732         https://bugs.webkit.org/show_bug.cgi?id=153532
733         <rdar://problem/24361611>
734
735         Reviewed by Timothy Hatcher.
736
737         This patch shifts UI controller responsibilities from the sidebar panel
738         to the tab content view. Controls for starting/stopping the recording and
739         switching view modes are now located in the tab's navigation bar, as is
740         the hidden tree outline of open timeline recordings.
741
742         * Localizations/en.lproj/localizedStrings.js:
743         New UI strings. Renamed view-mode radio buttons located from the sidebar
744         to "Events" and "Frames". UI for switching modes isn't final, and the
745         labels may change or be removed entirely in favor of image-only buttons.
746
747         * UserInterface/Main.html:
748         New file.
749
750         * UserInterface/Views/ContentBrowserTabContentView.js:
751         (WebInspector.ContentBrowserTabContentView.prototype.contentBrowserTreeElementForRepresentedObject):
752         (WebInspector.ContentBrowserTabContentView.prototype.treeElementForRepresentedObject):
753         Allow subclasses to override behavior for retrieving the tree element
754         for a represented object. Default behavior delegates the implementation
755         to the navigation sidebar.
756
757         (WebInspector.ContentBrowserTabContentView.prototype._contentBrowserCurrentContentViewDidChange):
758         (WebInspector.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
759         (WebInspector.ContentBrowserTabContentView):
760         (WebInspector.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObjectInNavigationSidebar): Deleted.
761         Renamed to _revealAndSelectRepresentedObject as it's no longer specific
762         to the sidebar.
763
764         * UserInterface/Views/TabContentView.js:
765         (WebInspector.TabContentView):
766         (WebInspector.TabContentView.prototype.restoreStateFromCookie):
767         (WebInspector.TabContentView.prototype.saveStateToCookie):
768         A navigation sidebar shouldn't be required to save/restore cookie state.
769
770         * UserInterface/Views/TimelineTabContentView.css: Added.
771         (.timeline.tab.content-view .navigation-bar > .item.toggle-navigation-sidebar.activate.button):
772         (.timeline.tab.content-view .navigation-bar > .item.record-start-stop):
773         (.timeline.tab.content-view .navigation-bar > .item.record-start-stop:hover):
774         (.timeline.tab.content-view .navigation-bar > .item.record-start-stop:active):
775         (.timeline.tab.content-view .navigation-bar > .item.record-start-stop *):
776         (.timeline.tab.content-view .navigation-bar > .item.radio):
777         Styles for new navigation items: record button and view mode radio buttons.
778
779         * UserInterface/Views/TimelineTabContentView.js:
780         Logic for maintaining the timeline recording hierarchy and the state
781         of the active recording has been added to the tab content view.
782
783         (WebInspector.TimelineTabContentView):
784         (WebInspector.TimelineTabContentView.prototype.shown):
785         (WebInspector.TimelineTabContentView.prototype.hidden):
786         (WebInspector.TimelineTabContentView.prototype.canShowRepresentedObject):
787         Objects other than recordings are no longer shown in the tab's content
788         browser. Displaying other objects (such as timeline resources) in the
789         content browser will be addressed in a follow-up patch: https://bugs.webkit.org/show_bug.cgi?id=154920.
790
791         (WebInspector.TimelineTabContentView.prototype.get supportsSplitContentBrowser):
792         (WebInspector.TimelineTabContentView.prototype.restoreFromCookie):
793         (WebInspector.TimelineTabContentView.prototype.saveToCookie):
794         Persist view state that was previously located in the sidebar.
795
796         (WebInspector.TimelineTabContentView.prototype.treeElementForRepresentedObject):
797         Implements logic previously limited to the navigation sidebar. Only tree
798         elements for timeline recordings are supported, since other represented
799         objects (timeline resources) no longer have content tree outline tree elements.
800
801         (WebInspector.TimelineTabContentView.prototype._capturingStartedOrStopped):
802         (WebInspector.TimelineTabContentView.prototype._toggleRecordingOnSpacebar):
803         (WebInspector.TimelineTabContentView.prototype._toggleNewRecordingOnSpacebar):
804         (WebInspector.TimelineTabContentView.prototype._toggleRecording):
805         (WebInspector.TimelineTabContentView.prototype._recordButtonClicked):
806         (WebInspector.TimelineTabContentView.prototype._recordingsTreeSelectionDidChange):
807         (WebInspector.TimelineTabContentView.prototype._recordingCreated):
808         (WebInspector.TimelineTabContentView.prototype._addRecording):
809         (WebInspector.TimelineTabContentView.prototype._recordingCountChanged):
810         (WebInspector.TimelineTabContentView.prototype._recordingLoaded):
811         Implementations copied from the sidebar panel.
812
813         (WebInspector.TimelineTabContentView.prototype._recordingSelected):
814         Implementation similar to that which existed in the sidebar panel, except
815         that logic related to instruments isn't needed. Updates to timeline view
816         filters will be implemented in a follow-up patch: https://bugs.webkit.org/show_bug.cgi?id=154924.
817
818         (WebInspector.TimelineTabContentView.prototype._viewModeSelected):
819         This method is now limited to the handling of the radio button event only.
820         Additional logic which existed in the sidebar panel's implementation has
821         been pushed into _changeViewMode, which does the actual work of toggling
822         view modes.
823
824         (WebInspector.TimelineTabContentView.prototype._changeViewMode):
825         Updates the current view mode state. If triggered by a user selection (was
826         called by the radio button event handler), the correct timeline view for
827         the new mode is shown.
828
829         (WebInspector.TimelineTabContentView.prototype._showTimelineViewForType):
830         Helper function for showing the view for the specified timeline type, if
831         the timeline exists in the current recording. Otherwise the overview timeline
832         view is displayed.
833
834         (WebInspector.TimelineTabContentView.prototype._displayedContentViewNavigationItemsDidChange):
835         Keep the view mode in sync with the content browser.
836
837         (WebInspector.TimelineTabContentView.prototype._getTimelineForCurrentContentView):
838         Helper function for getting the currently displayed timeline.
839
840 2016-03-02  Matt Baker  <mattbaker@apple.com>
841
842         Web Inspector: Timelines UI redesign: add the timelines tree outline to the TimelineOverview
843         https://bugs.webkit.org/show_bug.cgi?id=153034
844         <rdar://problem/24195628>
845
846         Reviewed by Timothy Hatcher.
847
848         Move the Timelines tree outline to the overview, in preparation for <https://webkit.org/b/153036>.
849
850         * UserInterface/Views/OverviewTimelineView.css:
851         (.timeline-view.overview > .timeline-ruler > .header): Deleted.
852         (.timeline-view.overview > .timeline-ruler > .event-markers): Deleted.
853         These are now part of the default ruler style.
854
855         * UserInterface/Views/TimelineOverview.css:
856         (.timeline-overview > .tree-outline.timelines):
857         (.timeline-overview > .tree-outline.timelines::before):
858         (body.window-inactive .timeline-overview > .tree-outline.timelines):
859         (.timeline-overview.frames > .tree-outline.timelines):
860         (.timeline-overview > .tree-outline.timelines .close-button):
861         (.timeline-overview > .tree-outline.timelines .item.selected .close-button):
862         (.timeline-overview > .tree-outline.timelines .item:not(.selected):nth-child(even)):
863         (.timeline-overview > .tree-outline.timelines .item:not(.selected):not(:first-child)):
864         (.timeline-overview > .tree-outline.timelines .item.selected + .item):
865         (body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item):
866         (.timeline-overview > .tree-outline.timelines :focus .item.selected + .item):
867         (.timeline-overview > .scroll-container):
868         (.timeline-overview.frames > .scroll-container):
869         (.timeline-overview > .timeline-ruler):
870         (.timeline-overview.frames > .timeline-ruler):
871         (.timeline-overview > .timeline-ruler > .markers):
872         (.timeline-overview > .graphs-container):
873         (.timeline-overview.frames > .graphs-container):
874         Styles for the timelines tree outline. A content element is inserted before the
875         tree to fill the gap created by the timeline ruler. For now the tree has a fixed
876         width of 185px, and is hidden when displaying the FPS instrument.
877
878         * UserInterface/Views/TimelineOverview.js:
879         (WebInspector.TimelineOverview):
880         (WebInspector.TimelineOverview.prototype.get selectedTimeline):
881         (WebInspector.TimelineOverview.prototype.set selectedTimeline):
882         Make the selected timeline accessible to the parent view, since the overview doesn't
883         have a "represented object", or receive ContentView change notifications.
884
885         (WebInspector.TimelineOverview.prototype._instrumentAdded):
886         (WebInspector.TimelineOverview.prototype._instrumentRemoved):
887         (WebInspector.TimelineOverview.prototype._viewModeDidChange):
888         Add and remove instrument tree elements. Each tree element is created with a height
889         equal to it's overview graph, and is shown/hidden based on the current view mode.
890
891         (WebInspector.TimelineOverview.prototype._timelinesTreeSelectionDidChange):
892         Update the selected timeline and dispatch change event.
893
894         * UserInterface/Views/TimelineRecordingContentView.js:
895         (WebInspector.TimelineRecordingContentView):
896         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
897         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
898         (WebInspector.TimelineRecordingContentView.prototype._timelineSelected):
899         Sync the overview's timeline selection with the current ContentView's represented object.
900
901         * UserInterface/Views/TimelineRuler.css:
902         (.timeline-ruler > .header):
903         (.timeline-ruler > .header > .divider > .label):
904         (.timeline-ruler > .selection-drag):
905         (.timeline-ruler > .selection-handle):
906         Ruler height changed to 23px, to be consistent with the DataGrid header.
907
908         * UserInterface/Views/TreeOutline.css:
909         (.tree-outline.large .item .icon):
910         Large icon style updated to match TimelineSidebarPanel.css. The 32px
911         size is outdated and no longer used.
912
913         * UserInterface/Views/Variables.css:
914         (:root):
915         New color variables, used by TimelineOverview.css.
916
917 2016-02-29  Devin Rousso  <dcrousso+webkit@gmail.com>
918
919         Web Inspector: Add direct number inputs to Bezier editor
920         https://bugs.webkit.org/show_bug.cgi?id=154809
921         <rdar://problem/24881465>
922
923         Reviewed by Timothy Hatcher.
924
925         * UserInterface/Base/Main.js:
926         (WebInspector._updateWindowKeydownListener):
927         Now only adds the shared event listener when the first keydown listener
928         is added via WebInspector.addWindowKeydownListener
929
930         * UserInterface/Controllers/CodeMirrorBezierEditingController.js:
931         (WebInspector.CodeMirrorBezierEditingController.prototype.popoverDidDismiss):
932
933         * UserInterface/Controllers/CodeMirrorEditingController.js:
934         (WebInspector.CodeMirrorEditingController.prototype.popoverDidDismiss):
935         (WebInspector.CodeMirrorEditingController.prototype.didDismissPopover):
936         Added function that is called when the popover is dismissed so that
937         removing event listeners is possible.
938
939         * UserInterface/Views/BezierEditor.css:
940         (.bezier-editor):
941         (.bezier-editor > .number-input-container):
942         (.bezier-editor > .number-input-container > input):
943
944         * UserInterface/Views/BezierEditor.js:
945         (WebInspector.BezierEditor.createControl):
946         (WebInspector.BezierEditor.createBezierInput):
947         (WebInspector.BezierEditor):
948         Added usage of Element.prototype.createChild for ease of readability.
949         Also added input elements for manually changing the values of each bezier
950         point's x and y values.
951
952         (WebInspector.BezierEditor.prototype.set bezier):
953         (WebInspector.BezierEditor.prototype.removeListeners):
954         (WebInspector.BezierEditor.prototype._handleMousedown):
955         (WebInspector.BezierEditor.prototype._updateBezier):
956         (WebInspector.BezierEditor.prototype._updateBezierPreview):
957         (WebInspector.BezierEditor.prototype._triggerPreviewAnimation):
958         (WebInspector.BezierEditor.prototype._handleNumberInputInput):
959         (WebInspector.BezierEditor.prototype._handleNumberInputKeydown):
960         (WebInspector.BezierEditor.prototype._changeBezierForInput):
961         Refactored code to make it more reusable, as well as adding event listeners
962         to the newly created inputs, including value chaning from the arrow keys.
963
964         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
965         (WebInspector.CSSStyleDeclarationTextEditor.prototype.didDismissPopover): Deleted.
966         Removed unused code.
967
968         * UserInterface/Views/InlineSwatch.js:
969         (WebInspector.InlineSwatch):
970         (WebInspector.InlineSwatch.prototype.didDismissPopover):
971         Removes any global event listeners added by the current editor if able.
972
973         (WebInspector.InlineSwatch.prototype._swatchElementClicked):
974         Now saves the current editor object as a member variable.
975
976 2016-02-28  Nikita Vasilyev  <nvasilyev@apple.com>
977
978         Web Inspector: DataGrid's resizers aren't horizontally centered
979         https://bugs.webkit.org/show_bug.cgi?id=154787
980         <rdar://problem/24876901>
981
982         Reviewed by Timothy Hatcher.
983
984         * UserInterface/Views/DataGrid.css:
985         (.data-grid .resizer):
986         Use CSS transforms as margin-left doesn't support sub-pixel values.
987
988 2016-02-26  Nikita Vasilyev  <nvasilyev@apple.com>
989
990         Web Inspector: Increase clickable area of the console prompt
991         https://bugs.webkit.org/show_bug.cgi?id=154719
992         <rdar://problem/24854538>
993
994         Reviewed by Timothy Hatcher.
995
996         Clicking on the area around CodeMirror element now moves
997         focus to the console prompt.
998
999         * UserInterface/Views/QuickConsole.js:
1000         (WebInspector.QuickConsole.prototype._handleMouseDown):
1001         Only capture mousedown events on .quick-console.
1002         Don't capture clicks on CodeMirror.
1003
1004         * UserInterface/Views/QuickConsole.css:
1005         (.quick-console > .console-prompt):
1006         (.quick-console > .console-prompt > .CodeMirror):
1007         Make sure .console-prompt is never an event.target for _handleMouseDown.
1008
1009 2016-02-26  Joseph Pecoraro  <pecoraro@apple.com>
1010
1011         Web Inspector: Remove unused member variables from overview graphs
1012         https://bugs.webkit.org/show_bug.cgi?id=154774
1013
1014         Reviewed by Timothy Hatcher.
1015
1016         * UserInterface/Views/LayoutTimelineOverviewGraph.js:
1017         (WebInspector.LayoutTimelineOverviewGraph.prototype.reset):
1018         * UserInterface/Views/ScriptTimelineOverviewGraph.js:
1019         (WebInspector.ScriptTimelineOverviewGraph.prototype.reset):
1020
1021 2016-02-26  Nikita Vasilyev  <nvasilyev@apple.com>
1022
1023         REGRESSION (r196741): Web Inspector: Bottom section of Layers sidebar is 1px shorter than the console prompt
1024         https://bugs.webkit.org/show_bug.cgi?id=154773
1025         <rdar://problem/24873345>
1026
1027         Reviewed by Timothy Hatcher.
1028
1029         * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
1030         (.sidebar > .panel.details.layer-tree > .content):
1031         (.panel.details.layer-tree .bottom-bar):
1032
1033 2016-02-26  Devin Rousso  <dcrousso+webkit@gmail.com>
1034
1035         Web Inspector: Custom transition bezier curve editor preview should loop when not editing curve
1036         https://bugs.webkit.org/show_bug.cgi?id=154738
1037         <rdar://problem/24861563>
1038
1039         Reviewed by Timothy Hatcher.
1040
1041         Added extra frames to bezier preview animation to allow it to infinitely
1042         repeat without being jarring to watch.
1043
1044         * UserInterface/Views/BezierEditor.css:
1045         (.bezier-editor > .bezier-preview-timing.animate):
1046         (@keyframes bezierPreview):
1047         * UserInterface/Views/BezierEditor.js:
1048
1049 2016-02-26  Devin Rousso  <dcrousso+webkit@gmail.com>
1050
1051         Web Inspector: Keyboard controls to nudge control points in custom transition bezier curve editor would be nice
1052         https://bugs.webkit.org/show_bug.cgi?id=154739
1053         <rdar://problem/24861498>
1054
1055         Reviewed by Timothy Hatcher.
1056
1057         Adds ability for user to nudge the most recently selected bezier control
1058         handle by using the arrow keys. Also makes the currently selected bezier
1059         control line snap to an axis, which is defined when the user mouses down,
1060         whenever the mouse is dragged while the shift key is pressed.
1061
1062
1063         * UserInterface/Views/BezierEditor.js:
1064         (WebInspector.BezierEditor):
1065         (WebInspector.BezierEditor.prototype.handleKeydownEvent):
1066         (WebInspector.BezierEditor.prototype._handleMouseup):
1067         (WebInspector.BezierEditor.prototype._updateControlPointsForMouseEvent):
1068
1069 2016-02-26  Devin Rousso  <dcrousso+webkit@gmail.com>
1070
1071         Web Inspector: Option-clicking on the a CSS property sometimes doesn't work
1072         https://bugs.webkit.org/show_bug.cgi?id=154384
1073         <rdar://problem/24714755>
1074
1075         Reviewed by Timothy Hatcher.
1076
1077         It seems as though there were race conditions between CodeMirror's event
1078         and the native mousemove such that if CodeMirror fired second, the current
1079         candidate was cleared, and would not reset itself until the cursor was
1080         moved, at which point the same issue could happen. To fix this, the current
1081         candidate is no longer cleared by CodeMirror's event and is instead only
1082         modified by the native mouse-events.
1083
1084         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
1085         (WebInspector.CodeMirrorTokenTrackingController.prototype._hidePopover):
1086
1087 2016-02-25  Nikita Vasilyev  <nvasilyev@apple.com>
1088
1089         Web Inspector: Unify selected item colors
1090         https://bugs.webkit.org/show_bug.cgi?id=154668
1091         <rdar://problem/24832178>
1092
1093         Reviewed by Timothy Hatcher.
1094
1095         Use the same CSS variable color for all selected items.
1096
1097         * UserInterface/Views/TreeOutline.css:
1098         (.tree-outline:matches(:focus, .force-focus) .item.selected):
1099         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
1100         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.selected):
1101         * UserInterface/Views/VisualStyleSelectorTreeItem.css:
1102         (.item.visual-style-selector-item.selected):
1103         * UserInterface/Views/VisualStyleTabbedPropertiesRow.css:
1104         (.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button.selected):
1105
1106 2016-02-24  Joseph Pecoraro  <pecoraro@apple.com>
1107
1108         Web Inspector: Expose Proxy target and handler internal properties to Inspector
1109         https://bugs.webkit.org/show_bug.cgi?id=154663
1110
1111         Reviewed by Timothy Hatcher.
1112
1113         * UserInterface/Models/NativeFunctionParameters.js:
1114         * UserInterface/Views/ObjectTreePropertyTreeElement.js:
1115         (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
1116         Improve the native parameter list for the global Reflect object methods.
1117         Include "enumerate" even though it is deprecated, because we implement it.
1118
1119 2016-02-24  Devin Rousso  <dcrousso+webkit@gmail.com>
1120
1121         Web Inspector: Visual Styles sidebar should support multiple animations
1122         https://bugs.webkit.org/show_bug.cgi?id=154546
1123         <rdar://problem/24773861>
1124
1125         Reviewed by Timothy Hatcher.
1126
1127         * UserInterface/Views/VisualStyleDetailsPanel.js:
1128         (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection):
1129         Set additional flags on the optional properties of transition to ensure
1130         that the initial value of a new row is not considered invalid.
1131
1132         (WebInspector.VisualStyleDetailsPanel.prototype._populateAnimationSection):
1133         Added a comma-separated keyword list to provide support for multiple
1134         animations per rule.
1135
1136 2016-02-24  Timothy Hatcher  <timothy@apple.com>
1137
1138         Web Inspector: Remove unused Profile.png images
1139
1140         https://bugs.webkit.org/show_bug.cgi?id=154647
1141         rdar://problem/24820825
1142
1143         Reviewed by Brian Burg.
1144
1145         * UserInterface/Images/Profile.png: Removed.
1146         * UserInterface/Images/Profile@2x.png: Removed.
1147         * UserInterface/Images/gtk/Profile.png: Removed.
1148         * UserInterface/Images/gtk/Profile@2x.png: Removed.
1149         * UserInterface/Views/TimelineIcons.css:
1150         (.profile-icon .icon): Deleted.
1151
1152 2016-02-24  Matt Baker  <mattbaker@apple.com>
1153
1154         Web Inspector: TimelineViews should use the recording's end time when entire ruler range is selected
1155         https://bugs.webkit.org/show_bug.cgi?id=154644
1156         <rdar://problem/24818442>
1157
1158         Reviewed by Timothy Hatcher.
1159
1160         * UserInterface/Views/TimelineRecordingContentView.js:
1161         (WebInspector.TimelineRecordingContentView):
1162         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
1163         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
1164         Update current timeline view when entire range selected.
1165
1166         (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
1167         Live-update the OverviewTimelineView during recording when entire range selected.
1168         
1169         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineViewSelection):
1170         Update timeline view start and end times. When entire range selected, use the recording
1171         end time or current time (while capturing).
1172
1173 2016-02-24  Timothy Hatcher  <timothy@apple.com>
1174
1175         Follow up fix for the TimelineRuler "select all" mode to fix zeroTime.
1176
1177         https://bugs.webkit.org/show_bug.cgi?id=154561
1178         rdar://problem/24779872
1179
1180         * UserInterface/Views/TimelineRuler.js:
1181         (WebInspector.TimelineRuler.prototype.set zeroTime): Change selectionStartTime
1182         before _zeroTime so the check for entireRangeSelected still works.
1183
1184 2016-02-24  Matt Baker  <mattbaker@apple.com>
1185
1186         Web Inspector: TimelineRuler should have a "select all" mode
1187         https://bugs.webkit.org/show_bug.cgi?id=154561
1188         <rdar://problem/24779872>
1189
1190         Reviewed by Timothy Hatcher.
1191
1192         TimelineRuler is initialized with a selected range of [0, Number.MAX_VALUE),
1193         indicating the entire timeline is selected. This patch makes it possible to
1194         return the ruler to this state, after being overwritten by a custom selection.
1195         When no custom selection exists, the selection handles are hidden.
1196
1197         * UserInterface/Views/TimelineRuler.css:
1198         (.timeline-ruler.selection-hidden > :matches(.selection-drag, .selection-handle, .shaded-area)):
1199         Style for hiding selection controls as needed.
1200
1201         * UserInterface/Views/TimelineRuler.js:
1202         (WebInspector.TimelineRuler):
1203         Represent unbounded selection interval as [0, Number.MAX_VALUE).
1204
1205         (WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection):
1206         Register double-click event listener.
1207
1208         (WebInspector.TimelineRuler.prototype.set zeroTime):
1209         (WebInspector.TimelineRuler.prototype.get entireRangeSelected):
1210         (WebInspector.TimelineRuler.prototype.selectEntireRange):
1211         Let clients check and set the selection of the entire range without needing
1212         to use the internal sentinel values 0 and Number.MAX_VALUE.
1213
1214         (WebInspector.TimelineRuler.prototype._updateSelection):
1215         Update ruler styles and dispatch selection change event when entire
1216         range is selected.
1217
1218         (WebInspector.TimelineRuler.prototype._handleDoubleClick):
1219         If a user-defined selection exists, select the entire range.
1220
1221 2016-02-24  Nikita Vasilyev  <nvasilyev@apple.com>
1222
1223         Web Inspector: Dim selected items when docked Inspector window is inactive
1224         https://bugs.webkit.org/show_bug.cgi?id=154526
1225         <rdar://problem/24764365>
1226
1227         Abstract selected item and SVG glyph colors into CSS variables.
1228
1229         Reviewed by Timothy Hatcher.
1230
1231         * UserInterface/Views/BezierEditor.css:
1232         (.bezier-editor > .bezier-preview > div):
1233         * UserInterface/Views/ButtonNavigationItem.css:
1234         (.navigation-bar .item.button > .glyph):
1235         (.navigation-bar .item.button:not(.disabled):active > .glyph):
1236         (.navigation-bar .item.button:not(.disabled):matches(:focus, .activate.activated, .radio.selected) > .glyph):
1237         (.navigation-bar .item.button:not(.disabled):active:matches(:focus, .activate.activated, .radio.selected) > .glyph):
1238         (.navigation-bar .item.button.disabled > .glyph):
1239         * UserInterface/Views/ButtonToolbarItem.css:
1240         (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated) > .glyph):
1241         (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated) > .glyph):
1242         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
1243         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle.selected):
1244         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:not(.selected):hover):
1245         * UserInterface/Views/ConsoleMessageView.css:
1246         (.console-user-command.special-user-log > .console-message-text):
1247         * UserInterface/Views/DOMTreeOutline.css:
1248         (.tree-outline.dom li.pseudo-class-enabled > .selection::before):
1249         * UserInterface/Views/Main.css:
1250         (input[type=range]::-webkit-slider-runnable-track::before):
1251         * UserInterface/Views/RadioButtonNavigationItem.css:
1252         (.navigation-bar .item.radio.button.text-only:hover):
1253         (.navigation-bar .item.radio.button.text-only.selected):
1254         (.navigation-bar .item.radio.button.text-only:active):
1255         (.navigation-bar .item.radio.button.text-only.selected:active):
1256         * UserInterface/Views/ScopeBar.css:
1257         (.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows):
1258         (.scope-bar > li:hover):
1259         (.scope-bar > li.selected):
1260         (.scope-bar > li:active):
1261         (.scope-bar > li.selected:active):
1262         * UserInterface/Views/Variables.css:
1263         (:root):
1264         (body.window-inactive):
1265         * UserInterface/Views/VisualStyleDetailsPanel.css:
1266         (.sidebar > .panel.details.css-style .visual > .details-section .details-section.has-set-property > .header > span::after):
1267         * UserInterface/Views/VisualStyleKeywordIconList.css:
1268         (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon:matches(.computed, .selected)):
1269         (.visual-style-property-container.keyword-icon-list > .visual-style-property-value-container > .keyword-icon-list-container > .keyword-icon.selected):
1270
1271 2016-02-23  Dan Bernstein  <mitz@apple.com>
1272
1273         [Xcode] Linker errors display mangled names, but no longer should
1274         https://bugs.webkit.org/show_bug.cgi?id=154632
1275
1276         Reviewed by Sam Weinig.
1277
1278         * Configurations/Base.xcconfig: Stop setting LINKER_DISPLAYS_MANGLED_NAMES to YES.
1279
1280 2016-02-22  Matt Baker  <mattbaker@apple.com>
1281
1282         Web Inspector: Timelines sidebar and overview attempt to access undefined properties when FPS instrument is absent
1283         https://bugs.webkit.org/show_bug.cgi?id=154567
1284         <rdar://problem/24781536>
1285
1286         Reviewed by Joseph Pecoraro.
1287
1288         * UserInterface/Views/TimelineOverview.js:
1289         (WebInspector.TimelineOverview):
1290         The viewMode property should be in a valid state before attempting
1291         to access the current view mode settings.
1292
1293         * UserInterface/Views/TimelineSidebarPanel.js:
1294         (WebInspector.TimelineSidebarPanel.prototype.get minimumWidth):
1295         (WebInspector.TimelineSidebarPanel.prototype._updateViewModeIfNeeded):
1296         (WebInspector.TimelineSidebarPanel):
1297         Added missing checks for FPSInstrument support.
1298
1299 2016-02-22  Nikita Vasilyev  <nvasilyev@apple.com>
1300
1301         REGRESSION (r196620): Web Inspector: Filter bar in the left sidebar is 1px shorter than the console prompt
1302         https://bugs.webkit.org/show_bug.cgi?id=154529
1303
1304         Reviewed by Timothy Hatcher.
1305
1306         * UserInterface/Views/NavigationSidebarPanel.css:
1307         (.sidebar > .panel.navigation > .overflow-shadow):
1308
1309 2016-02-20  Devin Rousso  <dcrousso+webkit@gmail.com>
1310
1311         Web Inspector: Opacity slider thumb sometimes goes past the bar in Visual Styles sidebar
1312         https://bugs.webkit.org/show_bug.cgi?id=154497
1313
1314         Reviewed by Timothy Hatcher.
1315
1316         Since WebInspector.Slider uses CSS transforms to move the slider knob
1317         along the track, if the width of the track changes then the position
1318         of the knob would stay the same since it was translated instead of
1319         adjusting its position relative to the new width.
1320
1321         * UserInterface/Views/Slider.js:
1322         (WebInspector.Slider.prototype.recalculateKnobX):
1323         Resets the maxX value to 0 to ensure that a new maxX is calculated with
1324         the current width.
1325
1326         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
1327         (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set specifiedWidth): Deleted.
1328         (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.recalculateWidth):
1329
1330         * UserInterface/Views/VisualStyleDetailsPanel.js:
1331         (WebInspector.VisualStyleDetailsPanel.prototype.widthDidChange):
1332         (WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
1333         (WebInspector.VisualStyleDetailsPanel.prototype._populateDisplaySection):
1334
1335         * UserInterface/Views/VisualStyleUnitSlider.js:
1336         (WebInspector.VisualStyleUnitSlider.prototype.recalculateWidth):
1337
1338 2016-02-20  Devin Rousso  <dcrousso+webkit@gmail.com>
1339
1340         Web Inspector: Visual Styles: Modifying background expands Font section
1341         https://bugs.webkit.org/show_bug.cgi?id=154491
1342         <rdar://problem/24755440>
1343
1344         Reviewed by Timothy Hatcher.
1345
1346         When the user selects a new style, the Visual sidebar examines the property
1347         editors in each subsection to see if any have a value and expands/collapses
1348         the subsection accordingly. This issue was happening because that logic was
1349         also being triggered when the user didn't select a new style, which is
1350         controlled by DOMNodeStyles and the significantChange value in refresh().
1351
1352         * UserInterface/Base/Utilities.js:
1353         (String.prototype.toCamelCase):
1354         Added utility function to transform a string into a camel-cased version.
1355
1356         * UserInterface/Models/DOMNodeStyles.js:
1357         (WebInspector.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
1358         Dropped unused variable and added checks to make sure doubly-matching styles
1359         don't count as a significant change and cause refreshes of the styles sidebar.
1360
1361         * UserInterface/Views/VisualStyleDetailsPanel.js:
1362         (WebInspector.VisualStyleDetailsPanel.prototype._updateSections):
1363         If this function has an event, meaning it was triggered by a newly selected
1364         selector in the selector section, loop through each subsection and perform
1365         the logic described above, but instead only to open sections.
1366
1367         (WebInspector.VisualStyleDetailsPanel.prototype._generateSection.replaceDashWithCapital): Deleted.
1368         (WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
1369         Removed logic that was already being called by _sectionModified().
1370
1371 2016-02-20  Devin Rousso  <dcrousso+webkit@gmail.com>
1372
1373         Web Inspector: Text Align segmented control blinks while editing other properties in Visual Styles sidebar
1374         https://bugs.webkit.org/show_bug.cgi?id=154487
1375         <rdar://problem/24754703>
1376
1377         Reviewed by Timothy Hatcher.
1378
1379         The icon list property editor blinking issue was caused by the fact that
1380         the selected value was toggled on/off each time the value was set on the
1381         editor. In order to prevent this, the logic for the setter value() was
1382         modified to just match a keyword icon to the given value and select it.
1383
1384         * UserInterface/Views/VisualStyleKeywordIconList.js:
1385         (WebInspector.VisualStyleKeywordIconList.prototype.set value):
1386         (WebInspector.VisualStyleKeywordIconList.prototype._handleKeywordChanged):
1387
1388 2016-02-20  Nikita Vasilyev  <nvasilyev@apple.com>
1389
1390         Web Inspector: Placeholder text in Visual Styles sidebar table row should be white
1391         https://bugs.webkit.org/show_bug.cgi?id=154488
1392         <rdar://problem/24754715>
1393
1394         Reviewed by Timothy Hatcher.
1395
1396         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
1397         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle):
1398
1399 2016-02-19  Nikita Vasilyev  <nvasilyev@apple.com>
1400
1401         Web Inspector: Inherited selector rows have text too low
1402         https://bugs.webkit.org/show_bug.cgi?id=154489
1403         <rdar://problem/24754774>
1404
1405         Reviewed by Timothy Hatcher.
1406
1407         * UserInterface/Views/VisualStyleSelectorSection.css:
1408         (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider):
1409
1410 2016-02-19  Devin Rousso  <dcrousso+webkit@gmail.com>
1411
1412         Web Inspector: Color picker in Visual Styles sidebar should not default to zero alpha
1413         https://bugs.webkit.org/show_bug.cgi?id=154474
1414         <rdar://problem/24750217>
1415
1416         Reviewed by Timothy Hatcher.
1417
1418         * UserInterface/Views/InlineSwatch.js:
1419         (WebInspector.InlineSwatch.prototype._fallbackValue):
1420         Changed the fallback value for color from transparent to white so that
1421         the color picker starts out with an alpha value of 1.
1422
1423         (WebInspector.InlineSwatch.prototype._handleContextMenuEvent):
1424         Prevents context menu events from having an effect if there is no value
1425         for them to modify.
1426
1427 2016-02-19  Matt Baker  <mattbaker@apple.com>
1428
1429         Web Inspector: CSS var() function should be syntax highlighted
1430         https://bugs.webkit.org/show_bug.cgi?id=154406
1431         <rdar://problem/24726136>
1432
1433         Reviewed by Timothy Hatcher.
1434
1435         * UserInterface/Models/CSSCompletions.js:
1436         Added "var" to CodeMirror value keywords for syntax highlighting.
1437
1438         * UserInterface/Models/CSSKeywordCompletions.js:
1439         (WebInspector.CSSKeywordCompletions.forProperty):
1440         Added "var" to accepted keywords for auto-completion.
1441
1442 2016-02-18  Devin Rousso  <dcrousso+webkit@gmail.com>
1443
1444         Web Inspector: Styles Sidebar focus jumps when trying to edit a color
1445         https://bugs.webkit.org/show_bug.cgi?id=154404
1446         <rdar://problem/24725744>
1447
1448         Reviewed by Timothy Hatcher.
1449
1450         Clicking an inline swatch in the CSS Rules sidebar causes any focused
1451         editor, if any, to become blurred and therefore fire its handler function.
1452         This causes an issue because when a CodeMirror instance in the styles
1453         sidebar becomes blurred, it is possible for the entire Rules sidebar to
1454         refresh and recreate all of the sections (r187714), meaning that it will
1455         reselect whatever editor was previously selected before the refresh,
1456         causing the swatch popup to be blurred and therefore dismiss.
1457
1458         * UserInterface/Views/CSSStyleDeclarationSection.js:
1459         (WebInspector.CSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorBlurActiveEditor):
1460
1461         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
1462         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.createSwatch):
1463         (WebInspector.CSSStyleDeclarationTextEditor.prototype._inlineSwatchBeforeClicked):
1464         Add listener for new event and call to delegate function for handling it.
1465
1466         * UserInterface/Views/InlineSwatch.js:
1467         (WebInspector.InlineSwatch.prototype._swatchElementClicked):
1468         Now fires an event before the clicked logic happens, but still after the
1469         click event is fired on the element.
1470
1471         * UserInterface/Views/RulesStyleDetailsPanel.js:
1472         (WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionBlurActiveEditor):
1473         Clears the previously focused editor so when a reset happens no editor
1474         is refocused.
1475
1476 2016-02-18  Joseph Pecoraro  <pecoraro@apple.com>
1477
1478         Web Inspector: Add Native Parameter Lists to Console prototype functions
1479         https://bugs.webkit.org/show_bug.cgi?id=154419
1480         <rdar://problem/24730314>
1481
1482         Reviewed by Timothy Hatcher.
1483
1484         * UserInterface/Models/NativeFunctionParameters.js:
1485
1486 2016-02-18  Nikita Vasilyev  <nvasilyev@apple.com>
1487
1488         Web Inspector: Align console prompt with execution context selector
1489         https://bugs.webkit.org/show_bug.cgi?id=154381
1490
1491         Reviewed by Timothy Hatcher.
1492
1493         * UserInterface/Views/QuickConsole.css:
1494         (.quick-console > .console-prompt > .CodeMirror):
1495         (.quick-console .execution-context):
1496
1497 2016-02-18  Devin Rousso  <dcrousso+webkit@gmail.com>
1498
1499         Web Inspector: Storage tab navigation bar should fit on a single line
1500         https://bugs.webkit.org/show_bug.cgi?id=152473
1501         <rdar://problem/24023435>
1502
1503         Reviewed by Timothy Hatcher.
1504
1505         * UserInterface/Base/Utilities.js:
1506         (Number.constrain):
1507         Reworked logic to ensure that the returned value is never less than the
1508         given minimum value.
1509
1510 2016-02-17  Devin Rousso  <dcrousso+webkit@gmail.com>
1511
1512         Web Inspector: In the styles sidebar, Option-clicking on --css-variable should jump to its definition
1513         https://bugs.webkit.org/show_bug.cgi?id=154082
1514         <rdar://problem/24593361>
1515
1516         Reviewed by Timothy Hatcher.
1517
1518         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
1519         (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
1520         (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
1521         Now tests to see if the highlighted token was a CSS variable and if
1522         so, attempts to show the declaration of the CSS variable instead of
1523         the location where it is used.
1524
1525 2016-02-17  Nikita Vasilyev  <nvasilyev@apple.com>
1526
1527         REGRESSION (r196620): Web Inspector: DataGrid headers and resizers are misaligned when the scrollbar is visible
1528         https://bugs.webkit.org/show_bug.cgi?id=154280
1529         <rdar://problem/24670567>
1530
1531         Reviewed by Timothy Hatcher.
1532
1533         Revert back to "overflow-y: overlay".
1534
1535         * UserInterface/Views/DataGrid.css:
1536         (.data-grid .data-container):
1537         * UserInterface/Views/DatabaseContentView.css:
1538         (.storage-view.query):
1539
1540 2016-02-17  Nikita Vasilyev  <nvasilyev@apple.com>
1541
1542         REGRESSION (r196620): Web Inspector: When the scrollbars are always visible, the console prompt is 1px taller
1543         https://bugs.webkit.org/show_bug.cgi?id=154328
1544         <rdar://problem/24692996>
1545
1546         Introduce a CSS variable to ensure that the quick console is the
1547         same height as the bottom right section of the styles sidebar.
1548
1549         Reviewed by Timothy Hatcher.
1550
1551         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
1552         (.sidebar > .panel.details.css-style > .content ~ .options-container):
1553         (.sidebar > .panel.details.css-style > .content ~ .class-list-container):
1554         * UserInterface/Views/QuickConsole.css:
1555         (.quick-console):
1556         * UserInterface/Views/Variables.css:
1557         (:root):
1558
1559 2016-02-17  Devin Rousso  <dcrousso+webkit@gmail.com>
1560
1561         Web Inspector: Add Context menu separators to Styles sidebar
1562         https://bugs.webkit.org/show_bug.cgi?id=154360
1563
1564         Reviewed by Joseph Pecoraro.
1565
1566         In the Styles sidebar, there are three main sections for the context menu:
1567         - Copy and Duplicate/Show-source
1568         - Add pseudo-class rules
1569         - Add/Select pseudo-element rules
1570         These three sections were all put together in the same context menu, which
1571         was very crowded as a result. Separators have been added to make it so that
1572         these three sections are now separated and clearly show their different uses.
1573
1574         * UserInterface/Views/CSSStyleDeclarationSection.js:
1575         (WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
1576
1577         * UserInterface/Views/VisualStyleSelectorTreeItem.js:
1578         (WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):
1579
1580 2016-02-17  Matt Baker  <mattbaker@apple.com>
1581
1582         Web Inspector: add CSS variables for common border/background colors
1583         https://bugs.webkit.org/show_bug.cgi?id=154302
1584         <rdar://problem/24680944>
1585
1586         Reviewed by Timothy Hatcher.
1587
1588         Added CSS variables for commonly used border and background colors, and removed
1589         duplicate CSS variables with less generic names. Inactive border colors declared in
1590         rules with a body.window-inactive selector have been removed. A new rule using this
1591         selector in Variables.css sets "--border-color" to the inactive color.
1592
1593         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
1594         (.sidebar > .panel.details.css-style > .content > .pseudo-classes):
1595         (.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):
1596         (.sidebar > .panel.details.css-style > .content.filter-in-progress .style-declaration-section:not(.filter-section-has-label)):
1597         * UserInterface/Views/DataGrid.css:
1598         (.data-grid.inline):
1599         (.data-grid th):
1600         (.data-grid :matches(th, td):not(:last-child)):
1601         (body.window-inactive .data-grid th): Deleted.
1602         (body.window-inactive .data-grid :matches(th, td):not(:last-child)): Deleted.
1603         * UserInterface/Views/DebuggerSidebarPanel.css:
1604         (.sidebar > .panel.navigation.debugger.paused .details-section.scripts):
1605         * UserInterface/Views/DetailsSection.css:
1606         (.details-section):
1607         (.details-section .details-section:first-child):
1608         (.details-section > .header):
1609         (.details-section > .content > .group):
1610         (.details-section > .content > .group:nth-child(even) > .row:matches(.simple:first-child > *, :not(.simple):first-child)):
1611         * UserInterface/Views/FilterBar.css:
1612         (.filter-bar):
1613         * UserInterface/Views/FindBanner.css:
1614         (.find-banner):
1615         (body.window-inactive .find-banner): Deleted.
1616         * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
1617         (.panel.details.layer-tree .bottom-bar):
1618         * UserInterface/Views/Main.css:
1619         (body.docked.bottom):
1620         (body.docked.right):
1621         (#split-content-browser):
1622         (#split-content-browser > .navigation-bar):
1623         (body.window-inactive.docked.bottom): Deleted.
1624         (body.window-inactive.docked.right): Deleted.
1625         (body.window-inactive #split-content-browser): Deleted.
1626         * UserInterface/Views/MemoryCategoryView.css:
1627         (.memory-category-view):
1628         (.memory-category-view > .details):
1629         (body.window-inactive .memory-category-view): Deleted.
1630         (body.window-inactive .memory-category-view > .details): Deleted.
1631         * UserInterface/Views/MemoryTimelineView.css:
1632         (.timeline-view.memory):
1633         (.timeline-view.memory > .content > .overview):
1634         (.timeline-view.memory > .content > .details > .subtitle):
1635         (.timeline-view.memory > .content > .overview > .divider):
1636         (body.window-inactive .timeline-view.memory): Deleted.
1637         (body.window-inactive .timeline-view.memory > .content > .overview): Deleted.
1638         (body.window-inactive .timeline-view.memory > .content > .details > .subtitle): Deleted.
1639         (body.window-inactive .timeline-view.memory > .content > .overview > .divider): Deleted.
1640         * UserInterface/Views/NavigationBar.css:
1641         (.navigation-bar):
1642         (body.window-inactive .navigation-bar): Deleted.
1643         * UserInterface/Views/NavigationSidebarPanel.css:
1644         (.sidebar > .panel.navigation > .overflow-shadow):
1645         (body.window-inactive .sidebar > .panel.navigation > .overflow-shadow): Deleted.
1646         * UserInterface/Views/NetworkSidebarPanel.css:
1647         (.sidebar > .panel.navigation.network > .title-bar):
1648         (body.window-inactive .sidebar > .panel.navigation.network > .title-bar): Deleted.
1649         * UserInterface/Views/OverviewTimelineView.css:
1650         (.timeline-view.overview > .timeline-ruler > .header):
1651         (body.window-inactive .timeline-view.overview > .timeline-ruler > .header): Deleted.
1652         * UserInterface/Views/QuickConsole.css:
1653         (.quick-console):
1654         (body.window-inactive .quick-console): Deleted.
1655         * UserInterface/Views/Sidebar.css:
1656         (.sidebar):
1657         (.sidebar.left):
1658         (.sidebar.right):
1659         (body.window-inactive .sidebar.left): Deleted.
1660         (body.window-inactive .sidebar.right): Deleted.
1661         * UserInterface/Views/TimelineDataGrid.css:
1662         (.data-grid.timeline th):
1663         (body.window-inactive .data-grid.timeline th): Deleted.
1664         * UserInterface/Views/TimelineRuler.css:
1665         (.timeline-ruler > .header):
1666         (body.window-inactive .timeline-ruler > .header): Deleted.
1667         * UserInterface/Views/TimelineSidebarPanel.css:
1668         (.sidebar > .panel.navigation.timeline > .title-bar):
1669         (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
1670         (body.window-inactive .sidebar > .panel.navigation.timeline > .title-bar): Deleted.
1671         (body.window-inactive .sidebar > .panel.navigation.timeline > .title-bar.timeline-events): Deleted.
1672         * UserInterface/Views/Toolbar.css:
1673         (body.latest-mac .toolbar .dashboard-container):
1674         * UserInterface/Views/Variables.css:
1675         (:root):
1676         (body.window-inactive *):
1677         * UserInterface/Views/VisualStyleSelectorSection.css:
1678         (.details-section.visual-style-selector-section:not(.collapsed) > .header):
1679         (.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider):
1680
1681 2016-02-17  Matt Baker  <mattbaker@apple.com>
1682
1683         Web Inspector: Add singular and plural cases for "Ignore n times before stopping" label in breakpoint editor
1684         https://bugs.webkit.org/show_bug.cgi?id=154335
1685         <rdar://problem/24655491>
1686
1687         Reviewed by Timothy Hatcher.
1688
1689         * Localizations/en.lproj/localizedStrings.js:
1690         Added string for singular ignore count.
1691
1692         * UserInterface/Controllers/BreakpointPopoverController.js:
1693         (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
1694         Remove unused variable "this._ignoreCount" and update ignore count text.
1695
1696         (WebInspector.BreakpointPopoverController.prototype._popoverIgnoreInputChanged):
1697         Update ignore count text as value changes.
1698
1699         (WebInspector.BreakpointPopoverController.prototype._updateIgnoreCountText):
1700         Set singular text when count === 1, otherwise set plural text.
1701
1702 2016-02-16  Nikita Vasilyev  <nvasilyev@apple.com>
1703
1704         REGRESSION (r196620): Web Inspector: Selecting last message in the console makes the scrollbar visible
1705         https://bugs.webkit.org/show_bug.cgi?id=154326
1706         <rdar://problem/24692717>
1707
1708         Reviewed by Timothy Hatcher.
1709
1710         * UserInterface/Views/LogContentView.css:
1711         (.console-item.selected::after):
1712         Make sure the selected message marker (blue vertical line) doesn't
1713         go over the content view.
1714
1715 2016-02-16  Joseph Pecoraro  <pecoraro@apple.com>
1716
1717         JSContext Inspector: Support for inline source maps
1718         https://bugs.webkit.org/show_bug.cgi?id=154303
1719         <rdar://problem/24670392>
1720
1721         Reviewed by Timothy Hatcher.
1722
1723         * UserInterface/Base/URLUtilities.js:
1724         (parseDataURL):
1725         Break a data URL into components.
1726
1727         * UserInterface/Controllers/SourceMapManager.js:
1728         (WebInspector.SourceMapManager.prototype._loadAndParseSourceMap):
1729         Handle a data URL without using NetworkAgent. Also move references
1730         to a main frame after checking for NetworkAgent.
1731
1732         * UserInterface/Models/SourceMap.js:
1733         (WebInspector.SourceMap.prototype.get sourceMappingBasePathURLComponents):
1734         * UserInterface/Models/SourceMapResource.js:
1735         (WebInspector.SourceMapResource.prototype.get sourceMapDisplaySubpath):
1736         Handle JavaScript debuggable script URLs which may not be complete URLs.
1737
1738         (WebInspector.SourceMapResource.prototype.requestContentFromBackend):
1739         Also handle if NetworkAgent does not exist.
1740
1741         * UserInterface/Views/ResourceSidebarPanel.js:
1742         (WebInspector.ResourceSidebarPanel):
1743         When connected to a JavaScript debuggable we were hiding disclosure
1744         triangles as we did not expect resources to have subresources. If
1745         a SourceMap is added, show them again.
1746
1747 2016-02-16  Nikita Vasilyev  <nvasilyev@apple.com>
1748
1749         Web Inspector: Increase the width of the find banner's search field
1750         https://bugs.webkit.org/show_bug.cgi?id=154284
1751
1752         Reviewed by Timothy Hatcher.
1753
1754         * UserInterface/Views/FindBanner.css:
1755         (.find-banner > input[type="search"]):
1756         Keep the minimum width the same as the current width.
1757
1758         (body .find-banner.console-find-banner):
1759         Overwrite ".navigation-bar .item {flex-wrap: nowrap}".
1760
1761 2016-02-15  Nikita Vasilyev  <nvasilyev@apple.com>
1762
1763         Web Inspector: Non-overlay scrollbars obscure the ends of lines in the console and sidebars
1764         https://bugs.webkit.org/show_bug.cgi?id=154276
1765
1766         Reviewed by Timothy Hatcher.
1767
1768         * UserInterface/Views/DataGrid.css:
1769         (.data-grid .data-container):
1770         * UserInterface/Views/DatabaseContentView.css:
1771         (.storage-view.query):
1772         * UserInterface/Views/LogContentView.css:
1773         (.content-view.log):
1774         Replace all occurrences of "overflow-y: overlay" with "overflow-y: auto".
1775
1776 2016-02-15  Devin Rousso  <dcrousso+webkit@gmail.com>
1777
1778         Web Inspector: Visual sidebar minor regression fixes
1779         https://bugs.webkit.org/show_bug.cgi?id=154237
1780         <rdar://problem/24653135>
1781
1782         Reviewed by Timothy Hatcher.
1783
1784         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
1785         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-special-property-placeholder):
1786         Do not display the placeholder, as it is not used in comma separated value
1787         property editors.
1788
1789         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle::before):
1790         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle): Deleted.
1791         Added ::before to get rid of the "-" on subtitle elements (r196266).
1792
1793         * UserInterface/Views/VisualStyleDetailsPanel.js:
1794         (WebInspector.VisualStyleDetailsPanel.prototype.widthDidChange):
1795         Recalculates the width for all comma separated value elements (r196266).
1796
1797         (WebInspector.VisualStyleDetailsPanel.prototype._updateSections):
1798         Only open/close sections with properties that have values when a new node
1799         or selector item is selected.
1800
1801         (WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection):
1802         Make copies of the default unit lists to prevent modifying the values used
1803         later in other sections (r194728).
1804
1805 2016-02-15  Matt Baker  <mattbaker@apple.com>
1806
1807         Web Inspector: eliminate the linear and rendering frames TimelineOverview subclasses
1808         https://bugs.webkit.org/show_bug.cgi?id=154000
1809         <rdar://problem/24553105>
1810
1811         Reviewed by Timothy Hatcher.
1812
1813         This patch eliminates the TimelineOverview subclasses, and moves logic for switching between
1814         a time-based or frame-based graph into the overview itself. The values of the overview's start
1815         time, current time, and end time now match the values in the timeline recording regardless of the
1816         current view mode. When viewing the rendering frames graph, the recording times are ignored and
1817         all frames are included. The overview maintains separate zoom level and ruler selection settings
1818         for each view mode.
1819
1820         * UserInterface/Main.html:
1821         * UserInterface/Views/LinearTimelineOverview.js: Removed.
1822         * UserInterface/Views/RenderingFrameTimelineOverview.js: Removed.
1823         Removed TimelineOverview subclasses.
1824
1825         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
1826         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype.get height):
1827         Set FPS graph height to 108 pixels.
1828
1829         * UserInterface/Views/TimelineOverview.css:
1830         (.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)):
1831         (.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:not(:first-child)):
1832         (.timeline-overview > .graphs-container > .timeline-overview-graph:nth-child(even)): Deleted.
1833         (.timeline-overview > .graphs-container > .timeline-overview-graph:not(:first-child)): Deleted.
1834         Disable alternating graph styles when showing FPS instrument.
1835
1836         * UserInterface/Views/TimelineOverview.js:
1837         (WebInspector.TimelineOverview):
1838         Create separate settings for timelines and FPS view modes.
1839         (WebInspector.TimelineOverview.prototype.get viewMode):
1840         (WebInspector.TimelineOverview.prototype.set viewMode):
1841         (WebInspector.TimelineOverview.prototype.set startTime):
1842         Adjust the current ruler selection when start time changes. Not necessary
1843         when showing the FPS instrument, which doesn't have a start time.
1844         (WebInspector.TimelineOverview.prototype.get secondsPerPixel):
1845         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
1846         Now a wrapper around the corresponding view mode setting.
1847         (WebInspector.TimelineOverview.prototype.set pixelAlignDuration):
1848         (WebInspector.TimelineOverview.prototype.get scrollStartTime):
1849         (WebInspector.TimelineOverview.prototype.set scrollStartTime):
1850         Now a wrapper around the corresponding view mode setting.
1851         (WebInspector.TimelineOverview.prototype.get visibleDuration):
1852         (WebInspector.TimelineOverview.prototype.get height):
1853         Return the sum height of all visible overview graphs.
1854         (WebInspector.TimelineOverview.prototype.shown):
1855         Show overview graphs for the current view mode.
1856         (WebInspector.TimelineOverview.prototype.hidden):
1857         (WebInspector.TimelineOverview.prototype.reset):
1858         (WebInspector.TimelineOverview.prototype.recordWasFiltered):
1859         (WebInspector.TimelineOverview.prototype.selectRecord):
1860         (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
1861         (WebInspector.TimelineOverview.prototype.layout):
1862         Layout for both view modes is largely identical, and differs only in the treatment
1863         of the overview's start time, current time, and end time. Time-based instruments
1864         use time values from the recording, while the FPS instrument has a fixed start time
1865         of zero, and a current and end time pinned to the last rendering frame.
1866         (WebInspector.TimelineOverview.prototype._handleScrollEvent):
1867         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
1868         (WebInspector.TimelineOverview._handleGestureStart):
1869         (WebInspector.TimelineOverview.prototype._handleGestureChange):
1870         (WebInspector.TimelineOverview.prototype._instrumentAdded):
1871         (WebInspector.TimelineOverview.prototype._instrumentRemoved):
1872         (WebInspector.TimelineOverview.prototype._timelineRulerMouseClicked):
1873         (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
1874         Save the selection for the current view mode.
1875         (WebInspector.TimelineOverview.prototype._recordSelected):
1876         (WebInspector.TimelineOverview.prototype._resetSelection.reset):
1877         (WebInspector.TimelineOverview.prototype._resetSelection):
1878         (WebInspector.TimelineOverview.prototype._canShowTimelineType):
1879         (WebInspector.TimelineOverview.prototype._viewModeDidChange):
1880         Sets zoom level, ruler selection, and graph visibility based on current view mode.
1881         (WebInspector.TimelineOverview.prototype._createViewModeSettings):
1882         Helper function for creating an object to track the zoom level and ruler
1883         selection of each view mode.
1884         (WebInspector.TimelineOverview.prototype.get _currentSettings):
1885         Internal getter for retrieving the settings for the current view mode.
1886         (WebInspector.TimelineOverview.prototype.canShowTimeline): Deleted.
1887         Not needed now that the overview contains all timelines.
1888
1889         * UserInterface/Views/TimelineOverviewGraph.js:
1890         (WebInspector.TimelineOverviewGraph):
1891         (WebInspector.TimelineOverviewGraph.prototype.shown):
1892         (WebInspector.TimelineOverviewGraph.prototype.hidden):
1893         Toggle CSS hidden class.
1894
1895         * UserInterface/Views/TimelineRecordFrame.js:
1896         No need to query offsetHeight now that TimelineOverviewGraph has a height property.
1897
1898         * UserInterface/Views/TimelineRecordingContentView.js:
1899         (WebInspector.TimelineRecordingContentView):
1900         Create a single timeline overview.
1901         (WebInspector.TimelineRecordingContentView.prototype.get timelineOverviewHeight):
1902         (WebInspector.TimelineRecordingContentView.prototype.shown):
1903         (WebInspector.TimelineRecordingContentView.prototype.hidden):
1904         (WebInspector.TimelineRecordingContentView.prototype.recordWasFiltered):
1905         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
1906         Update the timeline  overview's mode based on the current timeline view.
1907         (WebInspector.TimelineRecordingContentView.prototype._contentViewSelectionPathComponentDidChange):
1908         (WebInspector.TimelineRecordingContentView.prototype._updateTimes):
1909         Removed special handling for the FPS overview.
1910         Removed selection start time adjustment, which is now handled internally by TimelineOverview.
1911         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
1912         (WebInspector.TimelineRecordingContentView.prototype._recordingReset):
1913         (WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
1914         (WebInspector.TimelineRecordingContentView.prototype._updateFrameSelection):
1915
1916         * UserInterface/Views/TimelineSidebarPanel.js:
1917         (WebInspector.TimelineSidebarPanel):
1918         (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
1919         (WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie):
1920         (WebInspector.TimelineSidebarPanel.prototype._renderingFrameTimelineTimesUpdated):
1921         (WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):
1922         Refresh the view mode when the content view changes.
1923         (WebInspector.TimelineSidebarPanel.prototype._recordingSelected):
1924         (WebInspector.TimelineSidebarPanel.prototype._viewModeSelected):
1925         (WebInspector.TimelineSidebarPanel.prototype._viewModeForTimeline):
1926         (WebInspector.TimelineSidebarPanel.prototype._updateViewModeIfNeeded):
1927         Sync the tree outline, frames chart, and navigation bar with the current view mode.
1928         (WebInspector.TimelineSidebarPanel.prototype.shown):
1929         Refreshing the frame selection is unnecessary. It's updated by the recording content
1930         view whenever the ruler selection changes.
1931         (WebInspector.TimelineSidebarPanel.prototype.get viewMode): Deleted.
1932         No longer public, since the timeline overview now owns the view mode. Internally the sidebar
1933         still tracks the current state so it can determine when the value has changed.
1934         (WebInspector.TimelineSidebarPanel.prototype.showTimelineOverview):
1935         (WebInspector.TimelineSidebarPanel.prototype.showTimelineViewForTimeline):
1936         The sidebar should only be synced to the overview after the content view has changed.
1937         (WebInspector.TimelineSidebarPanel.prototype.updateFrameSelection):
1938         Removed unnecessary assertion.
1939         (WebInspector.TimelineSidebarPanel.prototype._changeViewMode): Deleted.
1940         Replaced by _updateViewModeIfNeeded.
1941
1942 2016-02-15  Timothy Hatcher  <timothy@apple.com>
1943
1944         Web Inspector: Show inherited CSS variables in the Style sidebar
1945         https://bugs.webkit.org/show_bug.cgi?id=154215
1946         rdar://problem/24644058
1947
1948         Reviewed by Joseph Pecoraro.
1949
1950         * UserInterface/Models/CSSProperty.js:
1951         (WebInspector.CSSProperty.isInheritedPropertyName): Added.
1952         (WebInspector.CSSProperty.prototype.update): Use WebInspector.CSSProperty.isInheritedPropertyName.
1953         * UserInterface/Models/DOMNodeStyles.js:
1954         (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload): Use WebInspector.CSSProperty.isInheritedPropertyName.
1955
1956 2016-02-15  Timothy Hatcher  <timothy@apple.com>
1957
1958         Web Inspector: Sidebars are defaulting to their minimum width, instead of a good width
1959         https://bugs.webkit.org/show_bug.cgi?id=154218
1960         rdar://problem/24644192
1961
1962         Reviewed by Joseph Pecoraro.
1963
1964         * UserInterface/Views/SidebarPanel.js:
1965         (WebInspector.SidebarPanel): Default the setting value to 300 instead of 0, so the minimum isn't used.
1966
1967 2016-02-15  Timothy Hatcher  <timothy@apple.com>
1968
1969         Web Inspector: CSS variables are not formatted correctly
1970         https://bugs.webkit.org/show_bug.cgi?id=154217
1971         rdar://problem/24644154
1972
1973         Reviewed by Joseph Pecoraro.
1974
1975         * UserInterface/Views/CodeMirrorFormatters.js:
1976         (newlineBeforeToken): Check for `variable-2` token in the `maybeprop` state.
1977
1978 2016-02-15  Timothy Hatcher  <timothy@apple.com>
1979
1980         Web Inspector: CodeMirror styles needs updated for CSS variables
1981         https://bugs.webkit.org/show_bug.cgi?id=154216
1982         rdar://problem/24644146
1983
1984         Reviewed by Joseph Pecoraro.
1985
1986         * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
1987         (.cm-s-default .cm-m-css:matches(.cm-atom, .cm-meta, .cm-variable-2, .cm-variable-3, .cm-property)): Added .cm-variable-2.
1988         (.cm-s-default .basic-block-has-not-executed.cm-m-css:matches(.cm-atom, .cm-meta, .cm-variable-2, .cm-variable-3, .cm-property)): Ditto.
1989
1990 2016-02-13  Dan Bernstein  <mitz@apple.com>
1991
1992         Removed the unused Frameworks group.
1993
1994         Rubber-stamped by Sam Weinig.
1995
1996         * WebInspectorUI.xcodeproj/project.pbxproj:
1997
1998 2016-02-13  Devin Rousso  <dcrousso+webkit@gmail.com>
1999
2000         Web Inspector: DataGrid Header Cells should have Context Menu for Sorting
2001         https://bugs.webkit.org/show_bug.cgi?id=154050
2002
2003         Reviewed by Joseph Pecoraro.
2004
2005         * Localizations/en.lproj/localizedStrings.js:
2006         * UserInterface/Views/DataGrid.js:
2007         (WebInspector.DataGrid.prototype.set sortOrder):
2008         (WebInspector.DataGrid.prototype._toggledSortOrder):
2009         Returns the opposite sort order from the current order.
2010
2011         (WebInspector.DataGrid.prototype._selectSortColumnAndSetOrder):
2012         Changes the selected column to the one with the specified identifier and
2013         then switches the sort order to the given order.
2014
2015         (WebInspector.DataGrid.prototype._headerCellClicked):
2016         Moved logic for switching cells/sort-order to a separate function for
2017         better reusability.
2018
2019         (WebInspector.DataGrid.prototype._contextMenuInHeader):
2020         Adds context menu items on DataGrid header items to change the current
2021         sort order to the specified order. If the context menu is on the selected
2022         header item, only show the sort order that is not currently applied.
2023
2024 2016-02-12  Joseph Pecoraro  <pecoraro@apple.com>
2025
2026         Web Inspector: Rename domAgent to domTreeManager in DOMNode
2027         https://bugs.webkit.org/show_bug.cgi?id=154194
2028
2029         Reviewed by Timothy Hatcher.
2030
2031         * UserInterface/Models/DOMNode.js:
2032         (WebInspector.DOMNode):
2033
2034 2016-02-12  Joseph Pecoraro  <pecoraro@apple.com>
2035
2036         Web Inspector: Avoid including ESLint until it is used
2037         https://bugs.webkit.org/show_bug.cgi?id=154196
2038
2039         Reviewed by Timothy Hatcher.
2040
2041         * Scripts/copy-user-interface-resources.pl:
2042         Do not include ESLint in optimized output yet.
2043
2044         * UserInterface/Controllers/AnalyzerManager.js:
2045         Do not reference `eslint` until we use it.
2046
2047         * UserInterface/Main.html:
2048         Remove include to ESLint until we need it.
2049
2050 2016-02-12  Joseph Pecoraro  <pecoraro@apple.com>
2051
2052         Web Inspector: Tabs: Conflicts with multiple Formatters per SourceCode
2053         https://bugs.webkit.org/show_bug.cgi?id=144717
2054         <rdar://problem/20845163>
2055
2056         Reviewed by Timothy Hatcher.
2057
2058         The underlying issue here is that each tab may create its own ContentView,
2059         and therefore SourceCodeTextEditor, per-SourceCode. Each SourceCodeTextEditor
2060         was mutating the SourceCode's state without listening for or expecting
2061         updates from the other. This causes a bunch of different issues:
2062
2063             - editing in one tab does not get reflected in another tab for
2064               the same resource. This is common when using the Search tab
2065               to find and make an edit, then debug in another tab.
2066
2067             - one tab may auto format (pretty print) a resource and set
2068               the formatter on the SourceCode to make SourceCodeLocations
2069               know about formatted locations. However, a jump to location
2070               that opens a new ContentView for the same Resource will
2071               start out un-formatted, and misunderstand the location.
2072               This often results in an unexpected jump to 0:0.
2073
2074         The solution taken by this change is to have a single ContentView
2075         per represented object. When that ContentView gets shown in a new
2076         ContentViewContainer it gets transferred, leaving a tombstone in the
2077         previous ContentViewContainer that can be revived later. This keeps
2078         back foward lists with expected values. It also means there is a
2079         single ContentView that doesn't need to worry about having the
2080         state of its represented object getting overrun.
2081
2082         Currently this makes the assumption that we won't ever show multiple
2083         ContentViews for the same represented object at the same time. This
2084         may need to change if we were to support split pane editor or
2085         something like that.
2086
2087         This also makes the assumption that ContentViewContainer's showEntry
2088         and hideEntry do not modify the back forward list. That has not been
2089         the case, and I think it is safe to assume it will never be the case.
2090
2091         The contracts this patch maintains:
2092
2093             - a ContentView is always owned by one ViewContainer.
2094               This ViewContainer is the one showing the ContentView.
2095
2096             - when another ViewContainer wants to share the ContentView
2097               ownership is transferred. Creating tombstones in the old
2098               ViewContainer and Reviving tombstones in the new ViewContainer.
2099
2100             - ViewContainer's have a tombstone per-BackForwardEntry that
2101               references the ContentView.
2102
2103             - In order to ensure a ContentView always gets closed, when
2104               the owning ViewContainer would close the ContentView it
2105               checks if it should instead transfer ownership of the
2106               ContentView to another interested ViewContainer.
2107
2108         This also maintains the contract that a ContentView should only be
2109         closed once. When the ContentView is transferred between two
2110         ContentViewContainers it should hide/show from the old to the new.
2111         The last ContentViewContainer to reference a ContentView should
2112         be the one to close the ContentView.
2113
2114         * UserInterface/Models/BackForwardEntry.js:
2115         (WebInspector.BackForwardEntry):
2116         (WebInspector.BackForwardEntry.prototype.get tombstone):
2117         (WebInspector.BackForwardEntry.prototype.set tombstone):
2118         (WebInspector.BackForwardEntry.prototype.prepareToShow):
2119         (WebInspector.BackForwardEntry.prototype.prepareToHide):
2120         Tombstone state and assertions that we don't show/hide tombstones,
2121         that should all be done before a back forward entry has become a tombstone.
2122
2123         * UserInterface/Views/ContentView.js:
2124         (WebInspector.ContentView.contentViewForRepresentedObject):
2125         (WebInspector.ContentView.closedContentViewForRepresentedObject):
2126         (WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject):
2127         Helpers for getting / creating / clearing the single ContentView that
2128         is associated with a represented object.
2129
2130         * UserInterface/Views/ContentViewContainer.js:
2131         (WebInspector.ContentViewContainer.prototype.contentViewForRepresentedObject):
2132         (WebInspector.ContentViewContainer.prototype.showContentView):
2133         Eliminate code that dealt with multiple content views per represented object.
2134         That is replaced by multiple ContentViewContainers per ContentView.
2135
2136         (WebInspector.ContentViewContainer.prototype.replaceContentView):
2137         This is called in special places where we don't need to worry about a tombstone.
2138         It is an in replace of a content view.
2139
2140         (WebInspector.ContentViewContainer.closeAllContentViewsOfPrototype):
2141         (WebInspector.ContentViewContainer.prototype.closeContentView):
2142         (WebInspector.ContentViewContainer.prototype.closeAllContentViews):
2143         (WebInspector.ContentViewContainer.prototype._disassociateFromContentView):
2144         Deal with closing BackForwardEntrys that are tombstones.
2145
2146         (WebInspector.ContentViewContainer.prototype._takeOwnershipOfContentView):
2147         (WebInspector.ContentViewContainer.prototype._placeTombstonesForContentView):
2148         (WebInspector.ContentViewContainer.prototype._clearTombstonesForContentView):
2149         Helpers for transfering ownership of a ContentView to a ContentViewContainer.
2150         There is always one owner of the ContentView. Non-owners have tombstone
2151         BackForward entries.
2152
2153         (WebInspector.ContentViewContainer.prototype._showEntry):
2154         If we are showing a tombstone, gain ownership.
2155
2156         (WebInspector.ContentViewContainer.prototype._hideEntry):
2157         This may happen in closing, for simplicity we bail here instead of include
2158         messy logic at the call site. We would have already hidden this entry
2159         when making it a tombstone.
2160
2161 2016-02-11  Joseph Pecoraro  <pecoraro@apple.com>
2162
2163         Web Inspector: SourceCodeTextEditor close() generates removeEventListener warnings
2164         https://bugs.webkit.org/show_bug.cgi?id=154150
2165
2166         Reviewed by Timothy Hatcher.
2167
2168         * UserInterface/Views/SourceCodeTextEditor.js:
2169         (WebInspector.SourceCodeTextEditor.prototype.close):
2170         Remove the event listeners in the cases that we would have added them.
2171         If we have SourceMap information we should remove the key listener,
2172         and if we don't we should remove the SourceMapAdded listener.
2173
2174 2016-02-10  Timothy Hatcher  <timothy@apple.com>
2175
2176         Web Inspector: Add new icon for the Timeline Recording navigation bar item
2177         https://bugs.webkit.org/show_bug.cgi?id=154089
2178         rdar://problem/24595652
2179
2180         Reviewed by Brian Burg.
2181
2182         * UserInterface/Images/Stopwatch.png: Removed.
2183         * UserInterface/Images/Stopwatch@2x.png: Removed.
2184         * UserInterface/Images/Stopwatch.svg: Added.
2185         * UserInterface/Views/TimelineIcons.css:
2186         (.stopwatch-icon .icon): Use Stopwatch.svg.
2187         (body:not(.mac-platform, .windows-platform) .stopwatch-icon .icon): Added for GTK+.
2188
2189 2016-02-10  Matt Baker  <mattbaker@apple.com>
2190
2191         Web Inspector: Switching actions in Edit Breakpoint popover causes a jerk
2192         https://bugs.webkit.org/show_bug.cgi?id=154093
2193         <rdar://problem/24597869>
2194
2195         Reviewed by Timothy Hatcher.
2196
2197         Adjusted CodeMirror eval editor styles to match vanilla input field.
2198
2199         * UserInterface/Views/BreakpointActionView.css:
2200         (.breakpoint-action-eval-editor):
2201
2202 2016-02-09  Joseph Pecoraro  <pecoraro@apple.com>
2203
2204         Regression: Web Inspector: Sometimes in Elements panel two elements showed as selected at the same time
2205         https://bugs.webkit.org/show_bug.cgi?id=149742
2206         <rdar://problem/24492481>
2207
2208         Reviewed by Timothy Hatcher.
2209
2210         * UserInterface/Views/DOMTreeElement.js:
2211         (WebInspector.DOMTreeElement.prototype.moveChild):
2212         Since removing and re-adding this tree element may forgot its
2213         entire child tree, re-select the selected child that may have
2214         just been lost in the shuffle.
2215
2216         * UserInterface/Views/TreeOutline.js:
2217         (WebInspector.TreeOutline.prototype._forgetTreeElement):
2218         When forgetting the selected tree element, also deselect the
2219         forgotten tree element so it clears its selected state.
2220
2221 2016-02-09  Joseph Pecoraro  <pecoraro@apple.com>
2222
2223         Web Inspector: Allow copying all headers in the request/response header tables
2224         https://bugs.webkit.org/show_bug.cgi?id=154048
2225         <rdar://problem/24576302>
2226
2227         Reviewed by Timothy Hatcher.
2228
2229         * Localizations/en.lproj/localizedStrings.js:
2230         New "Copy Table" string.
2231
2232         * UserInterface/Views/DataGrid.js:
2233         (WebInspector.DataGrid):
2234         (WebInspector.DataGrid.prototype._contextMenuInHeader):
2235         Add context menu support for table header cells, and give them a
2236         "Copy Table" context menu if there is copyable data.
2237
2238         (WebInspector.DataGrid.prototype._contextMenuInDataTable):
2239         Add "Copy Table" context menu for copyable rows.
2240
2241         (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
2242         (WebInspector.DataGrid.prototype._copyTextForDataGridHeaders):
2243         (WebInspector.DataGrid.prototype._copyTable):
2244         (WebInspector.DataGrid.prototype._hasCopyableData):
2245         Helpers for determining copyability and copying tab separated data.
2246
2247 2016-02-09  Joseph Pecoraro  <pecoraro@apple.com>
2248
2249         Web Inspector: localStorage inspector very slow on big values
2250         https://bugs.webkit.org/show_bug.cgi?id=123750
2251         <rdar://problem/15384930>
2252
2253         Reviewed by Timothy Hatcher.
2254
2255         It is not useful to show very large strings in the DOM Storage DataGrid.
2256         This change truncates display strings to roughly 200 characters. If the
2257         developer really wants the full value of the string they can just access
2258         it through localStorage.
2259
2260         * UserInterface/Models/DOMStorageObject.js:
2261         (WebInspector.DOMStorageObject.prototype.getEntries.innerCallback):
2262         (WebInspector.DOMStorageObject.prototype.getEntries):
2263         (WebInspector.DOMStorageObject.prototype.itemUpdated):
2264         Modernize.
2265
2266         * UserInterface/Views/DOMStorageContentView.js:
2267         (WebInspector.DOMStorageContentView):
2268         (WebInspector.DOMStorageContentView.prototype.itemRemoved):
2269         Modernize.
2270
2271         (WebInspector.DOMStorageContentView.prototype.itemAdded):
2272         (WebInspector.DOMStorageContentView.prototype.itemUpdated):
2273         (WebInspector.DOMStorageContentView.prototype._truncateValue):
2274         (WebInspector.DOMStorageContentView.prototype._populate):
2275         Whenever we get a value that we will display, truncate it to
2276         just 200 characters.
2277
2278 2016-02-09  Joseph Pecoraro  <pecoraro@apple.com>
2279
2280         Web Inspector: Expiration column in Storage tab can't be sorted
2281         https://bugs.webkit.org/show_bug.cgi?id=154043
2282         <rdar://problem/24572272>
2283
2284         Reviewed by Brian Burg.
2285
2286         * UserInterface/Views/CookieStorageContentView.js:
2287         (WebInspector.CookieStorageContentView.prototype._sortDataGrid.expiresCompare):
2288         Sort Session as the shortest time, not the longest time. Use the
2289         cookie.expires date when sorting, not the locale string.
2290
2291 2016-02-09  Joseph Pecoraro  <pecoraro@apple.com>
2292
2293         Web Inspector: Limit max and min zoom factor of Inspector
2294         https://bugs.webkit.org/show_bug.cgi?id=154041
2295         <rdar://problem/24571326>
2296
2297         Reviewed by Brian Burg.
2298
2299         Chose reasonable zoom levels that looked good to my eye and
2300         roughly matched Safari's page zoom levels.
2301
2302         * UserInterface/Base/Main.js:
2303         (WebInspector.contentLoaded):
2304         Do not implicitly prevent default for zoom in/out keyboard shortcuts to
2305         allow for a system beep if we do not do anything. 
2306
2307         (WebInspector._increaseZoom):
2308         (WebInspector._decreaseZoom):
2309         Do not go beyond a max or min zoom level. Prevent default in the case
2310         where we actually zoom, but don't prevent default where we do not
2311         actually zoom to cause a system beep. Allow for a slight drift of
2312         the floating point value as it increases / decreases by 0.2 at the
2313         different zoom factors.
2314
2315         (WebInspector._resetZoom):
2316         (WebInspector._showTabAtIndex):
2317         Remove redundant prevent default calls, since it would happen
2318         implicitly for these keyboard shortcuts.
2319
2320 2016-02-08  Joseph Pecoraro  <pecoraro@apple.com>
2321
2322         Web Inspector: Uncaught exception merging script profiler records
2323         https://bugs.webkit.org/show_bug.cgi?id=154004
2324
2325         Reviewed by Brian Burg.
2326
2327         * UserInterface/Controllers/TimelineManager.js:
2328         (WebInspector.TimelineManager.prototype._mergeScriptProfileRecords):
2329         Stop if we've merged all script profiler records.
2330
2331 2016-02-08  Joseph Pecoraro  <pecoraro@apple.com>
2332
2333         Web Inspector: Search doesn't seem to find text that is present in multiple places
2334         https://bugs.webkit.org/show_bug.cgi?id=154016
2335         <rdar://problem/23391307>
2336
2337         Reviewed by Brian Burg.
2338
2339         * UserInterface/Controllers/DebuggerManager.js:
2340         (WebInspector.DebuggerManager.prototype.get searchableScripts):
2341         * UserInterface/Views/SearchSidebarPanel.js:
2342         (WebInspector.SearchSidebarPanel.prototype.performSearch):
2343         Only search scripts with a URL. Don't search the potentially
2344         large number of anonymous scripts.
2345
2346 2016-02-08  Joseph Pecoraro  <pecoraro@apple.com>
2347
2348         Web Inspector: Zooming in on the timeline graph does not increase its time resolution from minutes
2349         https://bugs.webkit.org/show_bug.cgi?id=154013
2350         <rdar://problem/23844527>
2351
2352         Reviewed by Brian Burg.
2353
2354         * UserInterface/Base/Utilities.js:
2355         (Number.secondsToString):
2356         Simplify logic and ensure that when under high resolution we
2357         don't go above seconds for our units.
2358
2359         (Number.bytesToString):
2360         Simplify logic.
2361
2362         * UserInterface/Views/LinearTimelineOverview.js:
2363         (WebInspector.LinearTimelineOverview):
2364         Reduce the rather large maximum seconds per pixel from 60 seconds
2365         per pixel to 2 seconds per pixel. This means when the user zooms
2366         out of a timeline they don't see such large time values.
2367
2368 2016-02-08  Joseph Pecoraro  <pecoraro@apple.com>
2369
2370         Web Inspector: Extract a few common unicode characters into global variables
2371         https://bugs.webkit.org/show_bug.cgi?id=154008
2372
2373         Reviewed by Timothy Hatcher.
2374
2375         * UserInterface/Base/Utilities.js:
2376         Create global variables for `emDash` and `ellipsis` to use all over the tools.
2377
2378         * UserInterface/Views/ConsoleMessageView.js:
2379         (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable): Deleted.
2380         * UserInterface/Views/DefaultDashboardView.js:
2381         (WebInspector.DefaultDashboardView.prototype._updateDisplay):
2382         * UserInterface/Views/HierarchicalPathComponent.js:
2383         (WebInspector.HierarchicalPathComponent.prototype._updateElementTitleAndText):
2384         (WebInspector.HierarchicalPathComponent.prototype._updateSelectElement.createOption):
2385         (WebInspector.HierarchicalPathComponent.prototype._updateSelectElement):
2386         * UserInterface/Views/HierarchicalPathNavigationItem.js:
2387         (WebInspector.HierarchicalPathNavigationItem.prototype.updateLayout):
2388         * UserInterface/Views/LayerTreeDataGridNode.js:
2389         (WebInspector.LayerTreeDataGridNode.prototype.set layer):
2390         * UserInterface/Views/LayoutTimelineDataGridNode.js:
2391         (WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
2392         (WebInspector.LayoutTimelineDataGridNode):
2393         * UserInterface/Views/MemoryCategoryView.js:
2394         (WebInspector.MemoryCategoryView.prototype._updateDetails): Deleted.
2395         (WebInspector.MemoryCategoryView): Deleted.
2396         * UserInterface/Views/MemoryTimelineView.js:
2397         (WebInspector.MemoryTimelineView.prototype._clearUsageLegend):
2398         (WebInspector.MemoryTimelineView.prototype._updateUsageLegend):
2399         (WebInspector.MemoryTimelineView.prototype._clearMaxComparisonLegend):
2400         (WebInspector.MemoryTimelineView.prototype._updateMaxComparisonLegend):
2401         * UserInterface/Views/MultipleScopeBarItem.js:
2402         (WebInspector.MultipleScopeBarItem.set scopeBarItems.createOption):
2403         (WebInspector.MultipleScopeBarItem.prototype.set scopeBarItems):
2404         * UserInterface/Views/ObjectPreviewView.js:
2405         (WebInspector.ObjectPreviewView.prototype._appendEntryPreviews):
2406         (WebInspector.ObjectPreviewView.prototype._appendPropertyPreviews):
2407         * UserInterface/Views/ProfileNodeDataGridNode.js:
2408         (WebInspector.ProfileNodeDataGridNode.prototype.createCellContent):
2409         (WebInspector.ProfileNodeDataGridNode):
2410         * UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
2411         (WebInspector.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
2412         (WebInspector.RenderingFrameTimelineDataGridNode):
2413         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
2414         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse): Deleted.
2415         (WebInspector.ResourceDetailsSidebarPanel.prototype._valueForSize): Deleted.
2416         * UserInterface/Views/ResourceTimelineDataGridNode.js:
2417         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
2418         * UserInterface/Views/ScriptTimelineDataGridNode.js:
2419         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
2420         (WebInspector.ScriptTimelineDataGridNode):
2421         * UserInterface/Views/SearchResultTreeElement.js:
2422         (WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
2423         * UserInterface/Views/TimelineDataGridNode.js:
2424         (WebInspector.TimelineDataGridNode.prototype.createCellContent):
2425         * UserInterface/Views/TypeTreeElement.js:
2426         (WebInspector.TypeTreeElement.prototype.onpopulate):
2427         * UserInterface/Views/TypeTreeView.js:
2428         (WebInspector.TypeTreeView.prototype._populate):
2429         (WebInspector.TypeTreeView):
2430
2431 2016-02-08  Joseph Pecoraro  <pecoraro@apple.com>
2432
2433         Web Inspector: ⇧⌘→ when editing text in the Elements tree shouldn't switch inspector tab
2434         https://bugs.webkit.org/show_bug.cgi?id=154006
2435         <rdar://problem/22892489>
2436
2437         Reviewed by Timothy Hatcher.
2438
2439         * UserInterface/Views/EditingSupport.js:
2440         (WebInspector.isEventTargetAnEditableField):
2441         Check the WebInspector's custom __editing state.
2442
2443 2016-02-08  Devin Rousso  <dcrousso+webkit@gmail.com>
2444
2445         Web Inspector: Long values for comma separated CSS properties overflow the Visual sidebar area
2446         https://bugs.webkit.org/show_bug.cgi?id=153890
2447         <rdar://problem/24510216>
2448
2449         Reviewed by Timothy Hatcher.
2450
2451         For especially long values in comma-separated CSS properties (such as
2452         background-image), the text will not be clipped as expected due to the
2453         way in which the width is calculated for the element (the value, inside
2454         the title element, is the only child with a specified width other than
2455         100%). This overflowing causes the width of the section containing that
2456         property to expand, pushing content outside of the inspector window. To
2457         remedy this, a specified width is set on the relevant properties based
2458         on the width of the sidebar to ensure proper text clipping.
2459
2460         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
2461         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item > .visual-style-comma-separated-keyword-item-editor):
2462         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles):
2463         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle):
2464         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container): Deleted.
2465         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list): Deleted.
2466         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item): Deleted.
2467
2468         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
2469         (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set specifiedWidth):
2470         Calculates the necessary subtractions from the given width value based on
2471         the margins and size of sibling elements.
2472
2473         * UserInterface/Views/VisualStyleDetailsPanel.js:
2474         (WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
2475         (WebInspector.VisualStyleDetailsPanel.prototype._populateFontSection):
2476         (WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
2477         (WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection):
2478         (WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection):
2479         Added another list to each group which, if set, will pass the current
2480         sidebar width to all contained property editors.
2481
2482         * UserInterface/Views/VisualStylePropertyEditor.js:
2483         (WebInspector.VisualStylePropertyEditor.prototype.update):
2484         Somewhat unrelated (r196146), but added another check to ensure that the
2485         CSS property exists before checking to see if it has an invalid value.
2486
2487 2016-02-08  Matt Baker  <mattbaker@apple.com>
2488
2489         Web Inspector: WebInspector.Setting should have a "reset" method
2490         https://bugs.webkit.org/show_bug.cgi?id=153971
2491         <rdar://problem/24544101>
2492
2493         Reviewed by Brian Burg.
2494
2495         Currently UI needing to restore a setting to its default must retain a copy
2496         of the default value. This should be a basic operation of WebInspector.Setting.
2497
2498         * UserInterface/Base/Setting.js:
2499         (WebInspector.Setting):
2500         (WebInspector.Setting.prototype.reset):
2501         Sets value to a copy of the default.
2502
2503 2016-02-06  Nikita Vasilyev  <nvasilyev@apple.com>
2504
2505         REGRESSION (r195432): Web Inspector: bottom right section of the styles sidebar is 1px taller than the console prompt
2506         https://bugs.webkit.org/show_bug.cgi?id=153959
2507         <rdar://problem/24541053>
2508
2509         Reviewed by Timothy Hatcher.
2510
2511         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
2512         (.sidebar > .panel.details.css-style > .content ~ .options-container):
2513         (.sidebar > .panel.details.css-style > .content ~ .class-list-container)::
2514         Revert the height to what it used to be prior r195432.
2515
2516 2016-02-05  Devin Rousso  <dcrousso+webkit@gmail.com>
2517
2518         Web Inspector: Visual Styles sidebar should be more forgiving to long labels
2519         https://bugs.webkit.org/show_bug.cgi?id=153927
2520         <rdar://problem/24343897>
2521
2522         Reviewed by Timothy Hatcher.
2523
2524         If a label is too long for it's container, it overflows and is visible
2525         above the rest of the elements nearby.
2526
2527         * UserInterface/Views/VisualStylePropertyEditor.css:
2528         (.visual-style-property-container > .visual-style-property-title):
2529         Adds text overflow to properties that extend beyond the container's width.
2530
2531         * UserInterface/Views/VisualStylePropertyEditor.js:
2532         (WebInspector.VisualStylePropertyEditor):
2533         Now also adds the label value as a title attribute to the element, just in
2534         case the content overflows.
2535
2536 2016-02-05  Saam barati  <sbarati@apple.com>
2537
2538         Web Inspector: Include SamplingProfiler's expression-level data for stack frames in the protocol
2539         https://bugs.webkit.org/show_bug.cgi?id=153455
2540         <rdar://problem/24335884>
2541
2542         Reviewed by Joseph Pecoraro.
2543
2544         JSC has been collecting expression-level data in the sampling
2545         profiler, and with this patch, we now get that information
2546         in the inspector. With this information, we probably have
2547         all the data we need to make real heat maps.
2548
2549         * UserInterface/Models/CallingContextTree.js:
2550         (WebInspector.CallingContextTree.prototype.updateTreeWithStackTrace):
2551         (WebInspector.CCTNode):
2552         (WebInspector.CCTNode.prototype.findOrMakeChild):
2553         (WebInspector.CCTNode.prototype.addTimestampAndExpressionLocation):
2554         (WebInspector.CCTNode.prototype.addTimestamp): Deleted.
2555
2556 2016-02-05  Devin Rousso  <dcrousso+webkit@gmail.com>
2557
2558         Web Inspector: Navigation bar in sidebars should always fit on a single line
2559         https://bugs.webkit.org/show_bug.cgi?id=153412
2560         <rdar://problem/24318706>
2561
2562         Reviewed by Timothy Hatcher.
2563
2564         This happened because the allowed maximum width of the sidebar was greater
2565         than the minimum width derived from the currently visible sidebar.
2566
2567         * UserInterface/Base/Utilities.js:
2568         (Number.constrain):
2569         Added logic to reverse the values of min and max if max is less than min.
2570
2571 2016-02-05  Timothy Hatcher  <timothy@apple.com>
2572
2573         Web Inspector: Don't wrap labels in Breakpoint Editor popover
2574         https://bugs.webkit.org/show_bug.cgi?id=153926
2575         rdar://problem/24149542
2576
2577         Reviewed by Brian Burg.
2578
2579         * UserInterface/Views/BreakpointPopoverController.css:
2580         (.popover .edit-breakpoint-popover-content > table > tr > th): Added white-space: nowrap.
2581
2582 2016-02-05  Devin Rousso  <dcrousso+webkit@gmail.com>
2583
2584         Web Inspector: Replace all instances of '%s' with “%s“
2585         https://bugs.webkit.org/show_bug.cgi?id=153891
2586         <rdar://problem/24510236>
2587
2588         Reviewed by Timothy Hatcher.
2589
2590         Switched all WebInspector.UIString() from using '' to ““.
2591
2592         * Localizations/en.lproj/localizedStrings.js:
2593         * UserInterface/Views/CSSStyleDeclarationSection.js:
2594         (WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
2595         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
2596         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
2597         * UserInterface/Views/VisualStylePropertyEditor.js:
2598         (WebInspector.VisualStylePropertyEditor.prototype.update):
2599         * UserInterface/Views/VisualStyleSelectorTreeItem.js:
2600         (WebInspector.VisualStyleSelectorTreeItem.prototype._updateSelectorIcon):
2601
2602 2016-02-05  Nikita Vasilyev  <nvasilyev@apple.com>
2603
2604         REGRESSION (r193913): Web Inspector: Wrong z-index of inner sections
2605         https://bugs.webkit.org/show_bug.cgi?id=153914
2606
2607         Reviewed by Timothy Hatcher.
2608
2609         * UserInterface/Views/DetailsSection.css:
2610         (.details-section .details-section > .header):
2611
2612 2016-02-05  Nikita Vasilyev  <nvasilyev@apple.com>
2613
2614         Web Inspector: Decrease font-weight of inner sections
2615         https://bugs.webkit.org/show_bug.cgi?id=153913
2616         <rdar://problem/24520326>
2617
2618         Reviewed by Timothy Hatcher.
2619
2620         * UserInterface/Views/DetailsSection.css:
2621         (.details-section .details-section > .header):
2622
2623 2016-02-04  Nikita Vasilyev  <nvasilyev@apple.com>
2624
2625         Web Inspector: console.table background stripes are misaligned
2626         https://bugs.webkit.org/show_bug.cgi?id=152954
2627         <rdar://problem/24197735>
2628
2629         Reviewed by Timothy Hatcher.
2630
2631         * UserInterface/Views/LogContentView.css:
2632         (.console-item .data-grid table.data):
2633         (.console-item .data-grid table.data tr:nth-child(even)):
2634         Replace CSS gradient that produces fixed height stripes with
2635         a rule that sets background only on even table rows.
2636
2637 2016-02-04  Joseph Pecoraro  <pecoraro@apple.com>
2638
2639         Unreviewed, follow-up fix to r196151 that removes some more images.
2640
2641         * UserInterface/Images/Colors.png: Removed.
2642         * UserInterface/Images/Colors@2x.png: Removed.
2643         * UserInterface/Images/Network.png: Removed.
2644         * UserInterface/Images/Network@2x.png: Removed.
2645         * UserInterface/Images/Script.png: Removed.
2646         * UserInterface/Images/Script@2x.png: Removed.
2647         These images were supposed to also be removed.
2648
2649         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
2650         Also remove references to now removed images.
2651
2652 2016-02-04  Joseph Pecoraro  <pecoraro@apple.com>
2653
2654         Web Inspector: New timeline images for instruments
2655         https://bugs.webkit.org/show_bug.cgi?id=153884
2656         <rdar://problem/24509429>
2657
2658         Reviewed by Timothy Hatcher.
2659
2660         * UserInterface/Views/TimelineTabContentView.js:
2661         (WebInspector.TimelineTabContentView.iconClassNameForTimeline):
2662         Better names and give Memory timeline a name for an icon.
2663
2664         * UserInterface/Views/TreeOutline.css:
2665         (.tree-outline.large .item .icon):
2666         Add more padding next to large icons.
2667
2668         * UserInterface/Images/ColorsLarge.png: Removed.
2669         * UserInterface/Images/ColorsLarge@2x.png: Removed.
2670         * UserInterface/Images/Frames.png: Removed.
2671         * UserInterface/Images/Frames@2x.png: Removed.
2672         * UserInterface/Images/LayoutInstrument.svg: Added.
2673         * UserInterface/Images/MemoryInstrument.svg: Added.
2674         * UserInterface/Images/NetworkInstrument.svg: Added.
2675         * UserInterface/Images/NetworkLarge.png: Removed.
2676         * UserInterface/Images/NetworkLarge@2x.png: Removed.
2677         * UserInterface/Images/RenderingFramesInstrument.svg: Added.
2678         * UserInterface/Images/ScriptLarge.png: Removed.
2679         * UserInterface/Images/ScriptLarge@2x.png: Removed.
2680         Remove old timeline pngs.
2681
2682         * UserInterface/Images/ScriptsInstrument.svg: Added.
2683         * UserInterface/Views/TimelineIcons.css:
2684         (.network-icon .icon):
2685         (.script-icon .icon):
2686         (.memory-icon .icon):
2687         (.layout-icon .icon):
2688         (.rendering-frame-icon .icon):
2689         Use the new SVGs.
2690
2691         (body:not(.mac-platform, .windows-platform) .network-icon .icon):
2692         (body:not(.mac-platform, .windows-platform) .network-icon.large .icon):
2693         (body:not(.mac-platform, .windows-platform) .layout-icon .icon):
2694         (body:not(.mac-platform, .windows-platform) .layout-icon.large .icon):
2695         (body:not(.mac-platform, .windows-platform) .script-icon .icon):
2696         (body:not(.mac-platform, .windows-platform) .script-icon.large .icon):
2697         (body:not(.mac-platform, .windows-platform) .rendering-frame-icon .icon):
2698         Fallback to old icons for non-Mac/Windows ports using Images/gtk images.
2699
2700 2016-02-04  Devin Rousso  <dcrousso+webkit@gmail.com>
2701
2702         Web Inspector: Show error icons if invalid values already exist for properties in the Visual sidebar
2703         https://bugs.webkit.org/show_bug.cgi?id=153702
2704         <rdar://problem/24424025>
2705
2706         Reviewed by Timothy Hatcher.
2707
2708         When CSS properties have invalid values, instead of displaying the computed
2709         value for that property in the Visual sidebar, show an error icon with the
2710         the invalid value.
2711
2712         * Localizations/en.lproj/localizedStrings.js:
2713
2714         * UserInterface/Views/VisualStyleNumberInputBox.css:
2715         (.visual-style-property-container > .visual-style-property-value-container > .number-input-container > .number-input-value):
2716         (.visual-style-property-container > .visual-style-property-value-container > .visual-style-special-property-placeholder[hidden] ~ .number-input-container > .number-input-value):
2717         By default, do not allow any pointer events to interact with the input element.
2718         Instead, only allow interaction when the placeholder element is hidden to ensure
2719         that the user cannot add a value when the computed value is displayed.
2720
2721         * UserInterface/Views/VisualStyleNumberInputBox.js:
2722         (WebInspector.VisualStyleNumberInputBox.prototype.set specialPropertyPlaceholderElementText):
2723         Reset the selected keyword to "Unchanged" since this is either a warning
2724         message or the computed value.
2725
2726         * UserInterface/Views/VisualStylePropertyEditor.css:
2727         (.visual-style-property-container > .visual-style-property-editor-warning.missing-dependency):
2728         (.visual-style-property-container > .visual-style-property-editor-warning.invalid-value):
2729         (.visual-style-property-container > .visual-style-property-editor-warning):
2730
2731         * UserInterface/Views/VisualStylePropertyEditor.js:
2732         (WebInspector.VisualStylePropertyEditor):
2733         Replaced document.createElement with [element].createChild for simplicity.
2734
2735         (WebInspector.VisualStylePropertyEditor.prototype.update):
2736         Before assigning the value of the property to the editor, check to see if
2737         the property is valid. If not, display an Error icon and message stating
2738         that the current value is invalid.
2739
2740         (WebInspector.VisualStylePropertyEditor.prototype.updateEditorValues):
2741         (WebInspector.VisualStylePropertyEditor.prototype.set specialPropertyPlaceholderElementText):
2742         Unhides the special placeholder element with the given text as its content.
2743
2744         (WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
2745         (WebInspector.VisualStylePropertyEditor.prototype._checkDependencies):
2746         (WebInspector.VisualStylePropertyEditor.prototype.addDependency):
2747
2748 2016-02-03  Joseph Pecoraro  <pecoraro@apple.com>
2749
2750         Web Inspector: JS PrettyPrinting unary - and + issues
2751         https://bugs.webkit.org/show_bug.cgi?id=134007
2752         <rdar://problem/17351953>
2753
2754         Reviewed by Timothy Hatcher.
2755
2756         * UserInterface/Views/CodeMirrorFormatters.js:
2757         (shouldHaveSpaceBeforeToken):
2758         (shouldHaveSpaceAfterLastToken):
2759         (removeLastNewline):
2760         (modifyStateForTokenPre):
2761         (modifyStateForTokenPost):
2762
2763 2016-02-03  Dave Hyatt  <hyatt@apple.com>
2764
2765         Add hanging-punctuation property to Web Inspector
2766         https://bugs.webkit.org/show_bug.cgi?id=153841
2767
2768         Reviewed by Zalan Bujtas.
2769
2770         * UserInterface/Models/CSSKeywordCompletions.js:
2771
2772 2016-02-03  Joseph Pecoraro  <pecoraro@apple.com>
2773
2774         Web Inspector: Uncaught exception TimelineRuler.prototype.resize no longer exists
2775         https://bugs.webkit.org/show_bug.cgi?id=153839
2776
2777         Reviewed by Brian Burg.
2778
2779         * UserInterface/Views/MemoryTimelineView.js:
2780         (WebInspector.MemoryTimelineView.prototype.shown):
2781         After r195995 the resize method was eliminated in favor of this approach.
2782
2783 2016-02-02  Joseph Pecoraro  <pecoraro@apple.com>
2784
2785         Uncaught Exception: TypeError: undefined is not an object (evaluating 'highlightedRange.from')
2786         https://bugs.webkit.org/show_bug.cgi?id=153685
2787
2788         Reviewed by Timothy Hatcher.
2789
2790         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
2791         (WebInspector.CodeMirrorTokenTrackingController.prototype.highlightRange):
2792         The highlighted range could have just gotten removed, in which case the
2793         marker would return undefined. Just bail in such cases.
2794
2795 2016-02-01  Joseph Pecoraro  <pecoraro@apple.com>
2796
2797         Web Inspector: Option+Up/Down should not move cursor outside of number
2798         https://bugs.webkit.org/show_bug.cgi?id=153784
2799         <rdar://problem/24453133>
2800
2801         Reviewed by Timothy Hatcher.
2802
2803         * UserInterface/Views/CodeMirrorAdditions.js:
2804         When selectionStart === selectionEnd we were duplicating the
2805         movement mutation by performing it twice on the same object.
2806         After much experimentation, I left in the existing code path
2807         for handling mutation with a selection. It is not perfect,
2808         but it is better then just applying the ch diff.
2809
2810 2016-02-01  Joseph Pecoraro  <pecoraro@apple.com>
2811
2812         Web Inspector: High Level Memory Overview Instrument
2813         https://bugs.webkit.org/show_bug.cgi?id=153516
2814         <rdar://problem/24356378>
2815
2816         Reviewed by Brian Burg.
2817
2818         Use the new "Memory" domain to track page memory size over time.
2819         This allows the timeline to help visualize total process memory
2820         broken down into a few different categories. The timeline graph
2821         allows seeing the total size over time, and you can drill in to
2822         a specific section and get a better breakdown and comparison
2823         of the different categories of memory that we currently track.
2824
2825         * Localizations/en.lproj/localizedStrings.js:
2826         New UI strings.
2827
2828         * UserInterface/Main.html:
2829         New files.
2830
2831         * UserInterface/Base/Main.js:
2832         (WebInspector.loaded):
2833         * UserInterface/Protocol/MemoryObserver.js:
2834         (WebInspector.MemoryObserver.prototype.trackingStart):
2835         (WebInspector.MemoryObserver.prototype.trackingUpdate):
2836         (WebInspector.MemoryObserver.prototype.trackingComplete):
2837         Add a memory observer.
2838
2839         * UserInterface/Controllers/TimelineManager.js:
2840         (WebInspector.TimelineManager.defaultInstruments):
2841         (WebInspector.TimelineManager.prototype.memoryTrackingStart):
2842         (WebInspector.TimelineManager.prototype.memoryTrackingUpdate):
2843         (WebInspector.TimelineManager.prototype.memoryTrackingComplete):
2844         Create Memory timeline records from Memory tracking updates.
2845
2846         * UserInterface/Models/MemoryCategory.js:
2847         (WebInspector.MemoryCategory):
2848         Consolidate some of the raw data of categories we get from the backend
2849         into a set of 4 user-facing categories.
2850
2851         * UserInterface/Models/MemoryTimelineRecord.js: Added.
2852         (WebInspector.MemoryTimelineRecord):
2853         (WebInspector.MemoryTimelineRecord.memoryCategoriesFromProtocol):
2854         (WebInspector.MemoryTimelineRecord.prototype.get timestamp):
2855         (WebInspector.MemoryTimelineRecord.prototype.get categories):
2856         (WebInspector.MemoryTimelineRecord.prototype.get totalSize):
2857         (WebInspector.MemoryTimelineRecord.prototype.get startTime):
2858         (WebInspector.MemoryTimelineRecord.prototype.get endTime):
2859         Memory timeline record for the event data.
2860
2861         * UserInterface/Models/MemoryInstrument.js:
2862         (WebInspector.MemoryInstrument):
2863         (WebInspector.MemoryInstrument.supported):
2864         (WebInspector.MemoryInstrument.prototype.get timelineRecordType):
2865         (WebInspector.MemoryInstrument.prototype.startInstrumentation):
2866         (WebInspector.MemoryInstrument.prototype.stopInstrumentation):
2867         Instrument to start / stop memory tracking.
2868
2869         * UserInterface/Models/TimelineRecord.js:
2870         Add a new "Memory" Timeline type.
2871
2872         * UserInterface/Views/ContentView.js:
2873         (WebInspector.ContentView.createFromRepresentedObject):
2874         * UserInterface/Models/TimelineRecording.js:
2875         (WebInspector.TimelineRecording):
2876         Add the new "Memory" Timeline.
2877
2878         (WebInspector.TimelineRecording.prototype.addRecord):
2879         Memory timeline records do not show in the SourceCode Timelines Overview.
2880
2881         * UserInterface/Views/CircleChart.css:
2882         (.circle-chart):
2883         (.circle-chart > svg > path.background):
2884         (.circle-chart > .center):
2885         * UserInterface/Views/CircleChart.js: Added.
2886         (WebInspector.CircleChart):
2887         (WebInspector.CircleChart.prototype.get element):
2888         (WebInspector.CircleChart.prototype.get points):
2889         (WebInspector.CircleChart.prototype.get size):
2890         (WebInspector.CircleChart.prototype.get centerElement):
2891         (WebInspector.CircleChart.prototype.get segments):
2892         (WebInspector.CircleChart.prototype.set segments):
2893         (WebInspector.CircleChart.prototype.get values):
2894         (WebInspector.CircleChart.prototype.set values):
2895         (WebInspector.CircleChart.prototype.clear):
2896         (WebInspector.CircleChart.prototype.needsLayout):
2897         (WebInspector.CircleChart.prototype.updateLayout):
2898         (WebInspector.CircleChart.prototype._needsLayout):
2899         (WebInspector.CircleChart.prototype._createCompleteCirclePathData):
2900         (WebInspector.CircleChart.prototype._createSegmentPathData):
2901         (WebInspector.CircleChart.prototype._updateLayout):
2902         Standalone circle "donut" chart, copied mostly from Rendering Frames Timeline.
2903         Initialize the chart's segments, then feed it a set of ([v1, v2, ...]) values
2904         corresponding to each of the segments.
2905
2906         * UserInterface/Views/LineChart.js: Added.
2907         (WebInspector.LineChart):
2908         (WebInspector.LineChart.prototype.get element):
2909         (WebInspector.LineChart.prototype.get points):
2910         (WebInspector.LineChart.prototype.get size):
2911         (WebInspector.LineChart.prototype.set size):
2912         (WebInspector.LineChart.prototype.addPoint):
2913         (WebInspector.LineChart.prototype.clear):
2914         (WebInspector.LineChart.prototype.needsLayout):
2915         (WebInspector.LineChart.prototype.updateLayout):
2916         (WebInspector.LineChart.prototype._needsLayout):
2917         (WebInspector.LineChart.prototype._updateLayout):
2918         Standalone line chart. Uses a single SVG path, given a set of (x, y) points.
2919
2920         * UserInterface/Views/StackedLineChart.js: Added.
2921         (WebInspector.StackedLineChart):
2922         (WebInspector.StackedLineChart.prototype.get element):
2923         (WebInspector.StackedLineChart.prototype.get points):
2924         (WebInspector.StackedLineChart.prototype.get size):
2925         (WebInspector.StackedLineChart.prototype.set size):
2926         (WebInspector.StackedLineChart.prototype.initializeSections):
2927         (WebInspector.StackedLineChart.prototype.addPointSet):
2928         (WebInspector.StackedLineChart.prototype.clear):
2929         (WebInspector.StackedLineChart.prototype.needsLayout):
2930         (WebInspector.StackedLineChart.prototype.updateLayout):
2931         (WebInspector.StackedLineChart.prototype._needsLayout):
2932         (WebInspector.StackedLineChart.prototype._updateLayout):
2933         Standalone stacked line chart. Initialize the chart's sections,
2934         then feed it a set of (x, [y1, y2 ...]) points where the y
2935         values correspond to each of the sections.
2936
2937         * UserInterface/Views/TimelineOverview.js:
2938         (WebInspector.TimelineOverview.prototype.get scrollContainerWidth):
2939         Add a way to get this value without forcing layout all the time.
2940
2941         * UserInterface/Views/TimelineTabContentView.js:
2942         (WebInspector.TimelineTabContentView.displayNameForTimeline):
2943         (WebInspector.TimelineTabContentView.iconClassNameForTimeline):
2944         (WebInspector.TimelineTabContentView.genericClassNameForTimeline):
2945         (WebInspector.TimelineTabContentView.iconClassNameForRecord):
2946         (WebInspector.TimelineTabContentView.displayNameForRecord):
2947         Add placeholders for the new Memory Timeline Type.
2948
2949         * UserInterface/Views/MemoryCategoryView.css:
2950         (.memory-category-view):
2951         (.memory-category-view > .details):
2952         (.memory-category-view > .details > .name):
2953         (.memory-category-view > .graph):
2954         * UserInterface/Views/MemoryCategoryView.js: Added.
2955         (WebInspector.MemoryCategoryView):
2956         (WebInspector.MemoryCategoryView.prototype.get element):
2957         (WebInspector.MemoryCategoryView.prototype.get category):
2958         (WebInspector.MemoryCategoryView.prototype.clear):
2959         (WebInspector.MemoryCategoryView.prototype.layoutWithDataPoints):
2960         (WebInspector.MemoryCategoryView.prototype._updateDetails):
2961         * UserInterface/Views/MemoryTimelineOverviewGraph.css:
2962         (body .timeline-overview > .graphs-container > .timeline-overview-graph.memory):
2963         (.timeline-overview-graph.memory):
2964         (.timeline-overview-graph.memory > .legend):
2965         (.timeline-overview-graph.memory > .stacked-line-chart > svg > path.javascript):
2966         (.timeline-overview-graph.memory > .stacked-line-chart > svg > path.images):
2967         (.timeline-overview-graph.memory > .stacked-line-chart > svg > path.layers):
2968         (.timeline-overview-graph.memory > .stacked-line-chart > svg > path.page):
2969         * UserInterface/Views/MemoryTimelineOverviewGraph.js: Added.
2970         (WebInspector.MemoryTimelineOverviewGraph):
2971         (WebInspector.MemoryTimelineOverviewGraph.prototype.get height):
2972         (WebInspector.MemoryTimelineOverviewGraph.prototype.reset):
2973         (WebInspector.MemoryTimelineOverviewGraph.prototype.layout.timeToX):
2974         (WebInspector.MemoryTimelineOverviewGraph.prototype.layout.sizeToY):
2975         (WebInspector.MemoryTimelineOverviewGraph.prototype.layout.sizesToYs):
2976         (WebInspector.MemoryTimelineOverviewGraph.prototype.layout.ysForRecord):
2977         (WebInspector.MemoryTimelineOverviewGraph.prototype.layout):
2978         (WebInspector.MemoryTimelineOverviewGraph.prototype._updateLegend):
2979         (WebInspector.MemoryTimelineOverviewGraph.prototype._visibleRecords):
2980         (WebInspector.MemoryTimelineOverviewGraph.prototype._memoryTimelineRecordAdded):
2981         * UserInterface/Views/MemoryTimelineView.css: Added.
2982         (.timeline-view.memory):
2983         (.timeline-view.memory > .content):
2984         (.timeline-view.memory > .content > .overview):
2985         (.timeline-view.memory > .content .title):
2986         (.timeline-view.memory > .content .subtitle):
2987         (.timeline-view.memory > .content > .details > .timeline-ruler):
2988         (.timeline-view.memory > .content > .details > .subtitle):
2989         (.timeline-view.memory > .content > .overview > .chart):
2990         (.timeline-view.memory > .content > .overview > .chart > .subtitle):
2991         (.timeline-view.memory > .content > .overview > .chart > .container):
2992         (.timeline-view.memory > .content > .overview > .divider):
2993         (.timeline-view.memory > .content > .overview .max-percentage):
2994         (.timeline-view.memory .legend):
2995         (.timeline-view.memory .legend > .row):
2996         (.timeline-view.memory .legend > .row > .swatch):
2997         (.timeline-view.memory .legend > .row > p):
2998         (.timeline-view.memory .legend > .row > .label):
2999         (.timeline-view.memory .legend > .row > .size):
3000         (.timeline-view.memory .legend > .row > .swatch.javascript):
3001         (.timeline-view.memory .legend > .row > .swatch.images):
3002         (.timeline-view.memory .legend > .row > .swatch.layers):
3003         (.timeline-view.memory .legend > .row > .swatch.page):
3004         (.memory-category-view.javascript .line-chart > svg > path):
3005         (.memory-category-view.images .line-chart > svg > path):
3006         (.memory-category-view.layers .line-chart > svg > path):
3007         (.memory-category-view.page .line-chart > svg > path):
3008         (.timeline-view.memory .legend > .row > .swatch.current):
3009         (.timeline-view.memory .circle-chart > svg > path.current):
3010         (.timeline-view.memory .circle-chart > svg > path.remainder):
3011         * UserInterface/Views/MemoryTimelineView.js: Added.
3012         (WebInspector.MemoryTimelineView):
3013         (WebInspector.MemoryTimelineView.displayNameForCategory):
3014         (WebInspector.MemoryTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
3015         (WebInspector.MemoryTimelineView.prototype.shown):
3016         (WebInspector.MemoryTimelineView.prototype.hidden):
3017         (WebInspector.MemoryTimelineView.prototype.closed):
3018         (WebInspector.MemoryTimelineView.prototype.reset):
3019         (WebInspector.MemoryTimelineView.prototype.treeElementPathComponentSelected):
3020         (WebInspector.MemoryTimelineView.prototype.layout.timeToX):
3021         (WebInspector.MemoryTimelineView.prototype.layout.sizeToY):
3022         (WebInspector.MemoryTimelineView.prototype.layout.layoutCategoryView):
3023         (WebInspector.MemoryTimelineView.prototype.layout):
3024         (WebInspector.MemoryTimelineView.prototype._clearUsageLegend):
3025         (WebInspector.MemoryTimelineView.prototype._updateUsageLegend):
3026         (WebInspector.MemoryTimelineView.prototype._clearMaxComparisonLegend):
3027         (WebInspector.MemoryTimelineView.prototype._updateMaxComparisonLegend):
3028         (WebInspector.MemoryTimelineView.prototype._visibleRecords):
3029         (WebInspector.MemoryTimelineView.prototype._initializeCategoryViews.appendLegendRow):
3030         (WebInspector.MemoryTimelineView.prototype._initializeCategoryViews):
3031         (WebInspector.MemoryTimelineView.prototype._memoryTimelineRecordAdded):
3032         * UserInterface/Views/Variables.css:
3033         (:root):
3034         Memory timeline view styles.
3035
3036 2016-02-01  Matt Baker  <mattbaker@apple.com>
3037
3038         Web Inspector: add a LayoutReason enum to the View base class
3039         https://bugs.webkit.org/show_bug.cgi?id=153731
3040         <rdar://problem/24430938>
3041
3042         Reviewed by Brian Burg.
3043
3044         Added a LayoutReason enum to the View base class, which can be passed as an optional
3045         argument to needsLayout() and updateLayout(). The value is propagated to the view's
3046         subtree during layout.
3047
3048         * UserInterface/Base/Main.js:
3049         Update top-level views with Resize layout reason when window is resized.
3050
3051         * UserInterface/Views/DataGrid.js:
3052         (WebInspector.DataGrid.prototype._positionHeaderViews):
3053         Update header view with Resize layout reason when column is resized.
3054
3055         * UserInterface/Views/OverviewTimelineView.js:
3056         (WebInspector.OverviewTimelineView.prototype.shown):
3057         Assume the view has been resized when shown, and update layout.
3058         (WebInspector.OverviewTimelineView.prototype.updateLayoutForResize): Deleted.
3059         No longer needed, handled by the View base class.
3060
3061         * UserInterface/Views/TimelineOverview.js:
3062         (WebInspector.TimelineOverview.prototype.shown):
3063         Assume the view has been resized when shown, and update layout.
3064         (WebInspector.TimelineOverview.prototype.layout):
3065         Invalidate cached scroll container width if resized.
3066         (WebInspector.TimelineOverview.prototype.updateLayoutForResize): Deleted.
3067         No longer needed, handled by the View base class.
3068
3069         * UserInterface/Views/TimelineRecordingContentView.js:
3070         (WebInspector.TimelineRecordingContentView.prototype.layout): Deleted.
3071         No longer needed, handled by the View base class.
3072
3073         * UserInterface/Views/TimelineRuler.js:
3074         (WebInspector.TimelineRuler.prototype.needsLayout):
3075         (WebInspector.TimelineRuler.prototype.layout):
3076         Update cached client width if resized.
3077         (WebInspector.TimelineRuler.prototype.resize): Deleted.
3078         Moved resize logic to layout override.
3079
3080         * UserInterface/Views/View.js:
3081         (WebInspector.View):
3082         (WebInspector.View.prototype.updateLayout):
3083         Set layout reason.
3084         (WebInspector.View.prototype.needsLayout):
3085         Set layout reason even if an animation frame has already been scheduled,
3086         since the layout reason could have changed.
3087         (WebInspector.View.prototype._layoutSubtree):
3088         Propagate layout reason to subtree, and reset the value when done.
3089         (WebInspector.View.prototype._setLayoutReason):
3090         Helper method for updating the layout reason. Ensures that LayoutReason.Resize
3091         has priority over the default (LayoutReason.Dirty).
3092
3093 2016-02-01  Matt Baker  <mattbaker@apple.com>
3094
3095         Web Inspector: Rendering Frames timeline draws all frame bars at minimum height
3096         https://bugs.webkit.org/show_bug.cgi?id=153736
3097         <rdar://problem/21946301>
3098
3099         Reviewed by Timothy Hatcher.
3100
3101         * UserInterface/Views/TimelineRecordingContentView.js:
3102         (WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
3103         Update the new timeline overview's height before it's shown. Showing the
3104         overview causes the rendering frames graph to do a layout, which requires
3105         the height of the containing view to be a valid value.
3106
3107 2016-02-01  Matt Baker  <mattbaker@apple.com>
3108
3109         Web Inspector: DataGridNode should support adding go-to arrow buttons to any cell
3110         https://bugs.webkit.org/show_bug.cgi?id=153733
3111         <rdar://problem/24431813>
3112
3113         Reviewed by Brian Burg.
3114
3115         Provide a way to add go-to arrow buttons to any grid cell from within a
3116         DataGridNode subclass's implementation of createCellContent.
3117
3118         * UserInterface/Views/DataGrid.js:
3119         New event type, GoToArrowClicked.
3120         (WebInspector.DataGridNode.prototype.createGoToArrowButton.buttonClicked):
3121         (WebInspector.DataGridNode.prototype.createGoToArrowButton):
3122         Adds a go-to arrow button to the cell's content element. Clicking the button
3123         dispatches an event on the DataGrid, with event data containing the
3124         DataGridNode and identifier of the cell containing the arrow button.
3125
3126 2016-01-31  Jeremy Jones  <jeremyj@apple.com>
3127
3128         Add resize event for HTMLMediaElement
3129         https://bugs.webkit.org/show_bug.cgi?id=125715
3130
3131         Reviewed by Darin Adler.
3132
3133         Add a display name for "resize" event.
3134
3135         * UserInterface/Models/ScriptTimelineRecord.js:
3136         (WebInspector.ScriptTimelineRecord.EventType.displayName):
3137
3138 2016-01-30  Dave Hyatt  <hyatt@apple.com>
3139
3140         Add the break-* properties to Web Inspector's completion set
3141         https://bugs.webkit.org/show_bug.cgi?id=153706
3142
3143         Reviewed by Darin Adler.
3144
3145         * UserInterface/Models/CSSKeywordCompletions.js:
3146
3147 2016-01-30  Matt Baker  <mattbaker@apple.com>
3148
3149         Web Inspector: Network panel is empty until the window is resized
3150         https://bugs.webkit.org/show_bug.cgi?id=153701
3151         <rdar://problem/24423739>
3152
3153         Reviewed by Timothy Hatcher.
3154
3155         NetworkGridContentView shouldn't prevent a layout from being scheduled
3156         when the network sidebar is collapsed.
3157
3158         * UserInterface/Views/NetworkGridContentView.js:
3159         (WebInspector.NetworkGridContentView.prototype.needsLayout): Deleted.
3160         Removed View.prototype.needsLayout override that was preventing
3161         layouts from being scheduled as timeline records are added.
3162
3163 2016-01-30  Devin Rousso  <dcrousso+webkit@gmail.com>
3164
3165         Web Inspector: Object tree parent items are misaligned
3166         https://bugs.webkit.org/show_bug.cgi?id=153699
3167         <rdar://problem/24423683>
3168
3169         Reviewed by Darin Adler.
3170
3171         * UserInterface/Views/ObjectTreeView.css:
3172         (.object-tree .object-tree):
3173         Ensure that toplevel Object preview trees are displayed properly while also
3174         making child trees inline.
3175
3176         * UserInterface/Views/TreeOutline.css:
3177         (.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
3178         (.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) .icon): Deleted.
3179         This would apply to all .icon elements contained within a non-parent item,
3180         which is not the desired effect. Instead, this should only apply to only the
3181         .icon element of that particular non-parent item.
3182
3183 2016-01-29  Joseph Pecoraro  <pecoraro@apple.com>
3184
3185         Web Inspector: Add support for variable size timeline graphs
3186         https://bugs.webkit.org/show_bug.cgi?id=153690
3187         <rdar://problem/24421696>
3188
3189         Reviewed by Timothy Hatcher.
3190
3191         * UserInterface/Views/LayoutTimelineDataGrid.js:
3192         (WebInspector.LayoutTimelineDataGrid): Deleted.
3193         Remove unnecessary constructor.
3194
3195         * UserInterface/Views/TimelineOverviewGraph.js:
3196         (WebInspector.TimelineOverviewGraph.prototype.set selectedRecord):
3197         Default graph height.
3198
3199         * UserInterface/Views/RenderingFrameTimelineOverview.js:
3200         (WebInspector.RenderingFrameTimelineOverview.prototype.get height):
3201         Custom graph height.
3202
3203         * UserInterface/Views/TimelineOverview.js:
3204         (WebInspector.TimelineOverview.prototype.get height):
3205         Provide a way to get the height of the overview which accumulates graph heights.
3206
3207         * UserInterface/Views/TimelineRecordingContentView.js:
3208         (WebInspector.TimelineRecordingContentView.prototype.get timelineOverviewHeight):
3209         (WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
3210         * UserInterface/Views/TimelineSidebarPanel.js:
3211         (WebInspector.TimelineSidebarPanel.prototype._updateTimelineOverviewHeight):
3212         Switch from assuming certain graph heights to asking the overview for its height.
3213
3214 2016-01-29  Devin Rousso  <dcrousso+webkit@gmail.com>
3215
3216         Web Inspector: Object previews in the Console are misaligned
3217         https://bugs.webkit.org/show_bug.cgi?id=153676
3218         <rdar://problem/24418796>
3219
3220         Reviewed by Timothy Hatcher.
3221
3222         * UserInterface/Views/ObjectTreeView.css:
3223         (.object-tree .tree-outline.object.compact):
3224         (.object-tree): Deleted.
3225
3226 2016-01-29  Devin Rousso  <dcrousso+webkit@gmail.com>
3227
3228         Web Inspector: Provide a way to clear the network panel
3229         https://bugs.webkit.org/show_bug.cgi?id=153632
3230         <rdar://problem/23317773>
3231
3232         Reviewed by Timothy Hatcher.
3233
3234         Added a navigation item to the Network tab that resets the network grid's content.
3235
3236         * Localizations/en.lproj/localizedStrings.js:
3237         * UserInterface/Views/NetworkGridContentView.js:
3238         (WebInspector.NetworkGridContentView):
3239         (WebInspector.NetworkGridContentView.prototype.get navigationItems):
3240         (WebInspector.NetworkGridContentView.prototype._clearNetworkItems):
3241
3242 2016-01-29  Joseph Pecoraro  <pecoraro@apple.com>
3243
3244         Web Inspector: WebInspector.Setting should not access localStorage if the value did not change
3245         https://bugs.webkit.org/show_bug.cgi?id=153671
3246         <rdar://problem/24417029>
3247
3248         Reviewed by Brian Burg.
3249
3250         * UserInterface/Base/Setting.js:
3251         (WebInspector.Setting.prototype.set value):
3252
3253 2016-01-29  Joseph Pecoraro  <pecoraro@apple.com>
3254
3255         Web Inspector: Duplicate tab-types being saved to setting, causing duplicate tabs to be opened
3256         https://bugs.webkit.org/show_bug.cgi?id=153659
3257         <rdar://problem/24413157>
3258
3259         Reviewed by Brian Burg.
3260
3261         * UserInterface/Base/Main.js:
3262         (WebInspector.contentLoaded):
3263         (WebInspector._rememberOpenTabs):
3264         De-duplicate the setting when building the list of tabs for existing
3265         cases where the setting has duplicates and de-duplicate storing into
3266         the setting, which was causing the issue to begin with.
3267
3268 2016-01-29  Devin Rousso  <dcrousso+webkit@gmail.com>
3269
3270         Web Inspector: Add font-variant-* to the visual styles sidebar
3271         https://bugs.webkit.org/show_bug.cgi?id=148720
3272         <rdar://problem/22569974>
3273
3274         Reviewed by Timothy Hatcher.
3275
3276         Added another subsection to the "Text" section for font-variant-*
3277         properties.
3278
3279         * Localizations/en.lproj/localizedStrings.js:
3280         * UserInterface/Images/FontVariantSmallCaps.svg: Removed.
3281
3282         * UserInterface/Views/VisualStyleDetailsPanel.js:
3283         (WebInspector.VisualStyleDetailsPanel):
3284         Added another keyword grouping with the "normal" value since it is used
3285         frequently in multiple subsections.
3286
3287         (WebInspector.VisualStyleDetailsPanel.prototype._populateFontSection):
3288         (WebInspector.VisualStyleDetailsPanel.prototype._populateFontVariantsSection):
3289         Added the five new font-variant-* properties specified in
3290         <https://webkit.org/blog/5735/css-font-features/>.
3291
3292         (WebInspector.VisualStyleDetailsPanel.prototype._populateTextSpacingSection):
3293         (WebInspector.VisualStyleDetailsPanel.prototype._populateAnimationSection):
3294         Replaced the hardcoded "normal" keyword with the new grouping.
3295
3296         * UserInterface/Views/VisualStyleKeywordCheckbox.css:
3297         (.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::after): Deleted.
3298
3299 2016-01-28  Joseph Pecoraro  <pecoraro@apple.com>
3300
3301         Web Inspector: Avoid recreating Timeline's DataGridNode data multiple times
3302         https://bugs.webkit.org/show_bug.cgi?id=153608
3303
3304         Reviewed by Timothy Hatcher.
3305
3306         * UserInterface/Views/LayoutTimelineDataGridNode.js:
3307         (WebInspector.LayoutTimelineDataGridNode.prototype.get data):
3308         * UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
3309         (WebInspector.RenderingFrameTimelineDataGridNode.prototype.get data):
3310         * UserInterface/Views/ScriptTimelineDataGridNode.js:
3311         (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
3312         Cache the data when we create it the first time.
3313
3314 2016-01-28  Nikita Vasilyev  <nvasilyev@apple.com>
3315
3316         Web Inspector: Tabs height should be 2px less to match Safari
3317         https://bugs.webkit.org/show_bug.cgi?id=153581
3318         <rdar://problem/24383501>
3319
3320         Reviewed by Darin Adler.
3321
3322         * UserInterface/Views/TabBar.css:
3323         (.tab-bar):
3324
3325         (.tab-bar > .item):
3326         (.tab-bar > .item.pinned):
3327         Make the new tab button ("+") a square.
3328
3329 2016-01-27  Nikita Vasilyev  <nvasilyev@apple.com>
3330
3331         Web Inspector: Don't show hand cursor for edited attribute
3332         https://bugs.webkit.org/show_bug.cgi?id=152211
3333         <rdar://problem/23870523>
3334
3335         Reviewed by Joseph Pecoraro.
3336
3337         * UserInterface/Views/Editing.css:
3338         (.editing, .editing *):
3339
3340 2016-01-27  Saam barati  <sbarati@apple.com>
3341
3342         CodeMirror will strip out "\r" from files with "\r\n" as newlines causing our offsets into the file to be incorrect
3343         https://bugs.webkit.org/show_bug.cgi?id=153529
3344         <rdar://problem/24376799>
3345
3346         Reviewed by Timothy Hatcher.
3347
3348         This problem manifested in the type token annotator inserting
3349         tokens in the wrong places. Because our offsets are computed
3350         based on the resource we get from backend, CodeMirror changing
3351         the source text will cause all of our offsets to be incorrect.
3352
3353         * UserInterface/Views/CodeMirrorEditor.js:
3354         (WebInspector.CodeMirrorEditor.create):
3355         (WebInspector.CodeMirrorEditor):
3356         * UserInterface/Views/TextEditor.js:
3357         (WebInspector.TextEditor.set string.update):
3358         (WebInspector.TextEditor.prototype.set string):
3359
3360 2016-01-27  Devin Rousso  <dcrousso+webkit@gmail.com>
3361
3362         Web Inspector: Regression (r195303) - Changes to TreeOutline break styling of lists in Visual sidebar
3363         https://bugs.webkit.org/show_bug.cgi?id=153563
3364
3365         Reviewed by Timothy Hatcher.
3366
3367         Removed duplicate properties and used new methods of TreeOutline to achieve
3368         the desired styling effects.
3369
3370         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
3371         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item > .visual-style-comma-separated-keyword-item-editor):
3372         (.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles): Deleted.
3373
3374         * UserInterface/Views/VisualStyleSelectorSection.js:
3375         (WebInspector.VisualStyleSelectorSection):
3376
3377         * UserInterface/Views/VisualStyleSelectorTreeItem.css:
3378         (.item.visual-style-selector-item > .icon):
3379         (.item.visual-style-selector-item > .titles):
3380         (.item.visual-style-selector-item > .titles > .subtitle):
3381         (.item.visual-style-selector-item.selected > .titles > .subtitle):
3382         (.item.visual-style-selector-item > .titles > .subtitle::before): Deleted.
3383
3384 2016-01-27  Simon Fraser  <simon.fraser@apple.com>
3385
3386         Support CSS3 Images values for the image-rendering property
3387         https://bugs.webkit.org/show_bug.cgi?id=153556
3388
3389         Reviewed by Dean Jackson.
3390
3391         Add "crisp-edges", "pixelated" to the suggestions for image-rendering.
3392
3393         * UserInterface/Models/CSSKeywordCompletions.js:
3394
3395 2016-01-26  Joseph Pecoraro  <pecoraro@apple.com>
3396
3397         Web Inspector: Remove unused FramesLarge.png variants, only the smaller Frames icon is used for the Rendering Frames timeline
3398         https://bugs.webkit.org/show_bug.cgi?id=153523
3399
3400         Reviewed by Timothy Hatcher.
3401
3402         * UserInterface/Images/FramesLarge.png: Removed.
3403         * UserInterface/Images/FramesLarge@2x.png: Removed.
3404         * UserInterface/Images/gtk/FramesLarge.png: Removed.
3405         * UserInterface/Images/gtk/FramesLarge@2x.png: Removed.
3406         * UserInterface/Views/TimelineIcons.css:
3407         (.rendering-frame-icon.large .icon): Deleted.
3408
3409 2016-01-25  Skachkov Oleksandr  <gskachkov@gmail.com>
3410
3411         [ES6] Arrow function syntax. Arrow function specific features. Lexical bind "arguments"
3412         https://bugs.webkit.org/show_bug.cgi?id=145132
3413
3414         Reviewed by Saam Barati.
3415
3416         Current patch is implementing lexical bind of arguments, so in this callback we need 
3417         to return to ordinary function.
3418
3419         * UserInterface/Base/Object.js:
3420         (WebInspector.Object.singleFireEventListener.let.wrappedCallback):
3421         (WebInspector.Object.singleFireEventListener):
3422
3423 2016-01-25  Saam barati  <sbarati@apple.com>
3424
3425         Web Inspector: Have top-level ScriptTimelineDataGridNode events show sample counts
3426         https://bugs.webkit.org/show_bug.cgi?id=153447
3427         <rdar://problem/24334137>
3428
3429         Reviewed by Joseph Pecoraro.
3430
3431         * UserInterface/Models/ScriptTimelineRecord.js:
3432         (WebInspector.ScriptTimelineRecord):
3433         (WebInspector.ScriptTimelineRecord.prototype.get profile):
3434         (WebInspector.ScriptTimelineRecord.prototype.get callCount):
3435         (WebInspector.ScriptTimelineRecord.prototype.isGarbageCollection):
3436         (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload):
3437         * UserInterface/Views/ScriptTimelineDataGridNode.js:
3438         (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
3439
3440 2016-01-25  Joseph Pecoraro  <pecoraro@apple.com>
3441
3442         Web Inspector: Reduce unnecessary forced layouts in TimelineOverview
3443         https://bugs.webkit.org/show_bug.cgi?id=153392
3444         <rdar://problem/24312344>
3445
3446         Reviewed by Timothy Hatcher.
3447
3448         * UserInterface/Views/TimelineOverview.js:
3449         (WebInspector.TimelineOverview.prototype.layout):
3450         Ignore setting the scrollLeft if we would be setting it to 0.
3451         This helps avoid a forced layout in common cases.
3452
3453 2016-01-25  Johan K. Jensen  <jj@johanjensen.dk>
3454
3455         Web Inspector: timelines clear button should be inactive if nothing can be cleared
3456         https://bugs.webkit.org/show_bug.cgi?id=132756
3457
3458         Reviewed by Timothy Hatcher.
3459
3460         * UserInterface/Views/TimelineRecordingContentView.js:
3461         (WebInspector.TimelineRecordingContentView.prototype.shown):
3462         Enable clear button if timeline is not readonly and contains data, when switching timelines.
3463         (WebInspector.TimelineRecordingContentView.prototype._capturingStarted):
3464         Enable clear button when a capturing starts.
3465         (WebInspector.TimelineRecordingContentView.prototype._recordingReset):
3466         Disable clear button after resetting recording.
3467
3468 2016-01-25  Matt Baker  <mattbaker@apple.com>
3469
3470         Web Inspector: Timelines: "Timer Installed150ms delay" — no space before the delay number
3471         https://bugs.webkit.org/show_bug.cgi?id=153416
3472
3473         Reviewed by Timothy Hatcher.
3474
3475         Fix for tree element subtitle rule that regressed in https://bugs.webkit.org/show_bug.cgi?id=153146.
3476
3477         * UserInterface/Views/TreeOutline.css:
3478         (.tree-outline .item .alternate-subtitle::before):
3479         Em dash should be inserted before both subtitle types.
3480
3481 2016-01-24  Matt Baker  <mattbaker@apple.com>
3482
3483         Web Inspector: add support for placing Views in DataGrid column headers
3484         https://bugs.webkit.org/show_bug.cgi?id=153387
3485         <rdar://problem/24310797>
3486
3487         Reviewed by Timothy Hatcher.
3488
3489         This patch adds a new DataGrid column property, `headerView`, allowing a
3490         custom View object to be placed in a column's header cell. The grid ensures
3491         that the left and right edges of the view are kept in sync as columns are
3492         resized. As most views use absolute positioning and are styled in CSS, the
3493         vertical position and height of the view isn't set by the grid.
3494
3495         * UserInterface/Views/DataGrid.js:
3496         (WebInspector.DataGrid.prototype.insertColumn):
3497         If the new column includes the `headerView` column data property,
3498         it should take priority over `titleDOMFragment` and title text.
3499         The specified View object is inserted into the DOM under the
3500         column's <th> element, and added as a subview of the data grid.
3501         (WebInspector.DataGrid.prototype.layout):
3502         Update header views after performing default layout.
3503         (WebInspector.DataGrid.prototype._showColumn):
3504         Set `hidden` column property false instead of deleting it.
3505         (WebInspector.DataGrid.prototype._positionHeaderViews):
3506         Update the left and right style positions for all Views embedded in
3507         column header cells, then update their layouts.
3508         (WebInspector.DataGrid.prototype.resizerDragging):
3509         Update header views after column resizers are repositioned.
3510
3511 2016-01-24  Nikita Vasilyev  <nvasilyev@apple.com>
3512
3513         Web Inspector: Highlight timeline range handles on hover
3514         https://bugs.webkit.org/show_bug.cgi?id=153395
3515         <rdar://problem/24312364>
3516
3517         Reviewed by Timothy Hatcher.
3518
3519         * UserInterface/Views/TimelineRuler.css:
3520         (.timeline-ruler > .selection-handle.clamped):
3521         Gardening. No need to repeat "1px solid".
3522
3523         (.timeline-ruler > .selection-handle:hover, .timeline-ruler > .selection-handle:active):
3524         ":active" pseudo selector is needed to keep the handle highligted while it's being dragged
3525         regardress if the mouse cursor is hovering over it or not.
3526
3527 2016-01-23  Aaron Chu  <arona.chu@gmail.com>
3528
3529         Web Inspector: AXI: node-link-list should be collapsible
3530         https://bugs.webkit.org/show_bug.cgi?id=130911
3531         
3532         Reviewed by Timothy Hatcher.
3533
3534         Accessibility Inspector: for a very long children node list, only the first 5 nodes are shown.
3535         Remaining nodes are hidden by a "# More…" link by which a user can click to reveal the remainder 
3536         of the node list.
3537
3538         * Localizations/en.lproj/localizedStrings.js:
3539         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
3540         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.linkListForNodeIds):
3541         * UserInterface/Views/Main.css:
3542         (.expand-list-button):
3543         (.node-link-list, .node-link-list li:not([hidden])):
3544         (.node-link-list, .node-link-list li): Deleted.
3545
3546 2016-01-22  Joseph Pecoraro  <pecoraro@apple.com>
3547
3548         Web Inspector: Reduce unnecessary forced layouts in TimelineRuler
3549         https://bugs.webkit.org/show_bug.cgi?id=153390
3550         <rdar://problem/24312241>
3551
3552         Reviewed by Timothy Hatcher.
3553
3554         TimelineRuler's width rarely changes. It should only need to calculate
3555         its width when added to the DOM or if the content view containing it
3556         has resized and the bounds of the ruler may have changed.
3557
3558         Switch everything in TimelineRuler to using a cached width, and add
3559         an explicit method, resize, to update this width. This eliminated
3560         frequent hangs I was seeing while recording timelines.
3561
3562         * UserInterface/Views/OverviewTimelineView.js:
3563         (WebInspector.OverviewTimelineView.prototype.shown):
3564         (WebInspector.OverviewTimelineView.prototype.updateLayoutForResize):
3565         Resize the ruler when the view is shown or resized.
3566
3567         * UserInterface/Views/TimelineOverview.js:
3568         (WebInspector.TimelineOverview.prototype.shown):
3569         (WebInspector.TimelineOverview.prototype.updateLayoutForResize):
3570         Resize the ruler when the view is shown or resized.
3571
3572         * UserInterface/Views/TimelineRecordingContentView.js:
3573         (WebInspector.TimelineRecordingContentView.prototype.layout):
3574         Inform the current content view of a resize if possible.
3575
3576         * UserInterface/Views/TimelineRuler.js:
3577         (WebInspector.TimelineRuler.prototype.resize):
3578         Update the width.
3579
3580         (WebInspector.TimelineRuler.prototype._recalculate):
3581         (WebInspector.TimelineRuler.prototype._needsMarkerLayout):
3582         (WebInspector.TimelineRuler.prototype._needsSelectionLayout):
3583         (WebInspector.TimelineRuler.prototype._handleMouseMove):
3584         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
3585         Use cached width.
3586
3587         * UserInterface/Views/TimelineRecordBar.js:
3588         (WebInspector.TimelineRecordBar.createCombinedBars): Deleted.
3589         Remove some stale code.
3590
3591 2016-01-22  Devin Rousso  <dcrousso+webkit@gmail.com>
3592
3593         Web Inspector: Sidebar's should remember their width's
3594         https://bugs.webkit.org/show_bug.cgi?id=153007
3595
3596         Reviewed by Timothy Hatcher.
3597
3598         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
3599         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.widthDidChange):
3600         Now calls superclass function.
3601
3602         * UserInterface/Views/Sidebar.js:
3603         (WebInspector.Sidebar.prototype.set selectedSidebarPanel):
3604         Now calls _recalculateWidth with the saved width value of the sidebar as
3605         the first parameter.
3606
3607         (WebInspector.Sidebar.prototype.set collapsed):
3608         Now only calls _recalculateWidth if the selected sidebar panel is visible,
3609         seeing as if it is hidden the width is irrelevant.
3610
3611         * UserInterface/Views/SidebarPanel.js:
3612         (WebInspector.SidebarPanel):
3613         Creates a setting object using the panel's identifier to store the current width.
3614
3615         (WebInspector.SidebarPanel.prototype.get savedWidth):
3616         (WebInspector.SidebarPanel.prototype.widthDidChange):
3617         So long as the current width has a value, save it to the setting object.
3618
3619 2016-01-22  Devin Rousso  <dcrousso+webkit@gmail.com>
3620
3621         Web Inspector: Class toggle add icon flashes when changing nodes
3622         https://bugs.webkit.org/show_bug.cgi?id=153341
3623
3624         Reviewed by Timothy Hatcher.
3625
3626         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
3627         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._populateClassToggles):
3628         Changed the way in which the class toggles are repopulated to prevent the
3629         add class icon from being removed and re-added.
3630
3631 2016-01-21  Nikita Vasilyev  <nvasilyev@apple.com>
3632
3633         REGRESSION (r195305): Web Inspector: WebInspector.Object can dispatch constructor-level events multiple times
3634         https://bugs.webkit.org/show_bug.cgi?id=153269
3635         <rdar://problem/24253106>
3636
3637         Reviewed by Timothy Hatcher.
3638
3639         Bring back object.hasOwnProperty("_listeners") check.
3640
3641         * UserInterface/Base/Object.js:
3642         (WebInspector.Object.prototype.dispatchEventToListeners.dispatch):
3643         (WebInspector.Object.prototype.dispatchEventToListeners):
3644         (WebInspector.Object):
3645         Check !object._listeners before !object.hasOwnProperty("_listeners")
3646         because !object._listeners is more common case thus we can exit earlier
3647         most of the time.
3648
3649 2016-01-21  Devin Rousso  <dcrousso+webkit@gmail.com>
3650
3651         Web Inspector: Add toggle-able list of classes for each element
3652         https://bugs.webkit.org/show_bug.cgi?id=152678
3653
3654         Reviewed by Timothy Hatcher.
3655
3656         Adds a button to the CSS sidebar that, when toggled, displays a section
3657         directly above it containing all the classes for the selected node that,
3658         when toggled, adds or removes the class from the node.
3659
3660         * Localizations/en.lproj/localizedStrings.js:
3661
3662         * UserInterface/Protocol/RemoteObject.js:
3663         (WebInspector.RemoteObject.prototype.callFunction.mycallback):
3664         (WebInspector.RemoteObject.prototype.callFunction):
3665         Add extra handling of arguments to allow nicer looking calls by other classes.
3666
3667         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
3668         Changed next-sibling selector (+) to general-sibling selector (~).
3669
3670         (.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):
3671         (.sidebar > .panel.details.css-style > .content:not(.supports-new-rule, .has-filter-bar) ~ :matches(.options-container, .class-list-container)):
3672         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
3673         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle.selected):
3674         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:not(.selected):hover):
3675         (.sidebar > .panel.details.css-style > .content ~ .class-list-container):
3676         (.sidebar > .panel.details.css-style > .content ~ .class-list-container[hidden]):
3677         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class):
3678         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > input[type="checkbox"]):
3679         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .add-class-icon):
3680         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
3681         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class:not(.active) > .class-name-input):
3682         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > *:matches(.new-class, .class-toggle)):
3683
3684         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
3685         (WebInspector.CSSStyleDetailsSidebarPanel):
3686         Also changed the few instances of "var" to "let".
3687
3688         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.refresh):
3689         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.addEventListeners):
3690         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._handleNodeAttributeModified):
3691         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._handleNodeAttributeRemoved):
3692         Adds listeners to the DOMNode specifically listening for changes to the
3693         class attribute and repopulates the class toggle list if fired.
3694
3695         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._classToggleButtonClicked):
3696         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._addClassContainerClicked):
3697         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._addClassInputKeyPressed):
3698         If the Enter key is pressed, add a new class equal to the input value.
3699
3700         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._addClassInputBlur):
3701         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._populateClassToggles):
3702         Loops through all the classes, including previously removed ones, for the
3703         selected node and creates a toggle for each.
3704
3705         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._createToggleForClassName.classNameToggleChanged):
3706         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._createToggleForClassName):
3707         Creates a toggle element for the given className and adds it to the container.
3708
3709         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._toggleClass.resolvedNode.toggleClass):
3710         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._toggleClass.resolvedNode):
3711         (WebInspector.CSSStyleDetailsSidebarPanel.prototype._toggleClass):
3712         Uses the Element.classList to toggle the given className on the selected node.
3713
3714 2016-01-20  Saam barati  <sbarati@apple.com>
3715
3716         Web Inspector: Hook the sampling profiler into the Timelines UI
3717         https://bugs.webkit.org/show_bug.cgi?id=152766
3718         <rdar://problem/24066360>
3719
3720         Reviewed by Joseph Pecoraro.
3721
3722         The main change in this patch is to swap in the SamplingProfiler
3723         in place of the LegacyProfiler. To do this, we've created a data
3724         structure called CallingContextTree which aggregates the SamplingProfiler's
3725         data into an easy to manage tree. To see how the data structure works,
3726         consider the following program:
3727         ```
3728         function bar() { // run code here for a long time. }
3729         function baz() { // run code here for a long time. }
3730         function foo() { bar(); baz(); }
3731         foo();
3732         ```
3733         From this program, we will create a tree like this:
3734                         (program)
3735                             |
3736                             |
3737                            foo
3738                            | |
3739                           /   \
3740                          /     \
3741                         bar     baz
3742         
3743         From this type of tree, we can easily create a CPUProfile payload
3744         object. Because the Timelines UI knows how to interact with the
3745         CPUProfile object and display it, we currently map the tree to this object
3746         to make it trivially easy to display the SamplingProfiler's data. In the future,
3747         we may want to find ways to work directly with the CallingContextTree instead
3748         of mapping it into another object.
3749
3750         * Localizations/en.lproj/localizedStrings.js:
3751         * UserInterface/Controllers/TimelineManager.js:
3752         * UserInterface/Main.html:
3753         * UserInterface/Models/CallingContextTree.js: Added.
3754         * UserInterface/Models/ScriptInstrument.js:
3755         * UserInterface/Protocol/ScriptProfilerObserver.js:
3756         * UserInterface/TestStub.html:
3757         * UserInterface/Views/ScriptTimelineView.js:
3758
3759 2016-01-19  Joseph Pecoraro  <pecoraro@apple.com>
3760
3761         Web Inspector: Uncaught exception when logging an Error object
3762         https://bugs.webkit.org/show_bug.cgi?id=153258
3763         <rdar://problem/24249068>
3764
3765         Reviewed by Timothy Hatcher.
3766
3767         * UserInterface/Views/ErrorObjectView.js:
3768         (WebInspector.ErrorObjectView):
3769         Initialize members that are used later for clarity.
3770
3771         (WebInspector.ErrorObjectView.prototype.collapse):
3772         (WebInspector.ErrorObjectView.prototype.expand):
3773         This never has a previewView, remove it.
3774
3775         (WebInspector.ErrorObjectView.prototype.appendTitleSuffix):
3776         Add the suffix ("= $1") after the description and before the
3777         content tree outline.
3778
3779 2016-01-19  Nikita Vasilyev  <nvasilyev@apple.com>
3780
3781         Web Inspector: Subclasses of WebInspector.Object shouldn't overwrite this._listeners
3782         https://bugs.webkit.org/show_bug.cgi?id=153268
3783         <rdar://problem/24252766>
3784
3785         Reviewed by Timothy Hatcher.
3786
3787         * UserInterface/Base/Object.js:
3788         (WebInspector.Object.prototype.dispatchEventToListeners):
3789         Add a console.assert.
3790
3791         * UserInterface/Views/BreakpointTreeElement.js:
3792         (WebInspector.BreakpointTreeElement):
3793         (WebInspector.BreakpointTreeElement.prototype.onattach):
3794         (WebInspector.BreakpointTreeElement.prototype.ondetach):
3795         * UserInterface/Views/ProbeSetDataGrid.js:
3796         (WebInspector.ProbeSetDataGrid):
3797         (WebInspector.ProbeSetDataGrid.prototype.closed):
3798         * UserInterface/Views/ProbeSetDetailsSection.js:
3799         (WebInspector.ProbeSetDetailsSection):
3800         (WebInspector.ProbeSetDetailsSection.prototype.closed):
3801         Replace all instances of "this._listeners" with "this._listenerSet".
3802
3803 2016-01-19  Timothy Hatcher  <timothy@apple.com>
3804
3805         Web Inspector: Add protocol version for iOS 9.3
3806         https://bugs.webkit.org/show_bug.cgi?id=153256
3807         rdar://problem/24247951
3808
3809         Reviewed by Joseph Pecoraro.
3810
3811         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js: Added.
3812         * Versions/Inspector-iOS-9.3.json: Added.
3813
3814 2016-01-19  Joseph Pecoraro  <pecoraro@apple.com>
3815
3816         REGRESSION: Web Inspector: Hovering linkified node references should show node highlight
3817         https://bugs.webkit.org/show_bug.cgi?id=153248
3818         <rdar://problem/24245518>
3819
3820         Reviewed by Timothy Hatcher.
3821
3822         * UserInterface/Base/DOMUtilities.js:
3823         Show the complete node highlight details (colors and node info).
3824
3825 2016-01-19  Nikita Vasilyev  <nvasilyev@apple.com>
3826
3827         Web Inspector: WebInspector.Object.addEventListener is O(n), make it O(1)
3828         https://bugs.webkit.org/show_bug.cgi?id=152422
3829         <rdar://problem/24038047>
3830
3831         Reviewed by Timothy Hatcher.
3832
3833         Slow addEventListener was the main cause of Console sluggishness[1].
3834
3835         This patch changes:
3836         addEventListener from O(n) to O(1)
3837       &nb