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