Web Inspector: Include Beacon and Ping requests in Network tab
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2017-10-02  Joseph Pecoraro  <pecoraro@apple.com>
2
3         Web Inspector: Include Beacon and Ping requests in Network tab
4         https://bugs.webkit.org/show_bug.cgi?id=177641
5         <rdar://problem/33086839>
6
7         Reviewed by Chris Dumez.
8
9         * Localizations/en.lproj/localizedStrings.js:
10         New strings for Beacon/Ping.
11
12         * UserInterface/Images/Beacon.svg: Added.
13         * UserInterface/Views/ResourceIcons.css:
14         (.resource-icon.resource-type-ping .icon,):
15         (body:not(.mac-platform, .windows-platform) .resource-icon.resource-type-ping .icon,):
16         (body:not(.mac-platform, .windows-platform) .large .resource-icon.resource-type-ping .icon,):
17         New icon for Beacon/Ping. They share an icon since they are similiar in concept:
18         a request that is sent and the page doesn't expect a response.
19
20         * UserInterface/Controllers/FrameResourceManager.js:
21         (WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
22         When a sub-resource and a main-resource have the same URL we were not
23         distinguishing them. Use the resource type to distinguish them better.
24
25         * UserInterface/Models/SourceCode.js:
26         (WI.SourceCode.prototype._processContent):
27         Safer handling if the body was base64 encoded but an empty string.
28
29         * UserInterface/Models/Resource.js:
30         (WI.Resource.displayNameForType):
31         * UserInterface/Models/ResourceCollection.js:
32         (WI.ResourceCollection.verifierForType):
33         * UserInterface/Views/NetworkTableContentView.js:
34         (WI.NetworkTableContentView.shortDisplayNameForResourceType):
35         * UserInterface/Views/ResourceClusterContentView.js:
36         (WI.ResourceClusterContentView.prototype.get responseContentView):
37         New resource types.
38
39         * UserInterface/Views/ResourceContentView.js:
40         (WI.ResourceContentView.prototype.showMessage):
41         * UserInterface/Views/TextResourceContentView.js:
42         (WI.TextResourceContentView.prototype._contentDidPopulate):
43         Nicer display for empty content, which may be common for these requests.
44
45 2017-09-29  Nikita Vasilyev  <nvasilyev@apple.com>
46
47         Web Inspector: Styles Redesign: support undo/redo of manual edits
48         https://bugs.webkit.org/show_bug.cgi?id=177314
49
50         Reviewed by Joseph Pecoraro.
51
52         Make sure Command-Z and Command-Shift-Z undo changes in the styles sidebar
53         when not focused on a contentEditable field.
54
55         * UserInterface/Views/EditingSupport.js:
56         (WI.isEventTargetAnEditableField):
57         Make sure WI._undoKeyboardShortcut doesn't call WI.undo() when editing inside of a contentEditable element.
58
59         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
60         (WI.SpreadsheetCSSStyleDeclarationEditor):
61         Call style setter to setup event listeners during instantiation.
62
63         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
64         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
65         Update style declaration section when it isn't focused.
66         This is the same logic as in the old styles sidebar (CSSStyleDeclarationTextEditor style setter).
67
68 2017-09-29  Joseph Pecoraro  <pecoraro@apple.com>
69
70         Web Inspector: Open Resource Dialog icons are blurry (24x24 instead of 32x32)
71         https://bugs.webkit.org/show_bug.cgi?id=177631
72         <rdar://problem/34729636>
73
74         Reviewed by Matt Baker.
75
76         * UserInterface/Views/OpenResourceDialog.css:
77         (.open-resource-dialog > .tree-outline.large .item):
78         (.open-resource-dialog > .tree-outline.large .item .icon):
79         (.open-resource-dialog .tree-outline.large .item .titles):
80         Make the rows large enough to fit the full 32x32 icon instead of a blurry 24x24.
81
82 2017-09-29  Joseph Pecoraro  <pecoraro@apple.com>
83
84         Web Inspector: Uncaught exception with populate find keyboard shortcut
85         https://bugs.webkit.org/show_bug.cgi?id=177672
86
87         Reviewed by Matt Baker.
88
89         * UserInterface/Base/Main.js:
90         The focusedContentView can be null so bail if that is the case.
91
92 2017-09-28  Devin Rousso  <webkit@devinrousso.com>
93
94         WebInspector: Uncaught Exception: TypeError: this._delegate.completionControllerCSSFunctionValuesNeeded is not a function.
95         https://bugs.webkit.org/show_bug.cgi?id=177619
96
97         Reviewed by Joseph Pecoraro.
98
99         * UserInterface/Controllers/CodeMirrorCompletionController.js:
100         (WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
101         Remove accidental `typeof` keyword.
102
103 2017-09-28  Joseph Pecoraro  <pecoraro@apple.com>
104
105         Web Inspector: Remove Error icon in error message for resources it looks poor
106         https://bugs.webkit.org/show_bug.cgi?id=177613
107
108         Reviewed by Matt Baker.
109
110         * UserInterface/Views/Main.css:
111         (.message-text-view.error::before): Deleted.
112
113 2017-09-28  Tim Horton  <timothy_horton@apple.com>
114
115         Remove constant() in favor of env()
116         https://bugs.webkit.org/show_bug.cgi?id=177581
117         <rdar://problem/34701321>
118
119         Reviewed by Dean Jackson.
120
121         * UserInterface/Models/CSSCompletions.js:
122         * UserInterface/Models/CSSKeywordCompletions.js:
123         (WI.CSSKeywordCompletions.forProperty):
124         (WI.CSSKeywordCompletions.forFunction):
125
126 2017-09-27  Joseph Pecoraro  <pecoraro@apple.com>
127
128         Uncaught Exception: Attempted to assign to readonly property (at ContentView.js:​206:​34)​
129         https://bugs.webkit.org/show_bug.cgi?id=177587
130
131         Reviewed by Matt Baker.
132
133         We allow a representedObject to be a string. In strict mode attempting to set
134         a property on a string results in a TypeError. So we should be careful not to
135         do this in the rare cases where our representedObject is the a string.
136
137         * UserInterface/Views/ContentView.js:
138         (WI.ContentView.contentViewForRepresentedObject):
139         (WI.ContentView.closedContentViewForRepresentedObject):
140         Avoid setting a property on strings. ContentViews backed by a String aren't typically
141         shared anyways, so the property case would not be useful. If a client really wants
142         to share they could use `new String(...)` as the representedObject.
143
144 2017-09-27  Matt Baker  <mattbaker@apple.com>
145
146         Web Inspector: Missing checks in DebuggerSidebarPanel for DOM debugging support
147         https://bugs.webkit.org/show_bug.cgi?id=177574
148
149         Reviewed by Joseph Pecoraro.
150
151         Check before using class members that are conditionally constructed based
152         on DOM debugging support.
153
154         * UserInterface/Views/DebuggerSidebarPanel.js:
155         (WI.DebuggerSidebarPanel.prototype.closed):
156         (WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
157
158 2017-09-27  Matt Baker  <mattbaker@apple.com>
159
160         Web Inspector: Create ResourceCollectionContentView and make CollectionContentView easier to extend
161         https://bugs.webkit.org/show_bug.cgi?id=177419
162
163         Reviewed by Devin Rousso.
164
165         CollectionContentView should be generic, work with any represented object
166         Collection, and not perform any type checking. It should just map items
167         to ContentViews using the provided ContentView constructor.
168
169         The behavior when clicking a ContentView in the collection has been extended.
170         If selection is enabled, clicking a ContentView will cause a "selected" class
171         to be applied to its element, and a SupplementalRepresentedObjectsDidChange
172         event is dispatched.
173
174         * Localizations/en.lproj/localizedStrings.js:
175         * UserInterface/Main.html:
176         New file, move CollectionContentView above subclasses.
177
178         * UserInterface/Models/ResourceCollection.js:
179         (WI.ResourceCollection.prototype.get resourceType):
180         Make resource type publicly available.
181
182         * UserInterface/Views/CollectionContentView.js:
183         Move type checking of the collection out of the base class and assert
184         that ContentViews are created when invoking `contentViewConstructor`.
185         (WI.CollectionContentView):
186         (WI.CollectionContentView.titleForCollection):
187         (WI.CollectionContentView.prototype.get supplementalRepresentedObjects):
188         (WI.CollectionContentView.prototype.get selectionEnabled):
189         (WI.CollectionContentView.prototype.set selectionEnabled):
190         (WI.CollectionContentView.prototype.addContentViewForItem):
191         (WI.CollectionContentView.prototype.removeContentViewForItem):
192         (WI.CollectionContentView.prototype.contentViewAdded):
193         (WI.CollectionContentView.prototype.contentViewRemoved):
194         (WI.CollectionContentView.prototype.initialLayout):
195         (WI.CollectionContentView.prototype.attached):
196         (WI.CollectionContentView.prototype.detached):
197         (WI.CollectionContentView.prototype._handleItemAdded):
198         (WI.CollectionContentView.prototype._handleItemRemoved):
199         (WI.CollectionContentView.prototype._selectItem):
200         (WI.CollectionContentView.prototype._addContentViewForItem): Deleted.
201         (WI.CollectionContentView.prototype._removeContentViewForItem): Deleted.
202
203         * UserInterface/Views/ContentView.js:
204         (WI.ContentView.createFromRepresentedObject):
205         Create a ResourceCollectionContentView. In the future, additional
206         Collection types can be mapped to their associated CollectionContentView.
207
208         * UserInterface/Views/ResourceCollectionContentView.js: Added.
209         New class for resource-specific logic previously in CollectionContentView.
210         (WI.ResourceCollectionContentView):
211         (WI.ResourceCollectionContentView.prototype.contentViewAdded):
212         (WI.ResourceCollectionContentView.prototype._handleContentError):
213         Remove ContentView without removing the resource from its collection.
214
215 2017-09-27  Ross Kirsling  <ross.kirsling@sony.com>
216
217         Web Inspector: Fix Layers tab sidebar popover.
218         https://bugs.webkit.org/show_bug.cgi?id=177477
219
220         Reviewed by Matt Baker.
221
222         * UserInterface/Views/LayerDetailsSidebarPanel.js:
223         (WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Added.
224         (WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
225         (WI.LayerDetailsSidebarPanel.prototype._sortDataGrid):
226         (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
227         (WI.LayerDetailsSidebarPanel.prototype._dataGridFocused):
228         (WI.LayerDetailsSidebarPanel.prototype._dataGridBlurred):
229         (WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Refactored.
230         (WI.LayerDetailsSidebarPanel.prototype._presentPopover):
231         (WI.LayerDetailsSidebarPanel.prototype._dataGridClicked): Deleted -- not actually desired behavior.
232         (WI.LayerDetailsSidebarPanel.prototype._updatePopoverForSelectedNode): Deleted -- code simplification.
233         (WI.LayerDetailsSidebarPanel.prototype._hidePopover): Deleted -- no longer needed.
234
235 2017-09-27  Fujii Hironori  <Hironori.Fujii@sony.com>
236
237         [GTK] Web Inspector: Add Canvas2D.svg and Canvas3D.svg
238         https://bugs.webkit.org/show_bug.cgi?id=175364
239
240         Reviewed by Carlos Garcia Campos.
241
242         Add more free icons.
243
244         * UserInterface/Images/gtk/Canvas2D.svg: Copied from Source/WebInspectorUI/UserInterface/Images/gtk/Canvas.svg.
245         * UserInterface/Images/gtk/Canvas3D.svg: Added.
246
247 2017-09-26  Nikita Vasilyev  <nvasilyev@apple.com>
248
249         Web Inspector: Styles Redesign: Style unused, overridden, and invalid properties differently
250         https://bugs.webkit.org/show_bug.cgi?id=177461
251
252         Reviewed by Matt Baker.
253
254         Style properties the same way as in the current styles sidebar with two minor changes:
255         - Commented out properties are never strikethrough.
256         - Non-inherited properties of inherited rules are no longer strikethrough (but still semi-transparent).
257
258         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
259         (.spreadsheet-style-declaration-editor .property:matches(.invalid, .other-vendor, .overridden):not(.disabled)):
260         Use the same styles as in the old sidebar, with exception of `-webkit-text-stroke-width: 0.000000000000001px`
261         hack, which was replaced by -webkit-text-decoration-color.
262
263         (.spreadsheet-style-declaration-editor .property.invalid:not(.disabled)):
264         (.spreadsheet-style-declaration-editor .property.not-inherited):
265         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
266         (WI.SpreadsheetStyleProperty):
267         (WI.SpreadsheetStyleProperty.prototype._update):
268
269 2017-09-26  Joseph Pecoraro  <pecoraro@apple.com>
270
271         Web Inspector: Improve Table scrolling performance
272         https://bugs.webkit.org/show_bug.cgi?id=177468
273
274         Reviewed by Brian Burg.
275
276         This reduces work during scrolling updates in two ways.
277
278         1. Avoid recalculating the width/height of the Table on scroll.
279           - We only need to recalculate sizes if the view changes size.
280         2. Avoid resetting sizes on all cells if the sizes did not change.
281           - Enumerating and setting style.width values was showing up in profiles.
282
283         * UserInterface/Views/Table.js:
284         (WI.Table):
285         New member variables for a cached width/height of the scrollable region.
286         _cachedWidth is the same as _cachedScrollableHeight but they could be
287         different so I just kept them separate for now. Also switch to
288         getBoundingClientRect which gets us a better value then
289         offsetWidth/offsetHeight.
290
291         (WI.Table.prototype.resize):
292         Clear cached size and relayout.
293
294         (WI.Table.prototype.layout):
295         If we did not resize, layout without recalculating sizes.
296
297         (WI.Table.prototype.resizerDragging):
298         (WI.Table.prototype._getOrCreateRow):
299         When column widths change increment the width generation. This will let
300         us quickly check if a row's cells are appropriately sized or not.
301
302         (WI.Table.prototype._resizeColumnsAndFiller):
303         Cache width values after recalculating. Provide a fast path if values
304         have not changed.
305
306         (WI.Table.prototype._updateVisibleRows):
307         (WI.Table.prototype._updateFillerRowWithNewHeight):
308         Factor out updating the filler row into a function.
309         
310         (WI.Table.prototype._applyColumnWidths):
311         Always update the width generation of a row after setting its cell widths.
312
313         (WI.Table.prototype._applyColumnWidthsToColumnsIfNeeded):
314         Fast path only updates row cell widths if they need to change.
315
316 2017-09-25  Devin Rousso  <webkit@devinrousso.com>
317
318         Web Inspector: move Console.addInspectedNode to DOM.setInspectedNode
319         https://bugs.webkit.org/show_bug.cgi?id=176827
320
321         Reviewed by Joseph Pecoraro.
322
323         * UserInterface/Controllers/DOMTreeManager.js:
324         (WI.DOMTreeManager):
325         (WI.DOMTreeManager.prototype.setInspectedNode):
326
327         * UserInterface/Views/DOMTreeContentView.js:
328         (WI.DOMTreeContentView.prototype._selectedNodeDidChange):
329
330 2017-09-25  Joseph Pecoraro  <pecoraro@apple.com>
331
332         Web Inspector: Add loading indicator next to resources in the Network Tab
333         https://bugs.webkit.org/show_bug.cgi?id=177469
334
335         Reviewed by Matt Baker.
336
337         * UserInterface/Models/Resource.js:
338         (WI.Resource.prototype.isLoading):
339         Provide a useful accessor to check if the Resource is considered loading or not.
340
341         * UserInterface/Views/NetworkGridContentView.js:
342         (WI.NetworkGridContentView.prototype._networkTimelineRecordAdded):
343         * UserInterface/Views/ResourceTimelineDataGridNode.js:
344         (WI.ResourceTimelineDataGridNode.prototype._updateStatus):
345         * UserInterface/Views/ResourceTreeElement.js:
346         (WI.ResourceTreeElement.prototype._updateStatus):
347         Switch existing code to use the new isLoading() function and make the similiar
348         code more consistent.
349
350         * UserInterface/Views/NetworkTableContentView.css:
351         (body[dir=ltr] .content-view.network .table .cell.name > .status):
352         (body[dir=rtl] .content-view.network .table .cell.name > .status):
353         (.content-view.network .table .cell.name > .status .indeterminate-progress-spinner):
354         * UserInterface/Views/NetworkTableContentView.js:
355         (WI.NetworkTableContentView.prototype._populateNameCell):
356         Add a loading indicator to the Name column in the Network tab.
357         It is sized the same as the loading indicator in the Resource tab.
358
359 2017-09-25  Ross Kirsling  <ross.kirsling@sony.com>
360
361         Web Inspector: Elements tab's Layers sidebar should disappear when Layers tab is present.
362         https://bugs.webkit.org/show_bug.cgi?id=177476
363
364         Reviewed by Devin Rousso.
365
366         * UserInterface/Views/ElementsTabContentView.js:
367         (WI.ElementsTabContentView):
368
369 2017-09-25  Devin Rousso  <webkit@devinrousso.com>
370
371         Web Inspector: Add autocompletion suggestions for CSS attr based on the selected element's attributes
372         https://bugs.webkit.org/show_bug.cgi?id=177346
373
374         Reviewed by Joseph Pecoraro.
375
376         * UserInterface/Controllers/CodeMirrorCompletionController.js:
377         (WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
378         Provide a way for delegates to add completion items for CSS functions based on the name of
379         the function.
380
381         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
382         (WI.CSSStyleDeclarationTextEditor.prototype.completionControllerCSSFunctionValuesNeeded):
383         If the function name is "attr", also return a list of the names of all the selected node's
384         attributes.
385
386 2017-09-25  Joseph Pecoraro  <pecoraro@apple.com>
387
388         Unreviewed follow-up to r222470.
389
390         * UserInterface/Main.html:
391         Remove reference to css file that doesn't exist yet.
392
393 2017-09-22  Joseph Pecoraro  <pecoraro@apple.com>
394
395         Web Inspector: Include a table in New Network Tab
396         https://bugs.webkit.org/show_bug.cgi?id=177206
397
398         Reviewed by Matt Baker and Brian Burg.
399
400         This includes an initial implementation of the NetworkTableContentView,
401         and a generic Table / TableColumn implementation ported from DataGrid.
402
403         * Localizations/en.lproj/localizedStrings.js:
404         * UserInterface/Main.html:
405         New strings and files.
406
407         * UserInterface/Views/NetworkGridContentView.css:
408         (.content-view:matches(.network, .network-grid) > .data-grid .cache-type):
409         (.cache-type): Deleted.
410         * UserInterface/Views/ResourceDetailsSidebarPanel.css:
411         (.sidebar > .panel.resource-details .cache-type):
412         Make the .cache-type selector more specific for the legacy cases.
413
414         * UserInterface/Views/NetworkTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.css.
415         (.content-view.network > .content-browser):
416         * UserInterface/Views/NetworkTabContentView.js:
417         (WI.NetworkTabContentView.prototype.shown):
418         (WI.NetworkTabContentView.prototype.hidden):
419         (WI.NetworkTabContentView.prototype.closed):
420         NetworkTabContentView has a ContentBrowser so it should be passing
421         ContentBrowser lifecycle events (shown, hidden, closed) through to
422         the sub-content browser.
423
424         * UserInterface/Views/TableColumn.js: Added.
425         (WI.TableColumn.prototype.get identifier):
426         (WI.TableColumn.prototype.get name):
427         (WI.TableColumn.prototype.get width):
428         (WI.TableColumn.prototype.get minWidth):
429         (WI.TableColumn.prototype.get maxWidth):
430         (WI.TableColumn.prototype.get hidden):
431         (WI.TableColumn.prototype.get defaultHidden):
432         (WI.TableColumn.prototype.get sortable):
433         (WI.TableColumn.prototype.get align):
434         (WI.TableColumn.prototype.get locked):
435         (WI.TableColumn.prototype.get flexible):
436         (WI.TableColumn.prototype.setWidth):
437         (WI.TableColumn.prototype.setHidden):
438         Model object for a column. Values are getter only. Columns may express
439         size constraints (min width / max width) that are respected as much as
440         possible. When a column is resized it dispatches an event.
441
442         * UserInterface/Views/Table.js: Added.
443         (WI.Table):
444         (WI.Table.prototype.get element):
445         (WI.Table.prototype.get identifier):
446         (WI.Table.prototype.get dataSource):
447         (WI.Table.prototype.get delegate):
448         (WI.Table.prototype.get rowHeight):
449         (WI.Table.prototype.get selectedRow):
450         (WI.Table.prototype.get sortOrder):
451         (WI.Table.prototype.set sortOrder):
452         (WI.Table.prototype.get sortColumnIdentifier):
453         (WI.Table.prototype.set sortColumnIdentifier):
454         (WI.Table.prototype.resize):
455         (WI.Table.prototype.reloadData):
456         (WI.Table.prototype.reloadDataAddedToEndOnly):
457         (WI.Table.prototype.reloadRow):
458         (WI.Table.prototype.reloadCell):
459         (WI.Table.prototype.selectRow):
460         (WI.Table.prototype.clearSelectedRow):
461         (WI.Table.prototype.columnWithIdentifier):
462         (WI.Table.prototype.addColumn):
463         (WI.Table.prototype.showColumn):
464         (WI.Table.prototype.hideColumn):
465         (WI.Table.prototype.restoreScrollPosition):
466         (WI.Table.prototype.initialLayout):
467         (WI.Table.prototype.layout):
468         (WI.Table.prototype.resizerDragStarted):
469         (WI.Table.prototype.resizerDragging.growableSize):
470         (WI.Table.prototype.resizerDragging.shrinkableSize):
471         (WI.Table.prototype.resizerDragging.canGrow):
472         (WI.Table.prototype.resizerDragging.canShrink):
473         (WI.Table.prototype.resizerDragging.columnToResize):
474         (WI.Table.prototype.resizerDragging):
475         (WI.Table.prototype.resizerDragEnded):
476         (WI.Table.prototype._needsLayout):
477         (WI.Table.prototype._createHeaderCell):
478         (WI.Table.prototype._createFillerCell):
479         (WI.Table.prototype._createCell):
480         (WI.Table.prototype._getOrCreateRow):
481         (WI.Table.prototype._populatedCellForColumnAndRow):
482         (WI.Table.prototype._populateRow):
483         (WI.Table.prototype._resizeColumnsAndFiller.distributeRemainingPixels):
484         (WI.Table.prototype._resizeColumnsAndFiller.bestFit):
485         (WI.Table.prototype._resizeColumnsAndFiller):
486         (WI.Table.prototype._updateVisibleRows):
487         (WI.Table.prototype._applyColumnWidths):
488         (WI.Table.prototype._positionResizerElements):
489         (WI.Table.prototype._isRowVisible):
490         (WI.Table.prototype._indexToInsertColumn):
491         (WI.Table.prototype._handleScroll):
492         (WI.Table.prototype._handleKeyDown):
493         (WI.Table.prototype._handleClick):
494         (WI.Table.prototype._handleContextMenu):
495         (WI.Table.prototype._handleHeaderCellClicked):
496         (WI.Table.prototype._handleHeaderContextMenu):
497         Table is mostly a re-implementation of DataGrid. Much of its functionality
498         was a direct copy that was then modified and simplified for a smaller
499         and simpler feature set.
500         
501         Table behaves more like Cocoa's NSTableView. A datasource supplies the
502         number of rows, which Table uses to resize appropriately. A delegate is
503         then called to populate cells in a row when they become visible. Table
504         does minimal caching, and in the event of data source changes
505         (resorting, adding rows, modifying rows, etc) the visible rows are
506         simply recreated from scratch. Clients should therefore make generating
507         a cell's contents as simple and performant as possible.
508
509         Unlike DataGrid, rows are just an <li> with a bunch of cells. Since the
510         number of rows are limited to (roughly) those that are visible, most
511         operations, like resizing, creates / modifies each of the visible cells.
512
513         Finally, Table's resizing operations behave more like flexible content
514         than DataGrid's neighbor only approach. This makes resizing the table
515         generally easier to do, but may need refinement to decide which columns
516         we would prefer to distribute columns during resizing.
517
518         * UserInterface/Views/Table.css: Added.
519         (.table):
520         (.table > .header):
521         (.table > .header > .sortable:active):
522         (.table > .header > :matches(.sort-ascending, .sort-descending)):
523         (.table > .header > :matches(.sort-ascending, .sort-descending)::after):
524         (body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)):
525         (body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)):
526         (body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)::after):
527         (body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)::after):
528         (.table > .header > .sort-ascending::after):
529         (.table > .header > .sort-descending::after):
530         (.table > .data-container):
531         (.table > .data-container.not-scrollable):
532         (.table > .data-container > .data-list):
533         (.table > .data-container > .data-list.odd-first-zebra-stripe):
534         (.table > .data-container > .data-list > li):
535         (.table > .data-container > .data-list > li.selected):
536         (.table:focus > .data-container > .data-list li.selected):
537         (.table .cell):
538         (body[dir=ltr] .table .cell:not(:last-child)):
539         (body[dir=rtl] .table .cell:not(:last-child)):
540         (body[dir=ltr] .table .cell:first-child):
541         (body[dir=rtl] .table .cell:first-child):
542         (.table :not(.header) .cell:first-of-type):
543         (.table .cell.align-right):
544         (.table .cell.align-left):
545         (.table .cell.align-center):
546         Styles mostly taken from DataGrid with a few minor tweaks.
547
548         * UserInterface/Views/NetworkTableContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.css.
549         (.content-view.network .table .icon):
550         (body[dir=ltr] .content-view.network .table .icon):
551         (body[dir=rtl] .content-view.network .table .icon):
552         (.content-view.network .table li:not(.filler) .cell.name):
553         (.content-view.network .table .cache-type):
554         (.content-view.network .table .error):
555         * UserInterface/Views/NetworkTableContentView.js:
556         (WI.NetworkTableContentView):
557         (WI.NetworkTableContentView.shortDisplayNameForResourceType):
558         (WI.NetworkTableContentView.prototype.get navigationItems):
559         (WI.NetworkTableContentView.prototype.shown):
560         (WI.NetworkTableContentView.prototype.closed):
561         (WI.NetworkTableContentView.prototype.reset):
562         (WI.NetworkTableContentView.prototype.tableNumberOfRows):
563         (WI.NetworkTableContentView.prototype.tableSortChanged):
564         (WI.NetworkTableContentView.prototype.tableCellClicked):
565         (WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
566         (WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
567         (WI.NetworkTableContentView.prototype.tablePopulateCell):
568         (WI.NetworkTableContentView.prototype._populateNameCell):
569         (WI.NetworkTableContentView.prototype._populateTransferSizeCell):
570         (WI.NetworkTableContentView.prototype._generateSortComparator):
571         (WI.NetworkTableContentView.prototype.initialLayout):
572         (WI.NetworkTableContentView.prototype.layout):
573         (WI.NetworkTableContentView.prototype._processPendingEntries):
574         (WI.NetworkTableContentView.prototype._rowIndexForResource):
575         (WI.NetworkTableContentView.prototype._updateEntryForResource):
576         (WI.NetworkTableContentView.prototype._mainResourceDidChange):
577         (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
578         (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
579         (WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
580         (WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
581         (WI.NetworkTableContentView.prototype._isDefaultSort):
582         (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
583         (WI.NetworkTableContentView.prototype._displayType):
584         (WI.NetworkTableContentView.prototype._entryForResource):
585         (WI.NetworkTableContentView.prototype._passFilter):
586         (WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):
587         (WI.NetworkTableContentView.prototype._updateFilteredEntries):
588         (WI.NetworkTableContentView.prototype._generateTypeFilter):
589         (WI.NetworkTableContentView.prototype._areFilterListsIdentical):
590         (WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
591         (WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
592         The NetworkTableContentView has a Table and it is the table's data source
593         and delegate. It contains a complete list of entries, and a filtered list
594         of entries, which is the backing list of rows for the table. As entries
595         are created, updated, or filters modified, this generally modifies
596         entries, sorts, filters, and reloads the table. As much as possible it
597         batches operations in the usual layout loop.
598
599 2017-09-24  Joseph Pecoraro  <pecoraro@apple.com>
600
601         Web Inspector: Reduce work during resizing
602         https://bugs.webkit.org/show_bug.cgi?id=177402
603
604         Reviewed by Matt Baker.
605
606         * UserInterface/Views/ConsolePrompt.js:
607         (WI.ConsolePrompt.prototype.layout):
608         In the most common case there is no text so avoid doing work in CodeMirror.
609
610 2017-09-22  Matt Baker  <mattbaker@apple.com>
611
612         Web Inspector: Remove SidebarPanel show/hide and added/removed
613         https://bugs.webkit.org/show_bug.cgi?id=177387
614
615         Reviewed by Devin Rousso.
616
617         * UserInterface/Views/DebuggerTabContentView.js:
618         (WI.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
619         * UserInterface/Views/SearchSidebarPanel.js:
620         (WI.SearchSidebarPanel.prototype.focusSearchField):
621         * UserInterface/Views/Sidebar.js:
622         (WI.Sidebar.prototype.insertSidebarPanel):
623         (WI.Sidebar.prototype.removeSidebarPanel):
624         * UserInterface/Views/SidebarPanel.js:
625         (WI.SidebarPanel.prototype.show): Deleted.
626         (WI.SidebarPanel.prototype.hide): Deleted.
627         (WI.SidebarPanel.prototype.added): Deleted.
628         (WI.SidebarPanel.prototype.removed): Deleted.
629
630 2017-09-22  Matt Baker  <mattbaker@apple.com>
631
632         Web Inspector: View should automatically layout when it becomes attached to the DOM
633         https://bugs.webkit.org/show_bug.cgi?id=177189
634
635         Reviewed by Devin Rousso.
636
637         This guarantees that a layout is always scheduled as soon as a view is
638         attached to the DOM. Now that nearly all views are created lazily, it
639         is safe to make this change even without having a visibility concept in
640         the View class that would prevent layouts for background views.
641
642         * UserInterface/Views/View.js:
643         (WI.View):
644         Remove `this._needsLayoutWhenAttachedToRoot` flag, which is now implicit.
645         This was set if a layout was requested before the view had been attached
646         to the DOM.
647
648         (WI.View.prototype.get element):
649         (WI.View.prototype.get layoutPending):
650         (WI.View.prototype.get parentView):
651         (WI.View.prototype.get subviews):
652         (WI.View.prototype.get isAttached):
653         (WI.View.prototype.insertSubviewBefore):
654         (WI.View.prototype.removeSubview):
655         (WI.View.prototype.removeAllSubviews):
656         (WI.View.prototype.attached):
657         (WI.View.prototype.detached):
658         Hooks for subclasses to define behavior added or removed from the DOM.
659         (WI.View.prototype._didMoveToParent):
660         (WI.View.prototype._didMoveToWindow):
661         (WI.View._scheduleLayoutForView):
662         (WI.View.prototype.didMoveToWindow): Deleted.
663         (WI.View.prototype.didMoveToParent): Deleted.
664         These were only used by View, and have been made private.
665
666 2017-09-22  Nikita Vasilyev  <nvasilyev@apple.com>
667
668         Web Inspector: Styles Redesign: support toggling properties
669         https://bugs.webkit.org/show_bug.cgi?id=176643
670
671         Reviewed by Joseph Pecoraro.
672
673         Add a primitive UI to make CSS property names and values editable. Autocomplete, syntax highlighting,
674         and proper keyboard navigation will be added later.
675
676         Display !important when it's specified. Before this patch !important wasn't shown in the redesigned
677         styles sidebar.
678
679         * UserInterface/Models/CSSProperty.js:
680         (WI.CSSProperty.prototype.update):
681         (WI.CSSProperty.prototype.get name):
682         (WI.CSSProperty.prototype.set name):
683         (WI.CSSProperty.prototype.get value):
684         (WI.CSSProperty.prototype.get rawValue):
685         (WI.CSSProperty.prototype.set rawValue):
686         CSSProperty.prototype.value returns the same value as before. !important remains stripped.
687         CSSProperty.prototype.rawValue returns a raw value from the payload. It may include !important.
688
689         (WI.CSSProperty.prototype._updateStyle):
690         (WI.CSSProperty.prototype._updateOwnerStyleText):
691         (WI.CSSProperty):
692         * UserInterface/Models/DOMNodeStyles.js:
693         (WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
694         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
695         (.spreadsheet-style-declaration-editor :matches(.name, .value):focus):
696         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
697         (WI.SpreadsheetStyleProperty.prototype._update):
698         (WI.SpreadsheetStyleProperty.prototype._handleNameChange):
699         (WI.SpreadsheetStyleProperty.prototype._handleValueChange):
700         (WI.SpreadsheetStyleProperty):
701
702 2017-09-22  Matt Baker  <mattbaker@apple.com>
703
704         Web Inspector: NavigationBar should coalesce consecutive dividers when items are hidden
705         https://bugs.webkit.org/show_bug.cgi?id=177379
706
707         Reviewed by Joseph Pecoraro.
708
709         * UserInterface/Views/NavigationBar.js:
710         (WI.NavigationBar.prototype.layout):
711
712 2017-09-22  Tim Horton  <timothy_horton@apple.com>
713
714         Add env() as an alias of constant()
715         https://bugs.webkit.org/show_bug.cgi?id=177371
716
717         Reviewed by Simon Fraser.
718
719         * UserInterface/Models/CSSKeywordCompletions.js:
720         (WI.CSSKeywordCompletions.forProperty):
721         (WI.CSSKeywordCompletions.forFunction):
722         Add autocomplete support for env().
723
724 2017-09-21  Joseph Pecoraro  <pecoraro@apple.com>
725
726         Web Inspector: Add autocompletion suggestions for CSS functions (constant(), linear-gradient(), etc)
727         https://bugs.webkit.org/show_bug.cgi?id=177264
728
729         Reviewed by Matt Baker.
730
731         * UserInterface/Controllers/CodeMirrorCompletionController.js:
732         (WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
733         Detect when we are inside of functions and provide completion suggestions
734         for the relevant function.
735
736         * UserInterface/Models/CSSCompletions.js:
737         Syntax highlight "constant()" like we do for "var()".
738
739         * UserInterface/Models/CSSKeywordCompletions.js:
740         (WI.CSSKeywordCompletions.forProperty):
741         Always suggest "constant()" everywhere, like we do for "var()".
742
743         (WI.CSSKeywordCompletions.forFunction):
744         Provide suggestions for some CSS functions.
745
746 2017-09-21  Joseph Pecoraro  <pecoraro@apple.com>
747
748         Web Inspector: Remove support for CSS Regions
749         https://bugs.webkit.org/show_bug.cgi?id=177287
750
751         Reviewed by Matt Baker.
752
753         * UserInterface/Protocol/CSSObserver.js:
754         (WI.CSSObserver.prototype.namedFlowCreated):
755         (WI.CSSObserver.prototype.namedFlowRemoved):
756         (WI.CSSObserver.prototype.regionLayoutUpdated):
757         (WI.CSSObserver.prototype.regionOversetChanged):
758         (WI.CSSObserver.prototype.registeredNamedFlowContentElement):
759         (WI.CSSObserver.prototype.unregisteredNamedFlowContentElement):
760         Leave observer functions in for older backends that will send
761         these messages, but we just ignore them.
762
763         * UserInterface/Base/Main.js:
764         * UserInterface/Controllers/DOMTreeManager.js:
765         (WI.DOMTreeManager):
766         (WI.DOMTreeManager.prototype._unbind):
767         (WI.DOMTreeManager._flowPayloadHashKey): Deleted.
768         (WI.DOMTreeManager.prototype._createContentFlowFromPayload): Deleted.
769         (WI.DOMTreeManager.prototype._updateContentFlowFromPayload): Deleted.
770         (WI.DOMTreeManager.prototype.getNamedFlowCollection.onNamedFlowCollectionAvailable): Deleted.
771         (WI.DOMTreeManager.prototype.getNamedFlowCollection): Deleted.
772         (WI.DOMTreeManager.prototype.namedFlowCreated): Deleted.
773         (WI.DOMTreeManager.prototype.namedFlowRemoved): Deleted.
774         (WI.DOMTreeManager.prototype._sendNamedFlowUpdateEvents): Deleted.
775         (WI.DOMTreeManager.prototype.regionOversetChanged): Deleted.
776         (WI.DOMTreeManager.prototype.registeredNamedFlowContentElement): Deleted.
777         (WI.DOMTreeManager.prototype._removeContentNodeFromFlowIfNeeded): Deleted.
778         (WI.DOMTreeManager.prototype.unregisteredNamedFlowContentElement): Deleted.
779         (WI.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes.nodeRequested): Deleted.
780         (WI.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes): Deleted.
781         (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.regionNodesAvailable): Deleted.
782         (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable): Deleted.
783         (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.inspectedPage_node_getFlowInfo.getComputedProperty): Deleted.
784         (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.inspectedPage_node_getFlowInfo.getContentFlowName): Deleted.
785         (WI.DOMTreeManager.prototype.getNodeContentFlowInfo): Deleted.
786         * UserInterface/Images/ContentFlow.svg: Removed.
787         * UserInterface/Images/gtk/ContentFlow.svg: Removed.
788         * UserInterface/Main.html:
789         * UserInterface/Models/Collection.js:
790         * UserInterface/Models/ContentFlow.js: Removed.
791         * UserInterface/Models/DOMTree.js:
792         (WI.DOMTree):
793         (WI.DOMTree.prototype.get frame):
794         (WI.DOMTree.prototype._framePageExecutionContextChanged):
795         (WI.DOMTree.prototype.get contentFlowCollection): Deleted.
796         (WI.DOMTree.prototype.requestContentFlowList): Deleted.
797         (WI.DOMTree.prototype._isContentFlowInCurrentDocument): Deleted.
798         (WI.DOMTree.prototype._contentFlowListWasUpdated): Deleted.
799         (WI.DOMTree.prototype._contentFlowWasAdded): Deleted.
800         (WI.DOMTree.prototype._contentFlowWasRemoved): Deleted.
801         * UserInterface/Test.html:
802         * UserInterface/Views/CollectionContentView.js:
803         (WI.CollectionContentView):
804         * UserInterface/Views/ComputedStyleDetailsPanel.css:
805         (.details-section > .content > .group > .row.simple.content-flow-link > .value > span > .icon): Deleted.
806         * UserInterface/Views/ComputedStyleDetailsPanel.js:
807         (WI.ComputedStyleDetailsPanel.prototype.refresh):
808         (WI.ComputedStyleDetailsPanel.prototype.initialLayout):
809         (WI.ComputedStyleDetailsPanel.prototype._handleVariablesSectionCollapsedStateChanged):
810         (WI.ComputedStyleDetailsPanel):
811         (WI.ComputedStyleDetailsPanel.prototype.get regionFlow): Deleted.
812         (WI.ComputedStyleDetailsPanel.prototype.set regionFlow): Deleted.
813         (WI.ComputedStyleDetailsPanel.prototype.get contentFlow): Deleted.
814         (WI.ComputedStyleDetailsPanel.prototype.set contentFlow): Deleted.
815         (WI.ComputedStyleDetailsPanel.prototype.get containerRegions): Deleted.
816         (WI.ComputedStyleDetailsPanel.prototype.set containerRegions): Deleted.
817         (WI.ComputedStyleDetailsPanel.prototype.sizeDidChange): Deleted.
818         (WI.ComputedStyleDetailsPanel.prototype._updateFlowNamesSectionVisibility): Deleted.
819         (WI.ComputedStyleDetailsPanel.prototype._resetFlowDetails): Deleted.
820         (WI.ComputedStyleDetailsPanel.prototype._refreshFlowDetails.contentFlowInfoReady): Deleted.
821         (WI.ComputedStyleDetailsPanel.prototype._refreshFlowDetails): Deleted.
822         (WI.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked): Deleted.
823         (WI.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked): Deleted.
824         * UserInterface/Views/ContentFlowDOMTreeContentView.js: Removed.
825         * UserInterface/Views/ContentFlowIcon.css: Removed.
826         * UserInterface/Views/ContentFlowTreeElement.js: Removed.
827         * UserInterface/Views/ContentView.js:
828         (WI.ContentView.createFromRepresentedObject):
829         (WI.ContentView.isViewable):
830         * UserInterface/Views/FrameTreeElement.js:
831         (WI.FrameTreeElement.prototype.onpopulate):
832         (WI.FrameTreeElement.prototype.onexpand):
833         (WI.FrameTreeElement.prototype._childContentFlowWasAdded): Deleted.
834         (WI.FrameTreeElement.prototype._childContentFlowWasRemoved): Deleted.
835         (WI.FrameTreeElement.prototype._rootDOMNodeInvalidated): Deleted.
836         * UserInterface/Views/ResourceSidebarPanel.js:
837         (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
838         * UserInterface/Views/ResourcesTabContentView.js:
839         (WI.ResourcesTabContentView):
840         (WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
841
842 2017-09-21  Ross Kirsling  <ross.kirsling@sony.com>
843
844         Web Inspector: Add details sidebar to Layers tab.
845         https://bugs.webkit.org/show_bug.cgi?id=177115
846
847         Reviewed by Devin Rousso.
848
849         * Localizations/en.lproj/localizedStrings.js:
850         * UserInterface/Main.html:
851         * UserInterface/Views/LayerDetailsSidebarPanel.css: Added.
852         * UserInterface/Views/LayerDetailsSidebarPanel.js: Added.
853         New files and strings for sidebar.
854
855         * UserInterface/Base/Utilities.js:
856         Add global identifier for "×" character.
857         
858         * UserInterface/Models/Layer.js: Added.
859         Add a model class for layers so that we can instanceof-check them.
860
861         * UserInterface/Controllers/LayerTreeManager.js:
862         (WI.LayerTreeManager.prototype.layersForNode):
863         Utilize model class WI.Layer.
864
865         * UserInterface/Views/Layers3DContentView.js:
866         (WI.Layers3DContentView):
867         (WI.Layers3DContentView.prototype.get supplementalRepresentedObjects):
868         (WI.Layers3DContentView.prototype.layout):
869         (WI.Layers3DContentView.prototype._addLayer):
870         Pass layer data to sidebar and utilize model class WI.Layer.
871
872         * UserInterface/Views/LayersTabContentView.js:
873         (WI.LayersTabContentView):
874         Attach details sidebar.
875
876 2017-09-21  Brian Burg  <bburg@apple.com>
877
878         Web Inspector: keyboard shortcut for "Reload page from origin" doesn't match Safari, and doesn't work
879         https://bugs.webkit.org/show_bug.cgi?id=177010
880         <rdar://problem/33134548>
881
882         Reviewed by Joseph Pecoraro.
883
884         I seem to have broken reload from origin via Web Inspector in a previous
885         patch, because the parameter is 'ignoreCache' instead of 'shouldIgnoreCache'.
886
887         * Localizations/en.lproj/localizedStrings.js:
888         Modernize tooltip text.
889
890         * UserInterface/Base/Main.js:
891         (WI.contentLoaded):
892         Disambiguate two locals with the same name. Modernize the tooltip.
893         Make the shortcut Cmd-Opt-R to match Safari. Fix wrong parameter usage.
894
895         * UserInterface/Test/FrontendTestHarness.js:
896         (FrontendTestHarness.prototype.reloadPage):
897         Fix wrong parameter.
898
899 2017-09-19  Joseph Pecoraro  <pecoraro@apple.com>
900
901         Web Inspector: Adopt named groups in complex regexes
902         https://bugs.webkit.org/show_bug.cgi?id=177117
903
904         Reviewed by Matt Baker.
905
906         * UserInterface/Base/URLUtilities.js:
907         (parseSecurityOrigin):
908         (parseDataURL):
909         (parseURL):
910         * UserInterface/Models/Color.js:
911         (WI.Color.fromString):
912
913 2017-09-19  Joseph Pecoraro  <pecoraro@apple.com>
914
915         REGRESSION(r214494): Web Inspector: Ignore cache button does not work in Network tab
916         https://bugs.webkit.org/show_bug.cgi?id=177114
917         <rdar://problem/34505265>
918
919         Reviewed by Brian Burg.
920
921         * UserInterface/Base/Main.js:
922         (WI.loaded):
923         We need to register the settings change handler regardless of what the
924         initial value of the setting is.
925
926 2017-09-18  Matt Baker  <mattbaker@apple.com>
927
928         Web Inspector: RemoteObject.resolveNode should return a Promise
929         https://bugs.webkit.org/show_bug.cgi?id=177042
930
931         Reviewed by Joseph Pecoraro.
932
933         Update RemoteObject.resolveNode to return a promise instead of taking a
934         callback. If the promise is fulfilled, `remoteObject` will be non-null.
935
936         * UserInterface/Controllers/DOMTreeManager.js:
937         (WI.DOMTreeManager.prototype.inspectNodeObject.nodeAvailable):
938         (WI.DOMTreeManager.prototype.inspectNodeObject):
939         (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved): Deleted.
940
941         * UserInterface/Models/DOMNode.js:
942         (WI.DOMNode.prototype.toggleClass.WI.RemoteObject.resolveNode.then):
943         (WI.DOMNode.prototype.toggleClass):
944         (WI.DOMNode.prototype.scrollIntoView.WI.RemoteObject.resolveNode.then):
945         (WI.DOMNode.prototype.scrollIntoView):
946         (WI.DOMNode.prototype.toggleClass.resolvedNode.inspectedPage_node_toggleClass): Deleted.
947         (WI.DOMNode.prototype.toggleClass.resolvedNode): Deleted.
948         (WI.DOMNode.prototype.scrollIntoView.resolvedNode.inspectedPage_node_scrollIntoView): Deleted.
949         (WI.DOMNode.prototype.scrollIntoView.resolvedNode): Deleted.
950
951         * UserInterface/Protocol/RemoteObject.js:
952         (WI.RemoteObject.resolveNode):
953
954         * UserInterface/Views/BoxModelDetailsSectionRow.js:
955         (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.WI.RemoteObject.resolveNode.then):
956         (WI.BoxModelDetailsSectionRow.prototype._applyUserInput):
957         (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.toggleInlineStyleProperty): Deleted.
958         (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.didToggle): Deleted.
959         (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode): Deleted.
960         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
961
962         * UserInterface/Views/ContextMenuUtilities.js:
963         (WI.appendContextMenuItemsForDOMNode):
964
965         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
966         (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved.inspectedPage_node_collectPrototypes): Deleted.
967         (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved): Deleted.
968         (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady): Deleted.
969
970         * UserInterface/Views/DOMTreeElement.js:
971         (WI.DOMTreeElement.prototype._createTooltipForNode.WI.RemoteObject.resolveNode.then):
972         (WI.DOMTreeElement.prototype._createTooltipForNode):
973         (WI.DOMTreeElement.prototype._createTooltipForNode.resolvedNode.dimensions): Deleted.
974         (WI.DOMTreeElement.prototype._createTooltipForNode.resolvedNode): Deleted.
975
976         * UserInterface/Views/DOMTreeOutline.js:
977         (WI.DOMTreeOutline.prototype._hideElement.injectStyleAndToggleClass):
978         (WI.DOMTreeOutline.prototype._hideElement):
979         (WI.DOMTreeOutline):
980         (WI.DOMTreeOutline.prototype._hideElement.resolvedNode.injectStyleAndToggleClass): Deleted.
981         (WI.DOMTreeOutline.prototype._hideElement.resolvedNode): Deleted.
982
983 2017-09-18  Brian Burg  <bburg@apple.com>
984
985         Web Inspector: introduce an AppController class and shared instance of it
986         https://bugs.webkit.org/show_bug.cgi?id=177024
987
988         Reviewed by Matt Baker.
989
990         WebInspectorUI currently has an app controller singleton that's distributed
991         among many properties on the WI object, which also serves as a namespace for
992         classes, enums, and other frontend objects. The singleton should be a proper
993         class so that we can think more easily about what state is global.
994
995         In the process of moving pieces of Main.js into AppController, I intend to move
996         most UI related code into a view controller class for the top level view.
997         AppController really shouldn't be doing anything to the view hierarchy or DOM.
998         It is yet to be determined how responsibility for global DOM events, such as
999         those for keyboard shortcuts, will be handled.
1000
1001         This larger refactoring project will let us more easily do things like connect
1002         to multiple debuggables in the same Inspector instance, and switch between views
1003         of different debuggable targets. Even if this never comes to pass, the code will
1004         be a lot easier to reason about and maintain in the future.
1005
1006         For the first patch, introduce {AppController, TestAppController} <: AppControllerBase.
1007         Shared code goes in the base class. In the Main.html and Test.html files, first
1008         construct the AppController and then call .initialize() to avoid cyclic dependencies
1009         on the global singleton WI.sharedApp.
1010
1011         * UserInterface/Main.html:
1012         * UserInterface/Test.html:
1013         * UserInterface/Test/Test.js:
1014         (WI.loaded):
1015         * UserInterface/Base/Main.js:
1016         (WI.loaded):
1017         Move some shared code out of here into AppControllerBase.constructor.
1018         Eventually WI.loaded should not exist, and its code will move elsewhere.
1019
1020         (WI.contentLoaded):
1021         Adopt global reference.
1022
1023         * UserInterface/Controllers/AppControllerBase.js: Copied from Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js.
1024         (WI.AppControllerBase):
1025         (WI.AppControllerBase.prototype.get hasExtraDomains):
1026         (WI.AppControllerBase.prototype.get debuggableType):
1027         (WI.AppControllerBase.prototype.initialize):
1028
1029         * UserInterface/Controllers/AppController.js: New.
1030         (WI.AppController):
1031         (WI.AppController.prototype.get hasExtraDomains):
1032         (WI.AppController.prototype.get debuggableType):
1033         (WI.AppController.prototype.activateExtraDomains):
1034
1035         * UserInterface/Test/TestAppController.js: New.
1036         (WI.TestAppController):
1037         (WI.TestAppController.prototype.get hasExtraDomains):
1038         (WI.TestAppController.prototype.get debuggableType):
1039
1040         * UserInterface/Controllers/TimelineManager.js:
1041         (WI.TimelineManager.defaultTimelineTypes):
1042         (WI.TimelineManager.availableTimelineTypes):
1043         (WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStarted):
1044         (WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStopped):
1045         (WI.TimelineManager.prototype.scriptProfilerTrackingCompleted):
1046         * UserInterface/Models/TimelineRecording.js:
1047         (WI.TimelineRecording.sourceCodeTimelinesSupported):
1048         * UserInterface/Protocol/InspectorObserver.js:
1049         (WI.InspectorObserver.prototype.inspect):
1050         (WI.InspectorObserver.prototype.activateExtraDomains):
1051         (WI.InspectorObserver):
1052         * UserInterface/Protocol/MainTarget.js:
1053         (WI.MainTarget):
1054         (WI.MainTarget.prototype.get displayName):
1055         * UserInterface/Views/ResourceSidebarPanel.js:
1056         (WI.ResourceSidebarPanel):
1057         (WI.ResourceSidebarPanel.prototype.initialLayout):
1058         (WI.ResourceSidebarPanel.prototype._addScript):
1059         (WI.ResourceSidebarPanel.prototype._extraDomainsActivated):
1060         * UserInterface/Views/Toolbar.js:
1061         Use WI.sharedApp.{debuggableType, hasExtraDomains}.
1062
1063 2017-09-18  Matt Baker  <mattbaker@apple.com>
1064
1065         Web Inspector: console.assert messages shouldn't end in an exclamation point
1066         https://bugs.webkit.org/show_bug.cgi?id=177054
1067
1068         Reviewed by Joseph Pecoraro.
1069
1070         * UserInterface/Base/EventListener.js:
1071         * UserInterface/Base/EventListenerSet.js:
1072         (WI.EventListenerSet.prototype.register):
1073         Drive-by: make assertions the same in both.
1074
1075         * UserInterface/Views/LayoutTimelineView.js:
1076         (WI.LayoutTimelineView.prototype._processPendingRecords):
1077
1078         * UserInterface/Views/Resizer.js:
1079         (WI.Resizer.prototype._currentPosition):
1080
1081 2017-09-18  Devin Rousso  <webkit@devinrousso.com>
1082
1083         Web Inspector: REGRESSION(r221901): Single frame recordings don't reset the recording navigation item
1084         https://bugs.webkit.org/show_bug.cgi?id=176893
1085
1086         Reviewed by Matt Baker.
1087
1088         * UserInterface/Controllers/CanvasManager.js:
1089         (WI.CanvasManager.prototype.recordingFinished):
1090         Set the `_recordingCanvas` to null whenever a recording has finished and been sent to the
1091         frontend. It is also necessary to do this inside `stopRecording`, as it is possible for the
1092         user to start and stop a recording before any actions are recorded, meaning that no
1093         recording would be sent to the frontend and this function will never get called.
1094
1095 2017-09-17  Nikita Vasilyev  <nvasilyev@apple.com>
1096
1097         Web Inspector: Styles Redesign: support toggling properties
1098         https://bugs.webkit.org/show_bug.cgi?id=176643
1099
1100         Reviewed by Matt Baker.
1101
1102         Add checkboxes to toggle (comment/uncomment) CSS properties.
1103
1104         * UserInterface/Base/Utilities.js:
1105         (String.prototype.get lineCount):
1106         (String.prototype.get lastLine):
1107         Add string methods that are used by WI.CSSProperty.prototype._updateOwnerStyleText.
1108
1109         * UserInterface/Models/CSSProperty.js:
1110         (WI.CSSProperty.prototype.commentOut):
1111         (WI.CSSProperty.prototype.set text):
1112         (WI.CSSProperty.prototype.get editable):
1113         (WI.CSSProperty.prototype._updateOwnerStyleText):
1114         Add methods necessary for property toggling.
1115
1116         * UserInterface/Models/CSSStyleDeclaration.js:
1117         (WI.CSSStyleDeclaration):
1118         (WI.CSSStyleDeclaration.prototype.get allVisibleProperties):
1119         Add a getter that is used by SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesToRender.
1120
1121         (WI.CSSStyleDeclaration.prototype.get visibleProperties):
1122         * UserInterface/Models/TextRange.js:
1123         (WI.TextRange.prototype.clone):
1124         (WI.TextRange.prototype.cloneAndModify):
1125         (WI.TextRange.prototype.relativeTo):
1126         Add methods that are used by WI.CSSProperty.prototype._updateOwnerStyleText.
1127
1128         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
1129         (.spreadsheet-style-declaration-editor):
1130         (.spreadsheet-style-declaration-editor .property-toggle):
1131         (.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,):
1132         (.spreadsheet-style-declaration-editor .property.disabled,):
1133         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
1134         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
1135         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
1136         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
1137         (WI.SpreadsheetCSSStyleDeclarationEditor):
1138         (WI.SpreadsheetStyleProperty):
1139         (WI.SpreadsheetStyleProperty.prototype.get element):
1140         (WI.SpreadsheetStyleProperty.prototype._update):
1141         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
1142         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
1143         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
1144         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
1145         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
1146         (WI.SpreadsheetRulesStyleDetailsPanel):
1147         * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
1148         (.cm-s-default .cm-comment,):
1149         * UserInterface/Views/Variables.css:
1150         (:root):
1151         Make comment color a CSS variable.
1152
1153 2017-09-15  Devin Rousso  <webkit@devinrousso.com>
1154
1155         Web Inspector: REGRESSION(r222057): recording state doesn't update when changing actions
1156         https://bugs.webkit.org/show_bug.cgi?id=176988
1157
1158         Reviewed by Matt Baker.
1159
1160         Replace `updateActionIndex` with `updateAction`, where the currently selected RecordingAction
1161         is passed to the DetailsSidebarPanel. Also remove the call to `this._recording.actions` in
1162         order to ensure that all logic performed by both DetailsSidebarPanel is synchronous.
1163
1164         * Localizations/en.lproj/localizedStrings.js:
1165
1166         * UserInterface/Views/RecordingTabContentView.js:
1167         (WI.RecordingTabContentView.prototype._updateActionIndex):
1168
1169         * UserInterface/Views/RecordingContentView.js:
1170         (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
1171         (WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
1172
1173         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
1174         (WI.RecordingStateDetailsSidebarPanel):
1175         (WI.RecordingStateDetailsSidebarPanel.prototype.set recording):
1176         (WI.RecordingStateDetailsSidebarPanel.prototype.updateAction):
1177         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
1178         (WI.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex): Deleted.
1179
1180         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
1181         (WI.RecordingTraceDetailsSidebarPanel):
1182         (WI.RecordingTraceDetailsSidebarPanel.prototype.set recording):
1183         (WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction):
1184         (WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex): Deleted.
1185
1186 2017-09-15  Matt Baker  <mattbaker@apple.com>
1187
1188         Web Inspector: Canvas: recording parameters that include colors should show an InlineSwatch (2D canvas)
1189         https://bugs.webkit.org/show_bug.cgi?id=176822
1190         <rdar://problem/34402170>
1191
1192         Reviewed by Devin Rousso.
1193
1194         Show inline swatches in the canvas recording action and state sidebars.
1195
1196         * UserInterface/Models/Color.js:
1197         Added helpers for dealing with CMYK and normalized RGB. The latter is
1198         for RGB components scaled to the range [0, 1]. Also improved handling
1199         for 8-bit channel values.
1200         (WI.Color.rgb2hsv):
1201         (WI.Color.cmyk2rgb):
1202         (WI.Color.normalized2rgb):
1203         (WI.Color._eightBitChannel):
1204         (WI.Color.prototype._toRGBString):
1205         (WI.Color.prototype._toRGBAString):
1206         (WI.Color.prototype._componentToHexValue):
1207         (WI.Color.prototype._rgbToHSL):
1208         (WI.Color.prototype._componentToNumber): Deleted.
1209         Replaced by _eightBitChannel.
1210
1211         * UserInterface/Models/RecordingAction.js:
1212         (WI.RecordingAction):
1213         (WI.RecordingAction.prototype.getColorParameters):
1214         Get a subset of parameters that describe a color. This can be an array
1215         containing one value (e.g. fillStyle), or multiple values, as is the
1216         case with non-standard API functions that describe color using multiple
1217         parameters (e.g. setFillColor).
1218
1219         * UserInterface/Views/InlineSwatch.css:
1220         (.inline-swatch:not(.read-only):hover > span):
1221         (.inline-swatch:hover > span): Deleted.
1222         * UserInterface/Views/InlineSwatch.js:
1223         (WI.InlineSwatch):
1224         Read-only colors shouldn't show a context menu or hover effects.
1225
1226         * UserInterface/Views/RecordingActionTreeElement.css:
1227         (.tree-outline:matches(:focus, .force-focus) .item.action > .titles .parameters > .inline-swatch):
1228
1229         * UserInterface/Views/RecordingActionTreeElement.js:
1230         (WI.RecordingActionTreeElement._generateDOM.createParameterElement):
1231         (WI.RecordingActionTreeElement._generateDOM):
1232         (WI.RecordingActionTreeElement._createSwatchForColorParameters):
1233
1234         * UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
1235         (.sidebar > .panel.details.recording-state > .content > .data-grid .inline-swatch):
1236
1237         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
1238         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.isColorProperty):
1239         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.createInlineSwatch):
1240         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
1241         (WI.RecordingStateDetailsSidebarPanel):
1242
1243 2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>
1244
1245         Unreviewed rollout r222036.
1246         
1247         The LayoutTests added with this change is flaky.
1248
1249         This left in the Test.js, Test.html, InspectorBackend changes
1250         needed by later patches. They are independent of the flakey test.
1251
1252         Reverted changeset
1253         Web Inspector: Timeline should show when events preventDefault() was called on an event or not
1254         https://bugs.webkit.org/show_bug.cgi?id=176824
1255         http://trac.webkit.org/changeset/222036
1256
1257 2017-09-14  Devin Rousso  <webkit@devinrousso.com>
1258
1259         Web Inspector: make recording swizzle async
1260         https://bugs.webkit.org/show_bug.cgi?id=176936
1261
1262         Reviewed by Joseph Pecoraro.
1263
1264         Move all swizzle functions, and all logic that depends on swizzled values, to async
1265         functions so that await can be used to pause execution while objects load. This was
1266         necessary primarily for swizzling Image values, as the Image is not able to be used (such as
1267         for creating a CanvasPattern) until its "load" event has fired. Any callers of a Recording's
1268         actions getter must now adapt to working with a promise that will resolve once all swizzling
1269         has finished across all actions within that recording.
1270
1271         * .eslintrc:
1272
1273         * UserInterface/Models/Recording.js:
1274         (WI.Recording):
1275         (WI.Recording.prototype.async swizzle):
1276         (WI.Recording.prototype.swizzle): Deleted.
1277         Drive-by: currently, no data is added to the JSON for WebGL objects, so don't try to swizzle
1278         them and return the placeholder value (0) instead.
1279
1280         * UserInterface/Models/RecordingAction.js:
1281         (WI.RecordingAction):
1282         (WI.RecordingAction.prototype.swizzle):
1283         (WI.RecordingAction.prototype.toJSON):
1284         (WI.RecordingAction.prototype.async _swizzle.swizzleParameter):
1285         (WI.RecordingAction.prototype.async _swizzle.async swizzleCallFrame):
1286         (WI.RecordingAction.prototype.async _swizzle):
1287
1288         * UserInterface/Models/RecordingInitialStateAction.js:
1289         (WI.RecordingInitialStateAction):
1290
1291         * UserInterface/Views/RecordingContentView.js:
1292         (WI.RecordingContentView.prototype.updateActionIndex):
1293         (WI.RecordingContentView.prototype.async _generateContentCanvas2D):
1294         (WI.RecordingContentView.prototype.async _generateContentCanvasWebGL):
1295         (WI.RecordingContentView.prototype._updateCanvasPath):
1296         (WI.RecordingContentView.prototype._generateContentCanvas2D): Deleted.
1297         (WI.RecordingContentView.prototype._generateContentCanvasWebGL): Deleted.
1298
1299         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
1300         (WI.RecordingNavigationSidebarPanel.prototype.set recording):
1301         (WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
1302
1303         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
1304         (WI.RecordingStateDetailsSidebarPanel):
1305         (WI.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
1306         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
1307
1308         * UserInterface/Views/RecordingTabContentView.js:
1309         (WI.RecordingTabContentView.prototype.showRepresentedObject):
1310
1311         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
1312         (WI.RecordingTraceDetailsSidebarPanel):
1313         (WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):
1314
1315 2017-09-14  Matt Baker  <mattbaker@apple.com>
1316
1317         Web Inspector: Color created from an RGB/HSL triplet returns bad component arrays
1318         https://bugs.webkit.org/show_bug.cgi?id=176811
1319         <rdar://problem/34397529>
1320
1321         Reviewed by Joseph Pecoraro.
1322
1323         A Color constructed from a format and RGB/HSL triplet should set its
1324         alpha component to 1 instead of leaving it undefined. Color properties
1325         and member functions expect the components array to have a length of four.
1326
1327         * UserInterface/Models/Color.js:
1328         (WI.Color):
1329
1330 2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>
1331
1332         Layout test inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html is flaky.
1333         https://bugs.webkit.org/show_bug.cgi?id=176952
1334
1335         Reviewed by Matt Baker.
1336
1337         * UserInterface/Protocol/InspectorBackend.js:
1338         (InspectorBackend.Agent.prototype.dispatchEvent):
1339         Include the event name since that may be useful in understanding what happened.
1340
1341         * UserInterface/Test.html:
1342         * UserInterface/Test/Test.js:
1343         (WI.loaded):
1344         Register a MemoryObserver and include potentially necessary Model objects
1345         for the Memory domain.
1346
1347 2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>
1348
1349         Web Inspector: Timeline should show when events preventDefault() was called on an event or not
1350         https://bugs.webkit.org/show_bug.cgi?id=176824
1351         <rdar://problem/34290931>
1352
1353         Reviewed by Devin Rousso.
1354
1355         * Localizations/en.lproj/localizedStrings.js:
1356         New string.
1357
1358         * UserInterface/Controllers/TimelineManager.js:
1359         (WI.TimelineManager.prototype._processRecord):
1360         Include the whole data object as extra details.
1361
1362         * UserInterface/Models/ScriptTimelineRecord.js:
1363         (WI.ScriptTimelineRecord):
1364         (WI.ScriptTimelineRecord.prototype.get extraDetails):
1365         Wholesale copy of the extra data instead of just a single property.
1366
1367         * UserInterface/Views/ScriptDetailsTimelineView.js:
1368         (WI.ScriptDetailsTimelineView):
1369         Give the name column more initial space, there is still extra space
1370         after this adjustment but name is comfortably larger (and the most
1371         likely to be expanded).
1372
1373         * UserInterface/Views/ScriptTimelineDataGridNode.js:
1374         (WI.ScriptTimelineDataGridNode.prototype.get subtitle):
1375         Include "default prevented" as the event's subtitle if it was prevented.
1376
1377         * UserInterface/Protocol/InspectorBackend.js:
1378         (InspectorBackend.Agent.prototype.dispatchEvent):
1379         (InspectorBackend.Agent):
1380         * UserInterface/Test.html:
1381         * UserInterface/Test/Test.js:
1382         (WI.loaded):
1383         Add the ScriptProfilerObserver to tests since it is on by default for Timelines.
1384
1385 2017-09-14  Ryan Haddad  <ryanhaddad@apple.com>
1386
1387         Unreviewed, rolling out r222015.
1388
1389         The LayoutTests added with this change are flaky.
1390
1391         Reverted changeset:
1392
1393         "Web Inspector: Timeline should show when events
1394         preventDefault() was called on an event or not"
1395         https://bugs.webkit.org/show_bug.cgi?id=176824
1396         http://trac.webkit.org/changeset/222015
1397
1398 2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>
1399
1400         Web Inspector: Timeline should show when events preventDefault() was called on an event or not
1401         https://bugs.webkit.org/show_bug.cgi?id=176824
1402         <rdar://problem/34290931>
1403
1404         Reviewed by Devin Rousso.
1405
1406         * Localizations/en.lproj/localizedStrings.js:
1407         New string.
1408
1409         * UserInterface/Controllers/TimelineManager.js:
1410         (WI.TimelineManager.prototype._processRecord):
1411         Include the whole data object as extra details.
1412
1413         * UserInterface/Models/ScriptTimelineRecord.js:
1414         (WI.ScriptTimelineRecord):
1415         (WI.ScriptTimelineRecord.prototype.get extraDetails):
1416         Wholesale copy of the extra data instead of just a single property.
1417
1418         * UserInterface/Views/ScriptDetailsTimelineView.js:
1419         (WI.ScriptDetailsTimelineView):
1420         Give the name column more initial space, there is still extra space
1421         after this adjustment but name is comfortably larger (and the most
1422         likely to be expanded).
1423
1424         * UserInterface/Views/ScriptTimelineDataGridNode.js:
1425         (WI.ScriptTimelineDataGridNode.prototype.get subtitle):
1426         Include "default prevented" as the event's subtitle if it was prevented.
1427
1428         * UserInterface/Protocol/InspectorBackend.js:
1429         (InspectorBackend.Agent.prototype.dispatchEvent):
1430         (InspectorBackend.Agent):
1431         * UserInterface/Test.html:
1432         * UserInterface/Test/Test.js:
1433         (WI.loaded):
1434         Add the ScriptProfilerObserver to tests since it is on by default for Timelines.
1435
1436 2017-09-13  Devin Rousso  <webkit@devinrousso.com>
1437
1438         Web Inspector: allow recordings to be saved via ⌘-S in the Recording tab
1439         https://bugs.webkit.org/show_bug.cgi?id=175284
1440
1441         Reviewed by Matt Baker.
1442
1443         * UserInterface/Views/RecordingContentView.js:
1444         (WI.RecordingContentView.prototype.get supportsSave):
1445         (WI.RecordingContentView.prototype.get saveData):
1446
1447         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
1448         (WI.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
1449         Use the current content view's saveData when exporting.
1450
1451 2017-09-13  Devin Rousso  <webkit@devinrousso.com>
1452
1453         Web Inspector: Event Listeners section does not update when listeners are added/removed
1454         https://bugs.webkit.org/show_bug.cgi?id=170570
1455         <rdar://problem/31501645>
1456
1457         Reviewed by Joseph Pecoraro.
1458
1459         * UserInterface/Protocol/DOMObserver.js:
1460         (WI.DOMObserver.prototype.didAddEventListener):
1461         (WI.DOMObserver.prototype.willRemoveEventListener):
1462
1463         * UserInterface/Controllers/DOMTreeManager.js:
1464         (WI.DOMTreeManager.prototype.didAddEventListener):
1465         (WI.DOMTreeManager.prototype.willRemoveEventListener):
1466
1467         * UserInterface/Models/DOMNode.js:
1468         Add "EventListenersChanged" event. Fired when an event listener is added or removed.
1469
1470         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
1471         (WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners):
1472         (WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners):
1473         (WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
1474         Refresh the event listeners section whenever a node's event listeners change.
1475
1476 2017-09-13  Joseph Pecoraro  <pecoraro@apple.com>
1477
1478         Web Inspector: Sort by size issues with Cookies and ApplicationCache DataGrids
1479         https://bugs.webkit.org/show_bug.cgi?id=176879
1480         <rdar://problem/34237096>
1481
1482         Reviewed by Matt Baker.
1483
1484         * UserInterface/Views/ApplicationCacheFrameContentView.js:
1485         (WI.ApplicationCacheFrameContentView.prototype._sortDataGrid):
1486         (WI.ApplicationCacheFrameContentView.prototype._populateDataGrid):
1487         This uses very dumb DataGridNodes with a pure data object. In that
1488         object `size` is a bytes string not a number. Include the number size
1489         in this data object that can be used during sorting.
1490
1491         * UserInterface/Views/CookieStorageContentView.js:
1492         (WI.CookieStorageContentView.prototype._rebuildTable):
1493         Simplify creation. Also don't reset sort options. Note that here the
1494         DataGridNodes have access to the Cookie object and can already sort size
1495         using the cookie's size (a number) and not the data's size (string).
1496
1497         * UserInterface/Views/DataGrid.js:
1498         (WI.DataGrid.prototype.sortNodes):
1499         (WI.DataGrid.prototype._sortNodesCallback):
1500         If sortNodes was called twice, it would defer the sort and actually
1501         do the sort with the first comparator and not the latest, preferred
1502         comparator. Make it use the latest comparator.
1503
1504 2017-09-13  Nikita Vasilyev  <nvasilyev@apple.com>
1505
1506         Web Inspector: Styles Redesign: display @media section headers
1507         https://bugs.webkit.org/show_bug.cgi?id=176289
1508         <rdar://problem/34228389>
1509
1510         Reviewed by Devin Rousso.
1511
1512         Prepend CSS media query selectors to every matching rule.
1513
1514         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
1515         (.spreadsheet-css-declaration .media-label):
1516         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
1517         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
1518         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader):
1519         Don't localize "@media" since it's CSS code.
1520         Don't display "all" or "screen" media query selectors. One of the goals of the
1521         Styles sidebar redesign is to fit more data.
1522
1523 2017-09-13  Nikita Vasilyev  <nvasilyev@apple.com>
1524
1525         Web Inspector: Frontend should be made to expect and handle disabled properties
1526         https://bugs.webkit.org/show_bug.cgi?id=166787
1527         <rdar://problem/34379593>
1528
1529         Reviewed by Joseph Pecoraro.
1530
1531         This change introduces WI.CSSStyleDeclaration.prototype.allProperties getter,
1532         that includes both enabled and disabled (commented out) CSS properties.
1533
1534         The existing WI.CSSStyleDeclaration.prototype.properties getter only includes enabled CSS properties,
1535         same as before the backend change.
1536
1537         There is no behaviour change in the current styles sidebar. The new redesigned styles sidebar will
1538         use disabled properties and display them as commented out.
1539
1540         * UserInterface/Models/CSSProperty.js:
1541         (WI.CSSProperty.prototype.get attached):
1542         Rename `enabled` to `attached`, as it didn't correspond to `_enabled` property. Attached means that the property
1543         is enabled and has a ownerStyle with a set index (unless it's a computed style, where index is not applicable).
1544
1545         (WI.CSSProperty.prototype.get enabled):
1546         * UserInterface/Models/CSSStyleDeclaration.js:
1547         (WI.CSSStyleDeclaration.prototype.get allProperties):
1548         Add allProperties getter that will be used in the new styles sidebar.
1549
1550         * UserInterface/Models/DOMNodeStyles.js:
1551         (WI.DOMNodeStyles.prototype._markOverriddenProperties):
1552         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
1553         (WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty.propertiesMatch):
1554         Rename "enabled" to "attached" without any behavior change.
1555
1556 2017-09-13  Joseph Pecoraro  <pecoraro@apple.com>
1557
1558         Web Inspector: Escape in global search field should clear it
1559         https://bugs.webkit.org/show_bug.cgi?id=176764
1560
1561         Reviewed by Timothy Hatcher.
1562
1563         * UserInterface/Views/QuickConsole.js:
1564         (WI.QuickConsole.prototype._toggleOrFocus):
1565         Don't implicitly prevent default. So if we didn't cause an action we
1566         can let the default system action happen.
1567
1568         * UserInterface/Views/SearchBar.js:
1569         (WI.SearchBar):
1570         Remove unused keyboard shortcuts.
1571
1572 2017-09-12  Joseph Pecoraro  <pecoraro@apple.com>
1573
1574         Web Inspector: Add Experimental setting for new Network tab
1575         https://bugs.webkit.org/show_bug.cgi?id=176750
1576
1577         Reviewed by Matt Baker.
1578
1579         * Localizations/en.lproj/localizedStrings.js:
1580         * UserInterface/Main.html:
1581         * UserInterface/Base/Main.js:
1582         (WI.contentLoaded):
1583         New files and strings.
1584
1585         * UserInterface/Base/Setting.js:
1586         New experimental setting.
1587
1588         * UserInterface/Views/LegacyNetworkTabContentView.js:
1589         (WI.LegacyNetworkTabContentView.isTabAllowed):
1590         Legacy tab availability depends on the setting.
1591
1592         * UserInterface/Views/NetworkTabContentView.js:
1593         (WI.NetworkTabContentView):
1594         (WI.NetworkTabContentView.isTabAllowed):
1595         (WI.NetworkTabContentView.prototype.get contentBrowser):
1596         (WI.NetworkTabContentView.prototype.get type):
1597         (WI.NetworkTabContentView.prototype.canShowRepresentedObject):
1598         (WI.NetworkTabContentView.prototype.get supportsSplitContentBrowser):
1599         Modern network tab. Only difference right now is it allows the split console.
1600
1601         * UserInterface/Views/NetworkTableContentView.js: Added.
1602         (WI.NetworkTableContentView):
1603         (WI.NetworkTableContentView.prototype.get selectionPathComponents):
1604         (WI.NetworkTableContentView.prototype.get navigationItems):
1605         (WI.NetworkTableContentView.prototype.shown):
1606         (WI.NetworkTableContentView.prototype.hidden):
1607         (WI.NetworkTableContentView.prototype.closed):
1608         (WI.NetworkTableContentView.prototype.reset):
1609         (WI.NetworkTableContentView.prototype.layout):
1610         (WI.NetworkTableContentView.prototype.handleClearShortcut):
1611         (WI.NetworkTableContentView.prototype._resourceCachingDisabledSettingChanged):
1612         (WI.NetworkTableContentView.prototype._toggleDisableResourceCache):
1613         Add a stubbed out ContentView. This will be implemented next.
1614
1615         * UserInterface/Views/SettingsTabContentView.js:
1616         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
1617         Add an experimental setting to toggle the new network tab. Only
1618         show the experimental settings that relate to the debuggable target.
1619         For JSContext targets, none of the settings are applicable, so don't
1620         even show the experimental section.
1621
1622         * UserInterface/Views/TabBrowser.js:
1623         (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
1624         Treat all network tabs the same.
1625
1626 2017-09-11  Matt Baker  <mattbaker@apple.com>
1627
1628         Web Inspector: Canvas: improve recording controls and state management
1629         https://bugs.webkit.org/show_bug.cgi?id=176762
1630         <rdar://problem/34382294>
1631
1632         Reviewed by Devin Rousso.
1633
1634         CanvasManager should be responsible for starting/stopping recordings
1635         and tracking state. Fixing this layering issue lets CanvasContentView
1636         better manage its recording UI.
1637
1638         * UserInterface/Controllers/CanvasManager.js:
1639         (WI.CanvasManager):
1640         (WI.CanvasManager.prototype.get recordingCanvas):
1641         (WI.CanvasManager.prototype.startRecording):
1642         (WI.CanvasManager.prototype.stopRecording):
1643
1644         * UserInterface/Models/Canvas.js:
1645         (WI.Canvas.prototype.get isRecording):
1646         (WI.Canvas.prototype.toggleRecording): Deleted.
1647
1648         * UserInterface/Views/CanvasContentView.css:
1649         (.navigation-bar > .item.canvas-record.disabled):
1650
1651         * UserInterface/Views/CanvasContentView.js:
1652         (WI.CanvasContentView.prototype.shown):
1653         (WI.CanvasContentView.prototype._toggleRecording):
1654         (WI.CanvasContentView.prototype._recordingFinished):
1655         (WI.CanvasContentView.prototype._updateRecordNavigationItem):
1656
1657 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
1658
1659         Web Inspector: Cleanup and test MIMETypeUtilities
1660         https://bugs.webkit.org/show_bug.cgi?id=176731
1661
1662         Reviewed by Matt Baker.
1663
1664         * UserInterface/Base/FileUtilities.js:
1665         (WI.saveDataToFile):
1666         * UserInterface/Models/SourceMapResource.js:
1667         (WI.SourceMapResource):
1668         Update callers to handle new return values.
1669
1670         * UserInterface/Base/MIMETypeUtilities.js:
1671         (WI.fileExtensionForURL):
1672         Return null in error cases.
1673         Only provide the content after the last period.
1674
1675         (WI.fileExtensionForMIMEType):
1676         Handle generic "+json" and "+xml" cases.
1677
1678         * UserInterface/Test.html:
1679         Include MIMETypeUtilities for testing.
1680
1681 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
1682
1683         Web Inspector: Rename NetworkTab / NetworkSidebar to LegacyNetwork*
1684         https://bugs.webkit.org/show_bug.cgi?id=176739
1685
1686         Reviewed by Matt Baker.
1687
1688         * UserInterface/Main.html:
1689         * UserInterface/Views/LegacyNetworkSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.css.
1690         * UserInterface/Views/LegacyNetworkSidebarPanel.js: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js.
1691         * UserInterface/Views/LegacyNetworkTabContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkTabContentView.js.
1692         Rename resources.
1693
1694         * UserInterface/Base/Main.js:
1695         (WI.contentLoaded):
1696         * UserInterface/Views/NetworkGridContentView.js:
1697         (WI.NetworkGridContentView):
1698         (WI.NetworkGridContentView.prototype._networkTimelineRecordAdded):
1699         * UserInterface/Views/TabBrowser.js:
1700         (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
1701         Update names at callsites.
1702
1703 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
1704
1705         Web Inspector: Remove unused parameter to UIString
1706         https://bugs.webkit.org/show_bug.cgi?id=176738
1707
1708         Reviewed by Matt Baker.
1709
1710         * UserInterface/Base/LoadLocalizedStrings.js:
1711         (WI.UIString):
1712         Remove unused parameter. We moved to String.format for this behavior a while ago.
1713
1714 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
1715
1716         Web Inspector: Do not allow the split console in the Settings tab
1717         https://bugs.webkit.org/show_bug.cgi?id=176726
1718
1719         Reviewed by Matt Baker.
1720
1721         * UserInterface/Views/SettingsTabContentView.js:
1722         (WI.SettingsTabContentView.prototype.get supportsSplitContentBrowser):
1723
1724 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
1725
1726         Web Inspector: Include a DebugContentView for debugging
1727         https://bugs.webkit.org/show_bug.cgi?id=176733
1728
1729         Reviewed by Matt Baker.
1730
1731         Provide a DebugContentView which can be used to debug lifecycle
1732         events of a ContentView (shown, hidden, closed), and displays a
1733         provided string. It can be created like so:
1734
1735             `new WI.DebugContentView("Name")`
1736
1737         * UserInterface/Debug/DebugContentView.css: Added.
1738         (.content-view.debug):
1739         * UserInterface/Debug/DebugContentView.js: Added.
1740         (WI.DebugContentView):
1741         (WI.DebugContentView.prototype.shown):
1742         (WI.DebugContentView.prototype.hidden):
1743         (WI.DebugContentView.prototype.closed):
1744         Log events for debugging.
1745
1746         * UserInterface/Main.html:
1747         Include new Debug resources.
1748
1749 2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>
1750
1751         Web Inspector: Make Dashboard Timeline icon and Timeline tab icon more similar
1752         https://bugs.webkit.org/show_bug.cgi?id=176582
1753
1754         Reviewed by Timothy Hatcher.
1755
1756         * UserInterface/Images/Time.svg:
1757         Change the clock hands to match the time of Timelines.svg.
1758
1759 2017-09-10  Matt Baker  <mattbaker@apple.com>
1760
1761         Web Inspector: change style of RecordingNavigationSidebarPanel
1762         https://bugs.webkit.org/show_bug.cgi?id=175451
1763         <rdar://problem/34040769>
1764
1765         Reviewed by Devin Rousso.
1766
1767         This patch adds UI polish to the Canvas recording navigation sidebar:
1768          - New icons for Canvas2D operations
1769          - Removed extraneous colors: zebra striping, frame element background color
1770          - Visual action color changed to match details sidebar "changed" color
1771          - Make tree item indent a convenient multiple of the base indent
1772          - Move RecordingActionTreeElement styles to a separate file
1773
1774         * UserInterface/Images/Clip.svg: Added.
1775         * UserInterface/Images/Composite.svg: Added.
1776         * UserInterface/Images/Fill.svg: Added.
1777         * UserInterface/Images/LineStyle.svg: Added.
1778         * UserInterface/Images/Palette.svg: Added.
1779         * UserInterface/Images/PathArc.svg: Added.
1780         * UserInterface/Images/PathCurve.svg: Added.
1781         * UserInterface/Images/PathEllipse.svg: Added.
1782         * UserInterface/Images/PathLineTo.svg: Added.
1783         * UserInterface/Images/PathMoveTo.svg: Added.
1784         * UserInterface/Images/PathRect.svg: Added.
1785         * UserInterface/Images/Pixels.svg: Added.
1786         * UserInterface/Images/PointInPath.svg: Added.
1787         * UserInterface/Images/PointInStroke.svg: Added.
1788         * UserInterface/Images/Shadow.svg: Added.
1789         * UserInterface/Images/Stroke.svg: Added.
1790         * UserInterface/Images/Text.svg: Added.
1791         * UserInterface/Images/Transform.svg: Added.
1792         New icons for Canvas2D operations.
1793
1794         * UserInterface/Main.html:
1795         New file.
1796
1797         * UserInterface/Views/GeneralTreeElement.js:
1798         (WI.GeneralTreeElement.prototype.customTitleTooltip):
1799         (WI.GeneralTreeElement.prototype._updateTitleTooltip):
1800         Allow derived classes to supply a custom tooltip, when
1801         simply getting the title element text is insufficient.
1802
1803         * UserInterface/Views/RecordingActionTreeElement.css: Added.
1804         (.item.action.initial-state > .icon):
1805         (.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon):
1806         (.item.action:not(.initial-state)::before):
1807         (body[dir=ltr] .item.action::before):
1808         (body[dir=rtl] .item.action::before):
1809         (.tree-outline:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon):
1810         (body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
1811         (.tree-outline[data-indent="1"] .item.action::before,):
1812         (.tree-outline[data-indent="3"] .item.action::before):
1813         (.tree-outline[data-indent="4"] .item.action::before):
1814         (.tree-outline[data-indent="5"] .item.action::before):
1815         (.tree-outline[data-indent="6"] .item.action::before):
1816         (.tree-outline[data-indent="7"] .item.action::before):
1817         (body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
1818         (body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
1819         (.item.action.visual:not(.selected, .invalid)):
1820         (.item.action.attribute > .titles .parameters::before):
1821         (.item.action:not(.attribute) > .titles .parameters::before):
1822         (.item.action:not(.attribute) > .titles .parameters::after):
1823         (.item.action > .titles .parameter:not(:last-child)::after):
1824         (.item.action:not(.selected) > .titles .parameter.swizzled):
1825         (.item.action.composite > .icon):
1826         (.item.action.fill > .icon):
1827         (.item.action.image > .icon):
1828         (.item.action.line-style > .icon):
1829         (.item.action.shadow > .icon):
1830         (.item.action.stroke > .icon):
1831         (.item.action.style > .icon):
1832         (.item.action.text > .icon):
1833         (.item.action.transform > .icon):
1834         (.item.action.arc > .icon):
1835         (.item.action.clip > .icon):
1836         (.item.action.curve > .icon):
1837         (.item.action.ellipse > .icon):
1838         (.item.action.line-to > .icon):
1839         (.item.action.move-to > .icon):
1840         (.item.action.point-in-path > .icon):
1841         (.item.action.point-in-stroke > .icon):
1842         (.item.action.rect > .icon):
1843         (.item.action.restore > .icon):
1844         (.item.action.save > .icon):
1845         (.item.action.invalid > .icon):
1846
1847         * UserInterface/Views/RecordingActionTreeElement.js:
1848         (WI.RecordingActionTreeElement):
1849         (WI.RecordingActionTreeElement._generateDOM.createParameterElement):
1850         (WI.RecordingActionTreeElement._generateDOM):
1851         (WI.RecordingActionTreeElement._getClassNames):
1852         Broke out into its own helper, to simplify _generateDOM which had
1853         too many responsibilities.
1854
1855         (WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
1856         (WI.RecordingActionTreeElement._classNameForAction):
1857         Get an icon for the action "type". Actions are grouped by similar
1858         operations. For example, lineCap, lineDash, lineJoin, lineWidth, and
1859         miterLimit are assigned the icon LineStyle.svg.
1860
1861         (WI.RecordingActionTreeElement.prototype.customTitleTooltip):
1862
1863         * UserInterface/Views/RecordingNavigationSidebarPanel.css:
1864         (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .icon):
1865         (.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)): Deleted.
1866         (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded): Deleted.
1867         (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
1868         (body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
1869         (body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
1870         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before): Deleted.
1871         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before): Deleted.
1872         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before): Deleted.
1873         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before): Deleted.
1874         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before): Deleted.
1875         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before): Deleted.
1876         (.sidebar > .panel.navigation.recording > .content .action > .icon): Deleted.
1877         (.sidebar > .panel.navigation.recording > .content .action.function > .icon): Deleted.
1878         (.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon): Deleted.
1879         (.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon): Deleted.
1880         (.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon): Deleted.
1881         (.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon): Deleted.
1882         (.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon): Deleted.
1883         (.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon): Deleted.
1884         (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon): Deleted.
1885         (.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon): Deleted.
1886         (body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
1887         (body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
1888         (.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)): Deleted.
1889         (.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled): Deleted.
1890         (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)): Deleted.
1891         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
1892
1893 2017-09-08  Joseph Pecoraro  <pecoraro@apple.com>
1894
1895         Uncaught Exception: TypeError: this._heapSnapshot.addEventListener is not a function.
1896         https://bugs.webkit.org/show_bug.cgi?id=176633
1897
1898         Reviewed by Michael Saboff.
1899
1900         * UserInterface/Proxies/HeapSnapshotDiffProxy.js:
1901         (WI.HeapSnapshotDiffProxy):
1902         This class has listeners of another object's events. It should extend WI.Object.
1903
1904 2017-09-08  Devin Rousso  <webkit@devinrousso.com>
1905
1906         Web Inspector: Canvas: changes to currentX/currentY aren't highlighted in the details sidebar
1907         https://bugs.webkit.org/show_bug.cgi?id=176569
1908
1909         Reviewed by Matt Baker.
1910
1911         * UserInterface/Models/RecordingAction.js:
1912         Add entries to WI.RecordingAction._stateModifiers for each path function.
1913
1914 2017-09-07  Joseph Pecoraro  <pecoraro@apple.com>
1915
1916         Augmented Inspector: Provide a way to inspect a DOM Node (DOM.inspect)
1917         https://bugs.webkit.org/show_bug.cgi?id=176563
1918         <rdar://problem/19639583>
1919
1920         Reviewed by Matt Baker.
1921
1922         * UserInterface/Base/Main.js:
1923         (WI.contentLoaded):
1924         Always create the element search toolbar icon. Only show it if the DOM domain
1925         is available. With augmented agents the DOM domain may be activated later.
1926
1927         * UserInterface/Protocol/DOMObserver.js:
1928         (WI.DOMObserver.prototype.inspect):
1929         Select the node in the DOM tree outline.
1930
1931 2017-09-07  Devin Rousso  <webkit@devinrousso.com>
1932
1933         Web Inspector: Canvas RecordingAction tree outline virtualization is broken
1934         https://bugs.webkit.org/show_bug.cgi?id=176547
1935
1936         Reviewed by Joseph Pecoraro.
1937
1938         * UserInterface/Views/TreeOutline.js:
1939         (WI.TreeOutline.prototype.updateVirtualizedElements.walk):
1940         (WI.TreeOutline.prototype.updateVirtualizedElements):
1941         Pass the current `count` to each recursive call of `walk` so that the cumulative index of a
1942         TreeElement in any given sub-tree is correct.
1943         Drive-by: if there is a focused TreeElement when scrolling, only change the current
1944         `scrollTop` if it is not already visible. Also rewrote some loops for clarity.
1945
1946 2017-09-07  Devin Rousso  <webkit@devinrousso.com>
1947
1948         Unreviewed, change my copyright email.
1949
1950         * Scripts/copy-user-interface-resources.pl:
1951         * UserInterface/Controllers/CodeMirrorSpringEditingController.js:
1952         * UserInterface/Images/AnimationPlayStatePaused.svg:
1953         * UserInterface/Images/AnimationPlayStateRunning.svg:
1954         * UserInterface/Images/CSSVariable.svg:
1955         * UserInterface/Images/ListStylePositionInside.svg:
1956         * UserInterface/Images/ListStylePositionOutside.svg:
1957         * UserInterface/Images/StyleRule.svg:
1958         * UserInterface/Images/StyleRulePseudoElement.svg:
1959         * UserInterface/Models/Collection.js:
1960         * UserInterface/Models/ResourceCollection.js:
1961         * UserInterface/Views/CollectionContentView.css:
1962         * UserInterface/Views/CollectionContentView.js:
1963         * UserInterface/Views/ContextMenuUtilities.js:
1964         * UserInterface/Views/GeneralTabBarItem.js:
1965         * UserInterface/Views/GradientEditor.css:
1966         * UserInterface/Views/GradientEditor.js:
1967         * UserInterface/Views/InlineSwatch.css:
1968         * UserInterface/Views/InlineSwatch.js:
1969         * UserInterface/Views/PinnedTabBarItem.js:
1970         * UserInterface/Views/SettingsTabContentView.css:
1971         * UserInterface/Views/SettingsTabContentView.js:
1972         * UserInterface/Views/SpringEditor.css:
1973         * UserInterface/Views/SpringEditor.js:
1974         * UserInterface/Views/StyleRuleIcons.css:
1975         * UserInterface/Views/TabBarItem.js:
1976         * UserInterface/Views/TitleView.css:
1977         * UserInterface/Views/TitleView.js:
1978         * UserInterface/Views/VisualStyleBackgroundPicker.css:
1979         * UserInterface/Views/VisualStyleBackgroundPicker.js:
1980         * UserInterface/Views/VisualStyleBasicInput.js:
1981
1982 2017-09-06  Matt Baker  <mattbaker@apple.com>
1983
1984         Web Inspector: Relax the maximum sidebar width
1985         https://bugs.webkit.org/show_bug.cgi?id=175808
1986         <rdar://problem/34005339>
1987
1988         Reviewed by Devin Rousso.
1989
1990         This patch introduces a constant, `minimumContentBrowserWidth`, which
1991         constrains the maximum width of either sidebar:
1992
1993         maxSidebarWidth = window.innerWidth - minimumContentBrowserWidth - otherSidebarWidth
1994
1995         A value of 100px for `minimumContentBrowserWidth` leaves enough space for
1996         three NavigationItems at their minimum width (32px), with a few pixels
1997         left over for good measure. For most tabs this will ensure that the buttons
1998         for showing the sidebars will be visible, along with an addition button.
1999
2000         * UserInterface/Base/Main.js:
2001         * UserInterface/Views/Sidebar.js:
2002         (WI.Sidebar.prototype.get maximumWidth):
2003
2004 2017-09-06  Devin Rousso  <webkit@devinrousso.com>
2005
2006         Web Inspector: Support overloaded CanvasRenderingContext2D actions with identical parameter counts
2007         https://bugs.webkit.org/show_bug.cgi?id=176178
2008         <rdar://problem/34192229>
2009
2010         Reviewed by Matt Baker.
2011
2012         * UserInterface/Models/Recording.js:
2013         (WI.Recording.displayNameForSwizzleType):
2014         (WI.Recording.prototype.swizzle):
2015         Replace WI.Recording.Swizzle with an object of swizzle type keys to int values. This object
2016         matches the values in WebCore::RecordingSwizzleTypes.h.
2017
2018         * UserInterface/Models/RecordingAction.js:
2019         (WI.RecordingAction):
2020         (WI.RecordingAction.fromPayload):
2021         (WI.RecordingAction.prototype.get swizzleTypes):
2022         (WI.RecordingAction.prototype.swizzle):
2023         (WI.RecordingAction.prototype.toJSON):
2024         (WI.RecordingAction.prototype.parameterSwizzleTypeForTypeAtIndex): Deleted.
2025         Replace WI.RecordingAction._parameterSwizzleTypeForTypeAtIndex with an array of parameter
2026         types sent in the payload. This gives more control over the swizzling to the JSON, but also
2027         simplifies the way we regenerate the data in the frontend.
2028
2029         * UserInterface/Views/RecordingActionTreeElement.js:
2030         (WI.RecordingActionTreeElement._generateDOM):
2031
2032         * UserInterface/Views/RecordingContentView.js:
2033         (WI.RecordingContentView.prototype._generateContentCanvas2D):
2034         (WI.RecordingContentView.prototype._applyAction):
2035
2036         * UserInterface/Views/RecordingNavigationSidebarPanel.css:
2037         (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)):
2038         (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles .name,): Deleted.
2039
2040 2017-09-06  Joseph Pecoraro  <pecoraro@apple.com>
2041
2042         Web Inspector: ⌘E and ⌘G do not work in main content area when quick console drawer is open
2043         https://bugs.webkit.org/show_bug.cgi?id=176433
2044
2045         Reviewed by Brian Burg.
2046
2047         Make the ⌘E and ⌘G keyboard shortcuts behave more like the global ⌘K clear shortcut.
2048         Instead of keeping them inside of FindBanner, and enabling/disabling them when they
2049         make sense to apply, we make a single global instance of the keyboard shortcut and
2050         apply it to whatever content view / content browser is active. This avoids conflicts
2051         in situations where there are two ContentViews that are visible and each can handle
2052         the keyboard shortcut.
2053
2054         * UserInterface/Base/Main.js:
2055         (WI.contentLoaded):
2056         New keyboard shortcuts.
2057
2058         (WI._populateFind):
2059         (WI._findNext):
2060         (WI._findPrevious):
2061         Perform the shortcut on the active content view or content browser.
2062
2063         * UserInterface/Views/ContentBrowser.js:
2064         (WI.ContentBrowser.prototype.shown):
2065         (WI.ContentBrowser.prototype.hidden):
2066         (WI.ContentBrowser.prototype.handlePopulateFindShortcut):
2067         (WI.ContentBrowser.prototype.handleFindNextShortcut):
2068         (WI.ContentBrowser.prototype.handleFindPreviousShortcut):
2069         (WI.ContentBrowser.prototype.findBannerSearchQueryForSelection): Deleted.
2070         * UserInterface/Views/LogContentView.js:
2071         (WI.LogContentView.prototype.handlePopulateFindShortcut):
2072         (WI.LogContentView.prototype.handleFindNextShortcut):
2073         (WI.LogContentView.prototype.handleFindPreviousShortcut):
2074         ContentBrowser and LogContentView (the only content view with a custom find banner)
2075         now each handle the global keyboard shortcut handlers to do the right thing for
2076         their respective cases.
2077
2078         * UserInterface/Views/FindBanner.js:
2079         (WI.FindBanner.prototype.enableKeyboardShortcuts): Deleted.
2080         (WI.FindBanner.prototype.disableKeyboardShortcuts): Deleted.
2081         (WI.FindBanner.prototype._populateSearchQueryFromSelection): Deleted.
2082         Move keyboard shortcut handling up to Main.js to be global.
2083
2084         * UserInterface/Views/ContentView.js:
2085         (WI.ContentView.prototype.searchQueryWithSelection):
2086         Default implementation should grab the selected text from the selection.
2087         Previously shortcut selections only worked for selections in text editors.
2088
2089 2017-09-05  Nikita Vasilyev  <nvasilyev@apple.com>
2090
2091         Web Inspector: Styles Redesign: display "Inherited From" section headers
2092         https://bugs.webkit.org/show_bug.cgi?id=176033
2093         <rdar://problem/34116930>
2094
2095         Reviewed by Devin Rousso.
2096
2097         Compared to the old styles sidebar, the new "Inherited From" sections are more compact.
2098         One of the goals of the styles redesign is to make it fit more data vertically.
2099
2100         The contrast is inceased. The text is darker while the background stayed the same.
2101
2102         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
2103         (.spreadsheet-style-panel .section-inherited):
2104         (.spreadsheet-style-panel .section-inherited .node-link):
2105         (.spreadsheet-style-panel .section-inherited .node-link:hover):
2106         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
2107         (WI.SpreadsheetRulesStyleDetailsPanel):
2108         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
2109         Don't show two identical "Inherited From" sections.
2110
2111 2017-09-05  Nikita Vasilyev  <nvasilyev@apple.com>
2112
2113         Web Inspector: Layout flashing for internal View.prototype.layout
2114         https://bugs.webkit.org/show_bug.cgi?id=176389
2115
2116         Reviewed by Matt Baker.
2117
2118         Add a checkbox to Settings (Debug panel) to draw an orange outline around an element every time View.prototype.layout is called.
2119         This is similar to paint flashing, except this is only for View.prototype.layout.
2120
2121         * UserInterface/Base/Setting.js:
2122         * UserInterface/Views/SettingsTabContentView.js:
2123         (WI.SettingsTabContentView.prototype._createDebugSettingsView):
2124         * UserInterface/Views/View.js:
2125         (WI.View.prototype._layoutSubtree):
2126         (WI.View.prototype._drawLayoutFlashingOutline):
2127
2128 2017-09-04  Nikita Vasilyev  <nvasilyev@apple.com>
2129
2130         Web Inspector: Styles Redesign: hook up real data to spreadsheet style editor
2131         https://bugs.webkit.org/show_bug.cgi?id=175343
2132         <rdar://problem/33784793>
2133
2134         Reviewed by Devin Rousso.
2135
2136         Replace static HTML added in <https://webkit.org/b/174838> with actual data.
2137
2138         Addressed in this patch:
2139         - CSS rules can be copied.
2140         - Source links work as expected.
2141         - Nonmatching selectors are grayed out.
2142
2143         Known limitations:
2144         - Neither CSS selectors nor CSS properties are editable.
2145         - "Inherited from" and media query section headers are missing.
2146         - No syntax highlighting of complex CSS values, e.g. hsl(0, 0%, 70%).
2147
2148         * UserInterface/Main.html:
2149         * UserInterface/Models/CSSStyleDeclaration.js:
2150         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
2151         (WI.CSSStyleDeclarationTextEditor):
2152         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
2153         (WI.CSSStyleDetailsSidebarPanel):
2154         * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js: Removed.
2155         Rename RulesStyleSpreadsheetDetailsPanel to SpreadsheetRulesStyleDetailsPanel. All files related to the spreadsheet editor start with "Spreadsheet" now.
2156
2157         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: Added.
2158         (.spreadsheet-style-declaration-editor):
2159         (.spreadsheet-style-declaration-editor .name):
2160         (.spreadsheet-style-declaration-editor .value):
2161         (.spreadsheet-style-declaration-editor.no-properties):
2162         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: Added.
2163         (WI.SpreadsheetCSSStyleDeclarationEditor):
2164         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
2165         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get delegate):
2166         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set delegate):
2167         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get style):
2168         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
2169         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
2170         Similar condition is commonly used in CSSStyleDeclarationTextEditor. Abstact it out to its own method.
2171
2172         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._renderProperty):
2173         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: Copied from Source/WebInspectorUI/UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css.
2174         (.spreadsheet-css-declaration):
2175         (.spreadsheet-css-declaration .origin):
2176         (.spreadsheet-css-declaration.locked .origin::after):
2177         (.spreadsheet-css-declaration .origin .go-to-link):
2178         (.spreadsheet-css-declaration .origin .go-to-link:hover):
2179         (.spreadsheet-css-declaration .styles-source):
2180         (.spreadsheet-css-declaration .selector.style-attribute):
2181         (.spreadsheet-css-declaration .selector > span):
2182         (.spreadsheet-css-declaration .selector > .matched):
2183         (.spreadsheet-css-declaration .properties):
2184         (.spreadsheet-css-declaration.locked):
2185         (.spreadsheet-css-declaration .locked-icon):
2186         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: Added.
2187         (WI.SpreadsheetCSSStyleDeclarationSection):
2188         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get element):
2189         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get style):
2190         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
2191         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
2192         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
2193         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get locked):
2194         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get selectorEditable):
2195         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css.
2196         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: Added.
2197         (WI.SpreadsheetRulesStyleDetailsPanel):
2198         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
2199         * UserInterface/Views/StyleDetailsPanel.js:
2200         (WI.StyleDetailsPanel.prototype.filterDidChange):
2201
2202         * UserInterface/Views/View.js:
2203         (WI.View.prototype.removeAllSubviews):
2204         Add a method to remove all subviews more efficiently.
2205
2206 2017-08-29  Matt Baker  <mattbaker@apple.com>
2207
2208         Web Inspector: Critical content browser toolbar buttons are hidden at narrow widths
2209         https://bugs.webkit.org/show_bug.cgi?id=175999
2210
2211         Reviewed by Devin Rousso.
2212
2213         This patch adds a VisibilityPriority concept to NavigationItems. If a
2214         NavigationBar cannot fit all of its items in the available space, items
2215         are hidden to make room, starting with the lowest priority item. Consecutive
2216         dividers are then collapsed, as well as leading and trailing dividers.
2217
2218         * UserInterface/Main.html:
2219         New file.
2220
2221         * UserInterface/Views/CanvasContentView.js:
2222         (WI.CanvasContentView):
2223         * UserInterface/Views/ConsoleDrawer.js:
2224         (WI.ConsoleDrawer):
2225         * UserInterface/Views/ContentBrowser.js:
2226         (WI.ContentBrowser):
2227         * UserInterface/Views/ContentBrowserTabContentView.js:
2228         (WI.ContentBrowserTabContentView):
2229         * UserInterface/Views/DOMTreeContentView.js:
2230         (WI.DOMTreeContentView):
2231         Set `High` and `Low` priorities, and group the back/forward buttons.
2232
2233         * UserInterface/Views/GroupNavigationItem.js: Added.
2234         (WI.GroupNavigationItem):
2235         (WI.GroupNavigationItem.prototype.get navigationItems):
2236         (WI.GroupNavigationItem.prototype.get minimumWidth):
2237         (WI.GroupNavigationItem.prototype.updateLayout):
2238         (WI.GroupNavigationItem.prototype.didAttach):
2239         (WI.GroupNavigationItem.prototype.didDetach):
2240         NavigationItem groups. Grouped items are shown/hidden together.
2241
2242         * UserInterface/Views/HierarchicalPathNavigationItem.js:
2243         (WI.HierarchicalPathNavigationItem.prototype.updateLayout):
2244         * UserInterface/Views/ImageResourceContentView.js:
2245         (WI.ImageResourceContentView):
2246         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
2247         (WI.IndexedDatabaseObjectStoreContentView):
2248         * UserInterface/Views/LogContentView.js:
2249         (WI.LogContentView):
2250         Set `High` and `Low` priorities.
2251
2252         * UserInterface/Views/NavigationBar.css:
2253         (.navigation-bar .item.force-hidden):
2254         New hidden class, which must be tracked separately from ".hidden".
2255         The former is an implementation detail of NavigationBar, while the
2256         latter is set by the client.
2257
2258         * UserInterface/Views/NavigationBar.js:
2259         (WI.NavigationBar.prototype.insertNavigationItem):
2260         (WI.NavigationBar.prototype.removeNavigationItem):
2261         (WI.NavigationBar.prototype.findNavigationItem.matchingSelfOrChild):
2262         (WI.NavigationBar.prototype.findNavigationItem):
2263         (WI.NavigationBar.prototype.layout.forceItemHidden):
2264         (WI.NavigationBar.prototype.layout.isDivider):
2265         (WI.NavigationBar.prototype.layout.calculateVisibleItemWidth):
2266         (WI.NavigationBar.prototype.layout):
2267         (WI.NavigationBar.prototype._calculateMinimumWidth):
2268         (WI.NavigationBar.prototype.get _visibleNavigationItems):
2269         (WI.NavigationBar):
2270
2271         * UserInterface/Views/NavigationItem.js:
2272         Add support for visibility priority, an integer value that determines the
2273         order in which items are hidden when the NavigationBar becomes too narrow
2274         to fit all of items child items. NavigationIte3m defines constants for
2275         Low, Normal (the default), and High priority.
2276
2277         (WI.NavigationItem):
2278         (WI.NavigationItem.prototype.get minimumWidth):
2279         (WI.NavigationItem.prototype.get width):
2280         (WI.NavigationItem.prototype.get visibilityPriority):
2281         (WI.NavigationItem.prototype.set visibilityPriority):
2282         (WI.NavigationItem.prototype.updateLayout):
2283         (WI.NavigationItem.prototype.didAttach):
2284         (WI.NavigationItem.prototype.didDetach):
2285         Encapsulate the setting of the parent NavigationBar. Needed so that
2286         GroupNavigationItem can forward this action to its children.
2287
2288         * UserInterface/Views/NetworkGridContentView.js:
2289         (WI.NetworkGridContentView):
2290         * UserInterface/Views/RadioButtonNavigationItem.js:
2291         (WI.RadioButtonNavigationItem.prototype.updateLayout):
2292         * UserInterface/Views/RecordingContentView.js:
2293         (WI.RecordingContentView):
2294         * UserInterface/Views/ScriptContentView.js:
2295         (WI.ScriptContentView):
2296         * UserInterface/Views/TextContentView.js:
2297         (WI.TextContentView):
2298         * UserInterface/Views/TextResourceContentView.js:
2299         (WI.TextResourceContentView):
2300         * UserInterface/Views/TimelineRecordingContentView.js:
2301         (WI.TimelineRecordingContentView):
2302         * UserInterface/Views/TimelineTabContentView.js:
2303         (WI.TimelineTabContentView):
2304         Set `High` and `Low` priorities, and group Timeline view mode buttons.
2305
2306 2017-08-29  Joseph Pecoraro  <pecoraro@apple.com>
2307
2308         REGRESSION(r220235): Web Inspector: Global search should not happen incrementally
2309         https://bugs.webkit.org/show_bug.cgi?id=176063
2310
2311         Reviewed by Devin Rousso.
2312
2313         * UserInterface/Base/Main.js:
2314         (WI.contentLoaded):
2315         * UserInterface/Views/SearchBar.js:
2316         (WI.SearchBar):
2317         (WI.SearchBar.prototype._handleKeydownEvent):
2318         Remove delegate and simplify setting incremental.
2319
2320 2017-08-29  Nikita Vasilyev  <nvasilyev@apple.com>
2321
2322         Web Inspector: Convert all methods in Utilities.js to ECMAScript 2015 shorthand syntax
2323         https://bugs.webkit.org/show_bug.cgi?id=176067
2324
2325         Reviewed by Joseph Pecoraro.
2326
2327         * UserInterface/Base/Utilities.js:
2328         (get return):
2329         (addStringToken):
2330         (prettyFunctionName):
2331         (warn):
2332         (error):
2333         (isEmptyObject):
2334         (isEnterKey):
2335         (resolveDotsInPath):
2336         (parseMIMEType):
2337         (simpleGlobStringToRegExp):
2338         (defaultComparator):
2339         (get Object):
2340         (appendWebInspectorSourceURL):
2341         (appendWebInspectorConsoleEvaluationSourceURL):
2342         (isWebInspectorInternalScript):
2343         (isWebInspectorConsoleEvaluationScript):
2344         (isWebKitInjectedScript):
2345         (isWebKitInternalScript):
2346         (isFunctionStringNativeCode):
2347         (isTextLikelyMinified):
2348         (doubleQuotedString):
2349         (insertionIndexForObjectInListSortedByFunction):
2350         (insertObjectIntoSortedArray):
2351         (decodeBase64ToBlob):
2352
2353 2017-08-29  Nikita Vasilyev  <nvasilyev@apple.com>
2354
2355         Web Inspector: Optimize View.prototype.removeSubview
2356         https://bugs.webkit.org/show_bug.cgi?id=176041
2357
2358         Reviewed by Matt Baker.
2359
2360         Look up a subview in an array only once, not twice.
2361
2362         * UserInterface/Base/Utilities.js:
2363         (Array.prototype.removeAll):
2364         (Array.prototype.remove):
2365         Split Array.propotype.remove(value, onlyFirst) into Array.propotype.removeAll(value) and
2366         Array.propotype.remove(value).
2367
2368         * UserInterface/Controllers/DebuggerManager.js:
2369         (WI.DebuggerManager.prototype._debuggerBreakpointOptions):
2370         * UserInterface/Views/ContentViewContainer.js:
2371         (WI.ContentViewContainer.prototype._clearTombstonesForContentView):
2372         (WI.ContentViewContainer.prototype._disassociateFromContentView):
2373         * UserInterface/Views/View.js:
2374         (WI.View.prototype.removeSubview):
2375
2376 2017-08-28  Joseph Pecoraro  <pecoraro@apple.com>
2377
2378         Web Inspector: Remove some unused DataGrid code
2379         https://bugs.webkit.org/show_bug.cgi?id=176029
2380
2381         Reviewed by Matt Baker.
2382
2383         * UserInterface/Views/DataGrid.js:
2384         (WI.DataGrid.prototype.get copyTextDelimiter):
2385         (WI.DataGrid.prototype.set copyTextDelimiter):
2386         (WI.DataGrid.prototype.resizerDragging):
2387         (WI.DataGrid.prototype.columnWidthsMap): Deleted.
2388         (WI.DataGrid.prototype.applyColumnWidthsMap): Deleted.
2389         (WI.DataGrid.prototype.get resizeMethod): Deleted.
2390         (WI.DataGrid.prototype.set resizeMethod): Deleted.
2391
2392 2017-08-27  Devin Rousso  <webkit@devinrousso.com>
2393
2394         Web Inspector: Record actions performed on WebGLRenderingContext
2395         https://bugs.webkit.org/show_bug.cgi?id=174483
2396         <rdar://problem/34040722>
2397
2398         Reviewed by Matt Baker.
2399
2400         * UserInterface/Models/Recording.js:
2401         (WI.Recording):
2402         (WI.Recording.fromPayload):
2403         (WI.Recording.prototype.swizzle):
2404         Add swizzle types for WebGL parameters.
2405
2406         * UserInterface/Models/RecordingAction.js:
2407         (WI.RecordingAction):
2408         (WI.RecordingAction.fromPayload):
2409         (WI.RecordingAction.prototype.get snapshot):
2410         (WI.RecordingAction.prototype.swizzle):
2411         (WI.RecordingAction.prototype.toJSON):
2412         Include an optional fourth parameter `snapshot` that will be sent for visual actions when
2413         recording WebGL canvas contexts.
2414
2415         * UserInterface/Views/RecordingContentView.js:
2416         (WI.RecordingContentView):
2417         (WI.RecordingContentView.prototype.get navigationItems):
2418         (WI.RecordingContentView.prototype.updateActionIndex):
2419         (WI.RecordingContentView.prototype.shown):
2420         (WI.RecordingContentView.prototype._generateContentCanvasWebGL):
2421         * UserInterface/Views/RecordingContentView.css:
2422         (.content-view:not(.tab).recording :matches(img, canvas)):
2423         (.content-view:not(.tab).recording canvas): Deleted.
2424         Instead of regenerating the canvas context in the WebInspector frontend, just display the
2425         snapshot image for the last visual action.
2426
2427         * UserInterface/Views/CanvasContentView.js:
2428         (WI.CanvasContentView):
2429
2430         * UserInterface/Views/RecordingActionTreeElement.js:
2431         (WI.RecordingActionTreeElement._generateDOM):
2432
2433 2017-08-24  Devin Rousso  <webkit@devinrousso.com>
2434
2435         Web Inspector: add filter for draw actions in Recordings
2436         https://bugs.webkit.org/show_bug.cgi?id=175448
2437         <rdar://problem/34040764>
2438
2439         Reviewed by Matt Baker.
2440
2441         * Localizations/en.lproj/localizedStrings.js:
2442         
2443         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
2444         (WI.RecordingNavigationSidebarPanel.prototype.initialLayout):
2445         (WI.RecordingNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2446         Add button to filter visual actions.
2447         Drive-by fix: ensure that frame folders are still visible when filtering.
2448
2449         * UserInterface/Images/Paint.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/PaintFlashing.svg.
2450         * UserInterface/Images/gtk/Paint.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/PaintFlashing.svg.
2451         * UserInterface/Views/DOMTreeContentView.js:
2452         (WI.DOMTreeContentView):
2453         Rename PaintFlashing.svg to Paint.svg.
2454
2455 2017-08-24  Ross Kirsling  <ross.kirsling@sony.com>
2456
2457         Web Inspector: Create experimental Layers tab
2458         https://bugs.webkit.org/show_bug.cgi?id=175728
2459
2460         Reviewed by Devin Rousso.
2461
2462         * Localizations/en.lproj/localizedStrings.js:
2463         * UserInterface/Base/Main.js:
2464         * UserInterface/Base/Setting.js:
2465         * UserInterface/Images/Layers.svg: Added.
2466         * UserInterface/Main.html:
2467         * UserInterface/Views/Layers3DContentView.js: Added.
2468         * UserInterface/Views/LayersTabContentView.js: Added.
2469         * UserInterface/Views/SettingsTabContentView.js:
2470
2471 2017-08-24  Devin Rousso  <webkit@devinrousso.com>
2472
2473         Web Inspector: Table grid shouldn't show behind empty state
2474         https://bugs.webkit.org/show_bug.cgi?id=175943
2475
2476         Reviewed by Brian Burg.
2477
2478         * UserInterface/Views/RecordingNavigationSidebarPanel.css:
2479         (.sidebar > .panel.navigation.recording > .content > .tree-outline):
2480         (.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)):
2481         Only apply the background when the TreeOutline has children.
2482
2483 2017-08-23  Nikita Vasilyev  <nvasilyev@apple.com>
2484
2485         Web Inspector: Make lock icon crispier
2486         https://bugs.webkit.org/show_bug.cgi?id=175868
2487
2488         Reviewed by Matt Baker.
2489
2490         * UserInterface/Images/Locked.svg:
2491
2492 2017-08-22  Devin Rousso  <webkit@devinrousso.com>
2493
2494         Web Inspector: provide way for ShaderPrograms to be enabled/disabled
2495         https://bugs.webkit.org/show_bug.cgi?id=175400
2496
2497         Reviewed by Matt Baker.
2498
2499         Adds a status element to ShaderProgramTreeElement that, when clicked, will toggle the
2500         disabled state of the corresponding ShaderProgram. Disabled shader programs will not draw
2501         anything to the context.
2502
2503         * Localizations/en.lproj/localizedStrings.js:
2504         * UserInterface/Main.html:
2505
2506         * UserInterface/Models/ShaderProgram.js:
2507         (WI.ShaderProgram):
2508         (WI.ShaderProgram.prototype.get disabled):
2509         (WI.ShaderProgram.prototype.toggleDisabled):
2510
2511         * UserInterface/Views/ShaderProgramTreeElement.js:
2512         (WI.ShaderProgramTreeElement):
2513         (WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
2514         (WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked):
2515         * UserInterface/Views/ShaderProgramTreeElement.css: Added.
2516         (.item.shader-program .status > img):
2517         (.item.shader-program:not(:hover, .selected, .disabled) .status > img):
2518         (.tree-outline:matches(:focus, .force-focus) .item.shader-program.selected .status > img):
2519         (.item.shader-program.disabled > *):
2520
2521 2017-08-21  Devin Rousso  <webkit@devinrousso.com>
2522
2523         Web Inspector: Can't copy text from "View variable value" popover in Styles sidebar
2524         https://bugs.webkit.org/show_bug.cgi?id=175758
2525
2526         Reviewed by Matt Baker.
2527
2528         * UserInterface/Views/InlineSwatch.js:
2529         (WI.InlineSwatch.prototype._swatchElementClicked):
2530         Change CodeMirror readOnly from "nocursor" to true. The former prevents the editor from
2531         being focused during selection, therefore preventing the content from being copied.
2532
2533 2017-08-17  Matt Baker  <mattbaker@apple.com>
2534
2535         Web Inspector: create better icon for Canvas Path navigation item
2536         https://bugs.webkit.org/show_bug.cgi?id=175274
2537
2538         Reviewed by Joseph Pecoraro.
2539
2540         * UserInterface/Images/Path.svg: Added.
2541         * UserInterface/Views/RecordingContentView.js:
2542         (WI.RecordingContentView):
2543
2544 2017-08-17  Nikita Vasilyev  <nvasilyev@apple.com>
2545
2546         Web Inspector: Styles: replace "Enter Class Name" with "Add New Class"
2547         https://bugs.webkit.org/show_bug.cgi?id=175686
2548
2549         Reviewed by Matt Baker.
2550
2551         "Enter Class Name" isn't very descriptive. It doesn't suggest what's going to happen after you enter a class name.
2552
2553         * Localizations/en.lproj/localizedStrings.js:
2554         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
2555         (WI.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
2556
2557 2017-08-17  Ross Kirsling  <ross.kirsling@sony.com>
2558
2559         Web Inspector: Ensure three.js gets minified properly for production builds.
2560         https://bugs.webkit.org/show_bug.cgi?id=175452
2561
2562         Reviewed by Brian Burg.
2563
2564         * Scripts/copy-user-interface-resources.pl:
2565
2566 2017-08-14  Simon Fraser  <simon.fraser@apple.com>
2567
2568         Remove Proximity Events and related code
2569         https://bugs.webkit.org/show_bug.cgi?id=175545
2570
2571         Reviewed by Daniel Bates.
2572
2573         No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
2574         and other related code.
2575
2576         * UserInterface/Models/ScriptTimelineRecord.js:
2577         (WI.ScriptTimelineRecord.EventType.displayName):
2578
2579 2017-08-14  Matt Baker  <mattbaker@apple.com>
2580
2581         Web Inspector: Remove text-shadow and gradient backgrounds
2582         https://bugs.webkit.org/show_bug.cgi?id=175430
2583
2584         Reviewed by Brian Burg.
2585
2586         Inspector should more closely match flat system look. Remove text-shadow
2587         embossing and replace linear gradients in popover backgrounds and selected
2588         tree item background color.
2589
2590         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
2591         (.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
2592         * UserInterface/Views/CompletionSuggestionsView.css:
2593         (.completion-suggestions-container:not(:active) > .item.selected,):
2594         * UserInterface/Views/DebuggerDashboardView.css:
2595         (.toolbar .dashboard.debugger):
2596         * UserInterface/Views/HierarchicalPathComponent.css:
2597         (.hierarchical-path-component > .title):
2598         * UserInterface/Views/Main.css:
2599         (.bouncy-highlight):
2600         * UserInterface/Views/NavigationSidebarPanel.css:
2601         (.sidebar > .panel.navigation > .content .empty-content-placeholder > .message):
2602         * UserInterface/Views/Popover.js:
2603         (WI.Popover.prototype._drawBackground):
2604         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.css:
2605         (.sidebar > .details.recording-trace > .content > .no-trace-data > .message):
2606         * UserInterface/Views/RulesStyleDetailsPanel.css:
2607         (.sidebar > .panel.details.css-style .rules .label):
2608         (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results > .no-filter-results-message):
2609         (@media (-webkit-min-device-pixel-ratio: 2)): Deleted.
2610         (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label.filter-matching-label,): Deleted.
2611         * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css:
2612         (.style-spreadsheet .inherited):
2613         * UserInterface/Views/TimelineDataGrid.css:
2614         (.tree-outline.timeline-data-grid .item:hover):
2615         * UserInterface/Views/TimelineDataGrid.js:
2616         (WI.TimelineDataGrid.prototype._createPopoverContent):
2617         * UserInterface/Views/Variables.css:
2618         (:root):
2619
2620 2017-08-11  Nikita Vasilyev  <nvasilyev@apple.com>
2621
2622         Web Inspector: Clicking on suggestion hint should apply it, not dismiss
2623         https://bugs.webkit.org/show_bug.cgi?id=175409
2624
2625         Reviewed by Matt Baker.
2626
2627         Make clicking on the suggestion hint apply the completion, and place the text caret after it.
2628
2629         * UserInterface/Controllers/CodeMirrorCompletionController.js:
2630         (WI.CodeMirrorCompletionController.prototype._createCompletionHintMarker):
2631
2632 2017-08-11  Nikita Vasilyev  <nvasilyev@apple.com>
2633
2634         Web Inspector: Styles: Update the filter icon to match Xcode
2635         https://bugs.webkit.org/show_bug.cgi?id=175458
2636         <rdar://problem/33838660>
2637
2638         Reviewed by Matt Baker.
2639
2640         * UserInterface/Images/FilterFieldGlyph.svg:
2641         Half-pixel transform is necessary for a cleaner rasterisation.
2642
2643         * UserInterface/Views/FilterBar.css:
2644         (.filter-bar > input[type="search"]::-webkit-search-decoration):        
2645         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
2646         ::-webkit-search-decoration is a flexbox item. Remove `vertical-align: bottom`,
2647         since it didn't do anything for it.
2648
2649         * UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
2650         * UserInterface/Views/FilterBar.js:
2651         (WI.FilterBar):        
2652         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
2653         (WI.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
2654         * UserInterface/Views/DebuggerSidebarPanel.js:
2655         * UserInterface/Views/LogContentView.js:
2656         (WI.LogContentView):
2657         * UserInterface/Views/NetworkSidebarPanel.js:
2658         (WI.NetworkSidebarPanel):
2659         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
2660         (WI.RecordingNavigationSidebarPanel):
2661         * UserInterface/Views/ResourceSidebarPanel.js:
2662         (WI.ResourceSidebarPanel):
2663         * UserInterface/Views/SearchSidebarPanel.js:
2664         (WI.SearchSidebarPanel):
2665         * UserInterface/Views/StorageSidebarPanel.js:
2666         (WI.StorageSidebarPanel):
2667         * UserInterface/Views/TimelineRecordingContentView.js:
2668         (WI.TimelineRecordingContentView):
2669         * Localizations/en.lproj/localizedStrings.js:        
2670         Replace placeholder text for all filter fields with "Filter".
2671
2672 2017-08-10  Ross Kirsling  <ross.kirsling@sony.com>
2673
2674         Web Inspector: Add three.js in preparation for layer visualization.
2675         https://bugs.webkit.org/show_bug.cgi?id=174798
2676
2677         Reviewed by Brian Burg.
2678
2679         * UserInterface/External/three.js/LICENSE: Added.
2680         * UserInterface/External/three.js/OrbitControls.js: Added.
2681         * UserInterface/External/three.js/three.js: Added.
2682
2683 2017-08-09  Nikita Vasilyev  <nvasilyev@apple.com>
2684
2685         Web Inspector: Styles: Add pre-populated data to spreadsheet-style view
2686         https://bugs.webkit.org/show_bug.cgi?id=174838
2687         <rdar://problem/33523220>
2688
2689         Reviewed by Matt Baker.
2690
2691         This patch adds static content to the experimental RulesStyleSpreadsheetDetailsPanel.
2692         The static content will be replaced with actual data in the follow up patches.
2693
2694         * UserInterface/Main.html:
2695         * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css: Added.
2696         (.style-spreadsheet .style-rule):
2697         (.style-spreadsheet .selector-line):
2698         (.style-spreadsheet .selector):
2699         (.style-spreadsheet :matches(.selector .matched, .selector:focus)):
2700         (.style-spreadsheet .name):
2701         (.style-spreadsheet .value):
2702         (.style-spreadsheet :matches(.selector, .name, .value)):
2703         (.style-spreadsheet :matches(.selector, .name, .value):focus):
2704         (.style-spreadsheet .selector-inline):
2705         (.style-spreadsheet .property):
2706         (.style-spreadsheet .property-disabled,):
2707         (.style-spreadsheet .property-disabled :matches(.name, .value)):
2708         (.style-spreadsheet .styles-source):
2709         (.style-spreadsheet :matches(a, .node-link)):
2710         (.style-spreadsheet :matches(a, .node-link):hover):
2711         (.style-spreadsheet .inherited):
2712         (.style-spreadsheet .declarations):
2713         (.style-spreadsheet input[type="checkbox"]):
2714         (.style-spreadsheet input[type="checkbox"]:not(:checked)):
2715         (.style-spreadsheet .declarations:hover input[type="checkbox"]):
2716         * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js:
2717
2718 2017-08-08  Devin Rousso  <drousso@apple.com>
2719
2720         Web Inspector: Canvas: support editing WebGL shaders
2721         https://bugs.webkit.org/show_bug.cgi?id=124211
2722         <rdar://problem/15448958>
2723
2724         Reviewed by Matt Baker.
2725
2726         * UserInterface/Models/ShaderProgram.js:
2727         (WI.ShaderProgram.prototype.updateVertexShader):
2728         (WI.ShaderProgram.prototype.updateFragmentShader):
2729         (WI.ShaderProgram.prototype._updateShader):
2730
2731         * UserInterface/Views/ShaderProgramContentView.js:
2732         (WI.ShaderProgramContentView):
2733         (WI.ShaderProgramContentView.prototype._contentDidChange):
2734
2735 2017-08-07  Devin Rousso  <drousso@apple.com>
2736
2737         Web Inspector: Preview Canvas path when viewing a recording
2738         https://bugs.webkit.org/show_bug.cgi?id=174967
2739
2740         Reviewed by Brian Burg.
2741
2742         * Localizations/en.lproj/localizedStrings.js:
2743         * UserInterface/Base/Setting.js:
2744
2745         * UserInterface/Views/RecordingContentView.js:
2746         (WI.RecordingContentView):
2747         (WI.RecordingContentView.supportsCanvasPathDebugging):
2748         (WI.RecordingContentView.prototype.get navigationItems):
2749         (WI.RecordingContentView.prototype.shown):
2750         (WI.RecordingContentView.prototype._generateContentCanvas2D):
2751         (WI.RecordingContentView.prototype._actionModifiesPath):
2752         (WI.RecordingContentView.prototype._updateCanvasPath):
2753         (WI.RecordingContentView.prototype._showPathButtonClicked):
2754         Show each segment of the current path as an overlay when the setting is enabled.
2755         Drive-by: fix forgotten function rename.
2756
2757         * UserInterface/Views/RecordingContentView.css:
2758         (.content-view:not(.tab).recording canvas.path):
2759
2760         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
2761         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
2762         Show the currentX/currentY in the current state.
2763
2764         * UserInterface/Models/RecordingAction.js:
2765         (WI.RecordingAction.isFunctionForType):
2766         (WI.RecordingAction.prototype.swizzle):
2767         Use Sets for better performance.
2768
2769 2017-08-04  Devin Rousso  <drousso@apple.com>
2770
2771         Web Inspector: add source view for WebGL shader programs
2772         https://bugs.webkit.org/show_bug.cgi?id=138593
2773         <rdar://problem/18936194>
2774
2775         Reviewed by Matt Baker.
2776
2777         Shader programs are now listed in the Resources sidebar as items within the owner Canvas
2778         context. When selected, the shown content view has two editors, one for the Vertex shader
2779         and one for the Fragment shader. These editors use CodeMirror's "clike" mode for GLSL syntax.
2780
2781         * Localizations/en.lproj/localizedStrings.js:
2782         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
2783         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
2784         * UserInterface/Main.html:
2785
2786         * UserInterface/Controllers/CanvasManager.js:
2787         (WI.CanvasManager):
2788         (WI.CanvasManager.prototype.canvasRemoved):
2789         (WI.CanvasManager.prototype.programCreated):
2790         (WI.CanvasManager.prototype.programDeleted):
2791         (WI.CanvasManager.prototype._mainResourceDidChange):
2792
2793         * UserInterface/Models/Collection.js:
2794         * UserInterface/Models/Canvas.js:
2795         (WI.Canvas.prototype.get shaderProgramCollection)
2796
2797         * UserInterface/Models/ShaderProgram.js:
2798         (WI.ShaderProgram.prototype.requestVertexShaderSource):
2799         (WI.ShaderProgram.prototype.requestFragmentShaderSource):
2800         (WI.ShaderProgram.prototype._requestShaderSource):
2801
2802         * UserInterface/Views/CanvasTreeElement.js:
2803         (WI.CanvasTreeElement):
2804         (WI.CanvasTreeElement.prototype.onattach):
2805         (WI.CanvasTreeElement.prototype.ondetach):
2806         (WI.CanvasTreeElement.prototype.onpopulate):
2807         (WI.CanvasTreeElement.prototype._shaderProgramAdded):
2808         (WI.CanvasTreeElement.prototype._shaderProgramRemoved):
2809
2810         * UserInterface/Views/ShaderProgramTreeElement.js: Added.
2811         (WI.ShaderProgramTreeElement):
2812
2813         * UserInterface/Views/ShaderProgramContentView.js: Added.
2814         (WI.ShaderProgramContentView):
2815         (WI.ShaderProgramContentView.prototype.shown):
2816         (WI.ShaderProgramContentView.prototype.hidden):
2817         (WI.ShaderProgramContentView.prototype.closed):
2818         (WI.ShaderProgramContentView.prototype.get supportsSave):
2819         (WI.ShaderProgramContentView.prototype.get saveData):
2820         (WI.ShaderProgramContentView.prototype.get supportsSearch):
2821         (WI.ShaderProgramContentView.prototype.get numberOfSearchResults):
2822         (WI.ShaderProgramContentView.prototype.get hasPerformedSearch):
2823         (WI.ShaderProgramContentView.prototype.set automaticallyRevealFirstSearchResult):
2824         (WI.ShaderProgramContentView.prototype.performSearch):
2825         (WI.ShaderProgramContentView.prototype.searchCleared):
2826         (WI.ShaderProgramContentView.prototype.searchQueryWithSelection):
2827         (WI.ShaderProgramContentView.prototype.revealPreviousSearchResult):
2828         (WI.ShaderProgramContentView.prototype.revealNextSearchResult):
2829         (WI.ShaderProgramContentView.prototype.revealPosition):
2830         (WI.ShaderProgramContentView.prototype._editorFocused):
2831         (WI.ShaderProgramContentView.prototype._numberOfSearchResultsDidChange):
2832         * UserInterface/Views/ShaderProgramContentView.css: Added.
2833         (.content-view.shader-program > .text-editor.shader):
2834         (body[dir=ltr] .content-view.shader-program > .text-editor.shader.vertex,):
2835         (body[dir=ltr] .content-view.shader-program > .text-editor.shader.fragment,):
2836         (body[dir=ltr] .content-view.shader-program > .text-editor.shader + .text-editor.shader):
2837         (body[dir=rtl] .content-view.shader-program > .text-editor.shader + .text-editor.shader):
2838         (.content-view.shader-program > .text-editor.shader > .type-title):
2839         (.content-view.shader-program > .text-editor.shader > .CodeMirror):
2840
2841         * UserInterface/Images/DocumentGL.png: Added.
2842         * UserInterface/Images/DocumentGL@2x.png: Added.
2843         * UserInterface/Views/ResourceIcons.css:
2844         (.shader-program .icon):
2845
2846         * UserInterface/Base/Main.js:
2847         * UserInterface/Views/ContentView.js:
2848         (WI.ContentView.createFromRepresentedObject):
2849         (WI.ContentView.isViewable):
2850         * UserInterface/Views/ResourceSidebarPanel.js:
2851         (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
2852         (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2853         (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
2854         * UserInterface/Views/ResourcesTabContentView.js:
2855         (WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
2856         Plumbing for displaying ShaderProgram content.
2857
2858         * UserInterface/Views/TextEditor.js:
2859         (WebInspector.TextEditor):
2860         (WebInspector.TextEditor.prototype._editorFocused):
2861
2862         * Scripts/update-codemirror-resources.rb:
2863         * UserInterface/External/CodeMirror/clike.js: Added.
2864         Add C-like mode for highlighting GLSL.
2865
2866 2017-08-03  Joseph Pecoraro  <pecoraro@apple.com>
2867
2868         JSContext Inspector: Scripts sometimes do not show in resources tab
2869         https://bugs.webkit.org/show_bug.cgi?id=175153
2870         <rdar://problem/33708683>
2871
2872         Reviewed by Matt Baker.
2873
2874         * UserInterface/Views/ResourceSidebarPanel.js:
2875         (WI.ResourceSidebarPanel.prototype.initialLayout):
2876         When the ResourceSidebar is lazily created, be sure to add any scripts
2877         to the sidebar that are not backed by Resources.
2878
2879         (WI.ResourceSidebarPanel.prototype._scriptWasAdded):
2880         (WI.ResourceSidebarPanel.prototype._addScript):
2881         Extract so it can be used outside of an event handler.
2882
2883 2017-08-03  Devin Rousso  <drousso@apple.com>
2884
2885         Web Inspector: add button to open Inspector^2
2886         https://bugs.webkit.org/show_bug.cgi?id=175108
2887
2888         Reviewed by Brian Burg.
2889
2890         * UserInterface/Debug/Bootstrap.js:
2891         (updateDebugUI):
2892         (WI.runBootstrapOperations):
2893
2894         * UserInterface/Views/ButtonToolbarItem.js:
2895         (WI.ButtonToolbarItem):
2896         (WI.ButtonToolbarItem.prototype.get label): Deleted.
2897         (WI.ButtonToolbarItem.prototype.set label): Deleted.
2898         * UserInterface/Views/ButtonToolbarItem.css:
2899         (.toolbar .item.button):
2900         (.toolbar .item.button:not(.disabled):active):
2901         (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
2902         (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
2903         (.toolbar .item.button > .glyph):
2904         (.toolbar .item.button:not(.disabled):active > .glyph): Deleted.
2905         (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated) > .glyph): Deleted.
2906         (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated) > .glyph): Deleted.
2907         (.toolbar .item.button > .label): Deleted.
2908         * UserInterface/Views/ActivateButtonToolbarItem.js:
2909         (WI.ActivateButtonToolbarItem):
2910         (WI.ActivateButtonToolbarItem.prototype.get label): Deleted.
2911         (WI.ActivateButtonToolbarItem.prototype.set label): Deleted.
2912         * UserInterface/Base/Main.js:
2913         (WI.contentLoaded):
2914         Remove unused `label` parameter from Toolbar objects.
2915
2916 2017-08-03  Matt Baker  <mattbaker@apple.com>
2917
2918         Web Inspector: Instrument WebGLProgram created/deleted
2919         https://bugs.webkit.org/show_bug.cgi?id=175059
2920
2921         Reviewed by Devin Rousso.
2922
2923         This patch adds frontend support for shader program instrumentation.
2924         The frontend creates a ShaderProgram model object for each WebGLProgram.
2925         Since only canvases with a WebGL context have programs, the Canvas model
2926         object does not contain any logic specific to programs. CanvasManager
2927         dispatches program added/removed events, and the parent Canvas can be
2928         accessed from ShaderProgram but not the other way around.
2929
2930         * UserInterface/Controllers/CanvasManager.js:
2931         (WI.CanvasManager):
2932         (WI.CanvasManager.prototype.get shaderPrograms):
2933         (WI.CanvasManager.prototype.canvasRemoved):
2934         (WI.CanvasManager.prototype.programCreated):
2935         (WI.CanvasManager.prototype.programDeleted):
2936         (WI.CanvasManager.prototype._mainResourceDidChange):
2937         (WI.CanvasManager.prototype._dispatchShaderProgramRemoved):
2938
2939         * UserInterface/Main.html:
2940
2941         * UserInterface/Models/Canvas.js:
2942         (WI.Canvas.prototype.nextShaderProgramDisplayNumber):
2943         (WI.Canvas):
2944
2945         * UserInterface/Models/ShaderProgram.js: Added.
2946         (WI.ShaderProgram):
2947         (WI.ShaderProgram.prototype.get identifier):
2948         (WI.ShaderProgram.prototype.get canvas):
2949         (WI.ShaderProgram.prototype.get displayName):
2950
2951         * UserInterface/Protocol/CanvasObserver.js:
2952         (WI.CanvasObserver.prototype.programCreated):
2953         (WI.CanvasObserver.prototype.programDeleted):
2954         (WI.CanvasObserver):
2955
2956         * UserInterface/Test.html:
2957
2958 2017-08-03  Joseph Pecoraro  <pecoraro@apple.com>
2959
2960         JSContext Inspector: Recording tab should not be available in New Tab picker
2961         https://bugs.webkit.org/show_bug.cgi?id=175155
2962
2963         Reviewed by Brian Burg.
2964
2965         * UserInterface/Views/RecordingTabContentView.js:
2966         (WI.RecordingTabContentView.isTabAllowed):
2967         Only allow the Recording Tab if we have a CanvasAgent.
2968
2969 2017-08-02  Devin Rousso  <drousso@apple.com>
2970
2971         Web Inspector: add stack trace information for each RecordingAction
2972         https://bugs.webkit.org/show_bug.cgi?id=174663
2973
2974         Reviewed by Joseph Pecoraro.
2975
2976         * Localizations/en.lproj/localizedStrings.js:
2977         * UserInterface/Main.html:
2978
2979         * UserInterface/Models/Recording.js:
2980         (WI.Recording.prototype.swizzle):
2981         Add Array type for swizzling array values.
2982
2983         * UserInterface/Models/RecordingAction.js:
2984         (WI.RecordingAction):
2985         (WI.RecordingAction.fromPayload):
2986         (WI.RecordingAction.prototype.get trace):
2987         (WI.RecordingAction.prototype.swizzle):
2988         (WI.RecordingAction.prototype.toJSON):
2989
2990         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js: Added.
2991         (WI.RecordingTraceDetailsSidebarPanel):
2992         (WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass):
2993         (WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
2994         (WI.RecordingTraceDetailsSidebarPanel.prototype.set recording):
2995         (WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):
2996         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.css: Added.
2997         (.sidebar > .panel.details.recording-trace > .content > .call-frame):
2998         (.sidebar > .details.recording-trace > .content > .no-trace-data):
2999         (.sidebar > .details.recording-trace > .content > .no-trace-data > .message):
3000
3001         * UserInterface/Views/RecordingTabContentView.js:
3002         (WI.RecordingTabContentView):
3003
3004         * UserInterface/Views/RecordingActionTreeElement.js:
3005         (WI.RecordingActionTreeElement.prototype.populateContextMenu):
3006
3007         * UserInterface/Views/CallFrameView.css:
3008         (.call-frame):
3009         (body[dir=ltr] .call-frame .icon):
3010         (body[dir=rtl] .call-frame .icon):
3011         Apply the same trailing margin for CallFrameView icons as TreeElement.
3012
3013 2017-08-02  Devin Rousso  <drousso@apple.com>
3014
3015         Web Inspector: add TreeElement virtualization for the Recording tab
3016         https://bugs.webkit.org/show_bug.cgi?id=174968
3017
3018         Reviewed by Joseph Pecoraro.
3019
3020         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
3021         (WI.RecordingNavigationSidebarPanel):
3022
3023         * UserInterface/Views/TreeOutline.js:
3024         (WI.TreeOutline):
3025         (WI.TreeOutline.prototype.get virtualized):
3026         (WI.TreeOutline.prototype.registerScrollVirtualizer):
3027         (WI.TreeOutline.prototype.updateVirtualizedElements.walk):
3028         (WI.TreeOutline.prototype.updateVirtualizedElements):
3029         Add spacer elements before and after the TreeOutline element that will size to ensure that
3030         the TreeOutline node still takes up the same amount of space after some of the TreeElements
3031         are removed. Whenever the scroll of the container view changes, recalculate the visible area
3032         and add/remove TreeElements based on whether they would be in that. This is only possible if
3033         every TreeElement has the same vertical height, which is given when setting up the scroll
3034         listener on the container view.
3035
3036         * UserInterface/Views/TreeElement.js:
3037         (WI.TreeElement.prototype.set hidden):
3038         (WI.TreeElement.prototype._attach):
3039         (WI.TreeElement.prototype.collapse):
3040         (WI.TreeElement.prototype.expand):
3041         (WI.TreeElement.prototype.reveal):
3042         If the TreeOutline is being virtualized, don't add each TreeElement's node to the DOM. They
3043         will be added at the end of the frame (via setTimeout) if they are within the visible + padding
3044         area of the TreeOutline.
3045
3046 2017-08-01  Devin Rousso  <drousso@apple.com>
3047
3048         Web Inspector: simplify WebInspector with WI
3049         https://bugs.webkit.org/show_bug.cgi?id=175058
3050
3051         Reviewed by Joseph Pecoraro.
3052
3053         * .eslintrc:
3054
3055         * Tools/PrettyPrinting/FormatterDebug.js:
3056         * Tools/PrettyPrinting/index.html:
3057
3058         * UserInterface/Main.html:
3059         * UserInterface/Test.html:
3060
3061         * UserInterface/Base/*.js:
3062         * UserInterface/Controllers/*.js:
3063         * UserInterface/Debug/*.js:
3064         * UserInterface/Models/*.js:
3065         * UserInterface/Protocol/*.js:
3066         * UserInterface/Proxies/*.js:
3067         * UserInterface/Test/*.js:
3068         * UserInterface/Views/*.js:
3069
3070 2017-08-01  Devin Rousso  <drousso@apple.com>
3071
3072         Web Inspector: create Recording tab for displaying recordings
3073         https://bugs.webkit.org/show_bug.cgi?id=174484
3074
3075         Reviewed by Joseph Pecoraro.
3076
3077         * Localizations/en.lproj/localizedStrings.js:
3078         * UserInterface/Main.html:
3079         * UserInterface/Test.html:
3080
3081         * UserInterface/Controllers/CanvasManager.js:
3082         (WebInspector.CanvasManager.prototype.recordingFinished):
3083         * UserInterface/Models/Canvas.js:
3084         (WebInspector.Canvas.prototype.toggleRecording):
3085
3086         * UserInterface/Models/Recording.js:
3087         (WebInspector.Recording):
3088         (WebInspector.Recording.synthesizeError):
3089         (WebInspector.Recording.prototype.get actions):
3090         (WebInspector.Recording.prototype.get source):
3091         (WebInspector.Recording.prototype.set source):
3092         (WebInspector.Recording.prototype.swizzle):
3093
3094         * UserInterface/Models/RecordingAction.js:
3095         (WebInspector.RecordingAction):
3096         (WebInspector.RecordingAction.isFunctionForType):
3097         (WebInspector.RecordingAction.get name):
3098         (WebInspector.RecordingAction.get parameters):
3099         (WebInspector.RecordingAction.prototype.get valid):
3100         (WebInspector.RecordingAction.prototype.set valid):
3101         (WebInspector.RecordingAction.get isFunction):
3102         (WebInspector.RecordingAction.get isGetter):
3103         (WebInspector.RecordingAction.get isVisual):
3104         (WebInspector.RecordingAction.get stateModifiers):
3105         (WebInspector.RecordingAction.prototype.swizzle):
3106         (WebInspector.RecordingAction.prototype.parameterSwizzleTypeForTypeAtIndex):
3107
3108         * UserInterface/Models/RecordingInitialStateAction.js: Added.
3109         (WebInspector.RecordingInitialStateAction):
3110
3111         * UserInterface/Views/RecordingTabContentView.js: Added.
3112         (WebInspector.RecordingTabContentView):
3113         (WebInspector.RecordingTabContentView.tabInfo):
3114         (WebInspector.RecordingTabContentView.prototype.get type):
3115         (WebInspector.RecordingTabContentView.prototype.canShowRepresentedObject):
3116         (WebInspector.RecordingTabContentView.prototype.showRepresentedObject):
3117         (WebInspector.RecordingTabContentView.prototype.restoreStateFromCookie):
3118         (WebInspector.RecordingTabContentView.prototype.saveStateToCookie):
3119         (WebInspector.RecordingTabContentView.prototype.closed):
3120         (WebInspector.RecordingTabContentView.prototype._updateActionIndex):
3121         (WebInspector.RecordingTabContentView.prototype._scrubberNavigationItemValueChanged):
3122         (WebInspector.RecordingTabContentView.prototype._navigationSidebarImport):
3123         (WebInspector.RecordingTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
3124
3125         * UserInterface/Views/RecordingContentView.js: Added.
3126         (WebInspector.RecordingContentView):
3127         (WebInspector.RecordingContentView.prototype.get navigationItems):
3128         (WebInspector.RecordingContentView.prototype.updateActionIndex):
3129         (WebInspector.RecordingContentView.prototype.shown):
3130         (WebInspector.RecordingContentView.prototype.get supplementalRepresentedObjects):
3131         (WebInspector.RecordingContentView.prototype._generateContentCanvas2D):
3132         (WebInspector.RecordingContentView.prototype._applyAction):
3133         (WebInspector.RecordingContentView.prototype._updateImageGrid):
3134         (WebInspector.RecordingContentView.prototype._showGridButtonClicked):
3135         * UserInterface/Views/RecordingContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/CanvasContentView.css.
3136         (.content-view:not(.tab).recording):
3137         (.content-view:not(.tab).recording > .preview-container):
3138         (.content-view:not(.tab).recording canvas):
3139
3140         * UserInterface/Views/RecordingNavigationSidebarPanel.js: Added.
3141         (WebInspector.RecordingNavigationSidebarPanel):
3142         (WebInspector.RecordingNavigationSidebarPanel.disallowInstanceForClass):
3143         (WebInspector.RecordingNavigationSidebarPanel.prototype.set recording):
3144         (WebInspector.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
3145         (WebInspector.RecordingNavigationSidebarPanel.prototype.initialLayout):
3146         (WebInspector.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
3147         (WebInspector.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
3148         * UserInterface/Views/RecordingNavigationSidebarPanel.css: Added.
3149         (.sidebar > .panel.navigation.recording > :matches(.content, .empty-content-placeholder)):
3150         (.sidebar > .panel.navigation.recording > .content > .tree-outline):
3151         (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded):
3152         (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
3153         (body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
3154         (body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
3155         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before):
3156         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before):
3157         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before):
3158         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before):
3159         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before):
3160         (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before):
3161         (.sidebar > .panel.navigation.recording > .content .action > .icon):
3162         (.sidebar > .panel.navigation.recording > .content .action.function > .icon):
3163         (.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon):
3164         (.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon):
3165         (.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon):
3166         (.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon):
3167         (.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon):
3168         (.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon):
3169         (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon):
3170         (.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon):
3171         (body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon):
3172         (body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon):
3173         (.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)):
3174         (.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled):
3175         (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles .name,):
3176
3177         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js: Added.
3178         (WebInspector.RecordingStateDetailsSidebarPanel):
3179         (WebInspector.RecordingStateDetailsSidebarPanel.disallowInstanceForClass):
3180         (WebInspector.RecordingStateDetailsSidebarPanel.prototype.inspect):
3181         (WebInspector.RecordingStateDetailsSidebarPanel.prototype.set recording):
3182         (WebInspector.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
3183         (WebInspector.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
3184         * UserInterface/Views/RecordingStateDetailsSidebarPanel.css: Added.
3185         (.sidebar > .panel.details.recording-state > .content > .data-grid):
3186         (.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
3187         (.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected).non-standard):
3188         (.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected) .unavailable):
3189
3190         * UserInterface/Views/RecordingActionTreeElement.js: Added.
3191         (WebInspector.RecordingActionTreeElement):
3192         (WebInspector.RecordingActionTreeElement._generateDOM):
3193         (WebInspector.RecordingActionTreeElement.prototype.get index):
3194         (WebInspector.RecordingActionTreeElement.get filterableData):
3195         (WebInspector.RecordingActionTreeElement.prototype.get filterableData):
3196         (WebInspector.RecordingActionTreeElement.prototype.onattach):
3197         (WebInspector.RecordingActionTreeElement.prototype.populateContextMenu):
3198
3199         * UserInterface/Base/Main.js:
3200         (WebInspector.contentLoaded):
3201         (WebInspector.instanceForClass):
3202
3203         * UserInterface/Base/FileUtilites.js: Added.
3204         (WebInspector.saveDataToFile): Moved from UserInterface/Base/Main.js
3205         (WebInspector.loadDataFromFile):
3206
3207         * UserInterface/Views/ButtonNavigationItem.js:
3208         (WebInspector.ButtonNavigationItem.prototype._mouseClicked):
3209         Send the native event as part of the data.
3210
3211         * UserInterface/Views/CanvasContentView.js:
3212         (WebInspector.CanvasContentView):
3213         (WebInspector.CanvasContentView.prototype.get navigationItems):
3214         (WebInspector.CanvasContentView.prototype.initialLayout):
3215         (WebInspector.CanvasContentView.prototype.closed):
3216         (WebInspector.CanvasContentView.prototype._toggleRecording):
3217         (WebInspector.CanvasContentView.prototype._recordingFinished):
3218         * UserInterface/Views/CanvasContentView.css:
3219         (.content-view.canvas):
3220
3221         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
3222         (WebInspector.CanvasDetailsSidebarPanel.prototype.inspect):
3223
3224         * UserInterface/Views/ContentBrowser.js:
3225         (WebInspector.ContentBrowser):
3226         (WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
3227         * UserInterface/Views/ContentBrowserTabContentView.js:
3228         (WebInspector.ContentBrowserTabContentView):
3229         * UserInterface/Views/ContentView.js:
3230         (WebInspector.ContentView.createFromRepresentedObject):
3231         (WebInspector.ContentView.isViewable):
3232         * UserInterface/Views/ScrubberNavigationItem.js: Added.
3233         (WebInspector.ScrubberNavigationItem):
3234         (WebInspector.ScrubberNavigationItem.prototype.get value):
3235         (WebInspector.ScrubberNavigationItem.prototype.set value):
3236         (WebInspector.ScrubberNavigationItem.prototype.get min):
3237         (WebInspector.ScrubberNavigationItem.prototype.set min):
3238         (WebInspector.ScrubberNavigationItem.prototype.get max):
3239         (WebInspector.ScrubberNavigationItem.prototype.set max):
3240         (WebInspector.ScrubberNavigationItem.prototype.set disabled):
3241         (WebInspector.ScrubberNavigationItem.prototype.get additionalClassNames):
3242         (WebInspector.ScrubberNavigationItem.prototype._sliderChanged):
3243         * UserInterface/Views/ScrubberNavigationItem.css: Added.
3244         (.navigation-bar .item.scrubber):
3245         (.navigation-bar .item.scrubber > input):
3246         (.navigation-bar .item.scrubber > input[disabled]):
3247         Allow the flexible space to be replaced with a navigation item at construction.
3248
3249         * UserInterface/Views/DataGridNode.js:
3250         (WebInspector.DataGridNode):
3251         (WebInspector.DataGridNode.prototype.get element):
3252         Allow a list of CSS classes to be added to the node's element.
3253
3254         * UserInterface/Views/SettingsTabContentView.js:
3255         (WebInspector.SettingsTabContentView.prototype.initialLayout):
3256         (WebInspector.SettingsTabContentView.prototype._createExperimentalSettingsView.listenForChange):
3257         (WebInspector.SettingsTabContentView.prototype._createExperimentalSettingsView):
3258         (WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
3259         Move experimental settings to their own panel.
3260
3261         * UserInterface/Views/TabContentView.js:
3262         (WebInspector.TabContentView.prototype.get navigationSidebarPanel):
3263         Save the NavigationSidebarPanel after it's constructed.
3264
3265         * UserInterface/Base/Utilities.js:
3266         (Number.countDigits):
3267
3268         * UserInterface/Images/Recording.svg: Added.
3269         * UserInterface/Images/RenderingFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordRenderingFrame.svg.
3270         * UserInterface/Images/gtk/RenderingFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/TimelineRecordRenderingFrame.svg.
3271         * UserInterface/Views/TimelineIcons.css:
3272         (.rendering-frame-record .icon):
3273
3274         * UserInterface/Views/DOMTreeOutline.css:
3275         (@keyframes node-state-changed):
3276         * UserInterface/Views/Main.css:
3277         (:matches(img, canvas).show-grid):
3278         (img.show-grid): Deleted.
3279         * UserInterface/Views/NavigationBar.css:
3280         (.navigation-bar):
3281         * UserInterface/Views/NetworkSidebarPanel.css:
3282         (.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content > .tree-outline):
3283         * UserInterface/Views/TimelineTabContentView.css:
3284         (.timeline.tab.content-view .navigation-bar > .item.radio):
3285         * UserInterface/Views/TimelineView.css:
3286         (.panel.navigation.timeline.timeline-recording-content-view-showing > .content > .tree-outline):
3287         * UserInterface/Views/Variables.css:
3288         (:root):
3289         Create CSS variables for the DOM modification flash color and the color striping.
3290
3291 2017-07-28  Devin Rousso  <drousso@apple.com>
3292
3293         Web Inspector: Cleanup unused/invalid parameters for TreeElements
3294         https://bugs.webkit.org/show_bug.cgi?id=173987
3295
3296         Reviewed by Brian Burg.
3297
3298         * UserInterface/Views/TreeElement.js:
3299         * UserInterface/Views/GeneralTreeElement.js:
3300
3301         * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
3302         * UserInterface/Views/BreakpointTreeElement.js:
3303         * UserInterface/Views/CSSStyleSheetTreeElement.js:
3304         * UserInterface/Views/CallFrameTreeElement.js:
3305         * UserInterface/Views/ContentFlowTreeElement.js:
3306         * UserInterface/Views/DOMNodeTreeElement.js:
3307         * UserInterface/Views/DatabaseTableTreeElement.js:
3308         * UserInterface/Views/DatabaseTreeElement.js:
3309         * UserInterface/Views/FolderTreeElement.js:
3310         * UserInterface/Views/FolderizedTreeElement.js:
3311         * UserInterface/Views/FrameTreeElement.js:
3312         * UserInterface/Views/IndexedDatabaseObjectStoreIndexTreeElement.js:
3313         * UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:
3314         * UserInterface/Views/IndexedDatabaseTreeElement.js:
3315         * UserInterface/Views/IssueTreeElement.js:
3316         * UserInterface/Views/ObjectTreeBaseTreeElement.js:
3317         * UserInterface/Views/ProfileNodeTreeElement.js:
3318         * UserInterface/Views/ResourceTreeElement.js:
3319         * UserInterface/Views/ScriptTreeElement.js:
3320         * UserInterface/Views/SearchResultTreeElement.js:
3321         * UserInterface/Views/SourceCodeTreeElement.js:
3322         * UserInterface/Views/SourceMapResourceTreeElement.js:
3323         * UserInterface/Views/StorageTreeElement.js:
3324         * UserInterface/Views/TimelineRecordTreeElement.js:
3325         * UserInterface/Views/TypeTreeElement.js:
3326
3327 2017-07-26  Devin Rousso  <drousso@apple.com>
3328
3329         Uncaught Exception: undefined is not an object (evaluating 'this._memoryRow.value = Number.bytesToString(this._canvas.memoryCost)')
3330         https://bugs.webkit.org/show_bug.cgi?id=174823
3331
3332         Reviewed by Joseph Pecoraro.
3333
3334         * UserInterface/Views/CanvasDetailsSidebarPanel.js: