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