Web Inspector: Styles Redesign: make selector field inline-block when editing
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2017-11-13  Nikita Vasilyev  <nvasilyev@apple.com>
2
3         Web Inspector: Styles Redesign: make selector field inline-block when editing
4         https://bugs.webkit.org/show_bug.cgi?id=179588
5         <rdar://problem/35490915>
6
7         Reviewed by Brian Burg.
8
9         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
10         (.spreadsheet-css-declaration .header.editing-selector .origin):
11         When the selector field is multiline, it covers the source link entirely.
12         When the selector field takes only one line, the source link remains where it was before editing.
13
14         (.spreadsheet-css-declaration .selector):
15         Make it `position: relative` to cover the source link.
16
17         (.spreadsheet-css-declaration .selector.spreadsheet-selector-field.editing):
18         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
19         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
20
21 2017-11-13  Joseph Pecoraro  <pecoraro@apple.com>
22
23         REGRESSION(r223856): Web Inspector: Cannot view Request Data
24         https://bugs.webkit.org/show_bug.cgi?id=179567
25
26         Reviewed by Brian Burg.
27
28         * UserInterface/Views/ResourceClusterContentView.js:
29         (WI.ResourceClusterContentView.prototype._canShowRequestContentView):
30         This condition unintentionally got flipped in r223856.
31
32 2017-11-13  Matt Baker  <mattbaker@apple.com>
33
34         Web Inspector: Add CheckboxNavigationItem
35         https://bugs.webkit.org/show_bug.cgi?id=179584
36         <rdar://problem/35490085>
37
38         Reviewed by Brian Burg.
39
40         * UserInterface/Main.html:
41         * UserInterface/Views/ButtonNavigationItem.css:
42         (.navigation-bar .item.button.text-only.checkbox):
43         (.navigation-bar .item.button.text-only.checkbox label):
44
45         * UserInterface/Views/ButtonNavigationItem.js:
46         Cleanup and some tweaks to the label to make it work with subclasses
47         regardless of how label is represented in the DOM.
48
49         (WI.ButtonNavigationItem):
50         (WI.ButtonNavigationItem.prototype.get toolTip):
51         (WI.ButtonNavigationItem.prototype.set toolTip):
52         (WI.ButtonNavigationItem.prototype.get label):
53         (WI.ButtonNavigationItem.prototype.set label):
54         (WI.ButtonNavigationItem.prototype.set image):
55         (WI.ButtonNavigationItem.prototype.get enabled):
56         (WI.ButtonNavigationItem.prototype.set enabled):
57         (WI.ButtonNavigationItem.prototype.updateButtonText):
58
59         * UserInterface/Views/CheckboxNavigationItem.js: Added.
60         New button item with a checkbox and label. Dispatches a Clicked evennt
61         whenever the checked state changes.
62
63         (WI.CheckboxNavigationItem):
64         (WI.CheckboxNavigationItem.prototype.get checked):
65         (WI.CheckboxNavigationItem.prototype.set checked):
66         (WI.CheckboxNavigationItem.prototype.get additionalClassNames):
67         (WI.CheckboxNavigationItem.prototype.updateButtonText):
68         (WI.CheckboxNavigationItem.prototype._checkboxChanged):
69
70 2017-11-13  Joseph Pecoraro  <pecoraro@apple.com>
71
72         Web Inspector: Give DataGrid/Table Header ContextMenu a section header to better describe its functions
73         https://bugs.webkit.org/show_bug.cgi?id=179560
74
75         Reviewed by Matt Baker.
76
77         * Localizations/en.lproj/localizedStrings.js:
78         New string.
79
80         * UserInterface/Views/DataGrid.js:
81         (WI.DataGrid.prototype._contextMenuInHeader):
82         * UserInterface/Views/Table.js:
83         (WI.Table.prototype._handleHeaderContextMenu):
84         Include a disabled context menu item as a section header.
85
86 2017-11-12  Carlos Garcia Campos  <cgarcia@igalia.com>
87
88         REGRESSION(r224566): [GTK] 26 new timeouts on inspector related tests.
89         https://bugs.webkit.org/show_bug.cgi?id=179471
90
91         Reviewed by Darin Adler.
92
93         TestStub.html and TestStub.js was missing in resources bundle.
94
95         * Scripts/copy-user-interface-resources.pl: Also combine resources for TestStub.
96
97 2017-11-11  Joseph Pecoraro  <pecoraro@apple.com>
98
99         Web Inspector: Network detail views - Include a newline between sections when copying
100         https://bugs.webkit.org/show_bug.cgi?id=179577
101
102         Reviewed by Matt Baker.
103
104         * UserInterface/Views/NetworkResourceDetailView.css:
105         (.content-view.resource-details):
106         * UserInterface/Views/ResourceDetailsSection.css:
107         (.resource-details > section):
108         (.resource-details > section > .title):
109         Adjust styles now that there is a <br> taking up space between sections.
110         After all the changes, the top section moved up 1px from where it was originally.
111
112         * UserInterface/Views/ResourceDetailsSection.js:
113         (WI.ResourceDetailsSection):
114         Include a <br> to get newlines when copying.
115
116 2017-11-11  Joseph Pecoraro  <pecoraro@apple.com>
117
118         Web Inspector: Network waterfall graph - make connection part thinner
119         https://bugs.webkit.org/show_bug.cgi?id=179561
120
121         Reviewed by Devin Rousso.
122
123         * UserInterface/Views/NetworkTableContentView.css:
124         (.waterfall .block):
125
126 2017-11-11  Devin Rousso  <webkit@devinrousso.com>
127
128         Web Inspector: Canvas tab: show detailed status during canvas recording
129         https://bugs.webkit.org/show_bug.cgi?id=178185
130         <rdar://problem/34939862>
131
132         Reviewed by Brian Burg.
133
134         * Localizations/en.lproj/localizedStrings.js:
135
136         * UserInterface/Protocol/CanvasObserver.js:
137         (WI.CanvasObserver.prototype.recordingProgress):
138         * UserInterface/Controllers/CanvasManager.js:
139         (WI.CanvasManager):
140         (WI.CanvasManager.prototype.recordingProgress):
141         (WI.CanvasManager.prototype.recordingFinished):
142         Maintain arrays of recorded frames for each canvas and add new frames each time a progress
143         event is fired. When the recording is finished, use the array as part of the payload for
144         creating a WI.Recording object.
145
146         * UserInterface/Models/Recording.js:
147         (WI.Recording.fromPayload):
148
149         * UserInterface/Models/RecordingAction.js:
150         (WI.RecordingAction.prototype.apply.getContent):
151         (WI.RecordingAction.prototype.apply):
152         Drive-by fix: toDataURL is very slow, so add alternative ways of getting and comparing the
153         content of the canvas to determine if the action has a visible effect.
154
155         * UserInterface/Views/CanvasContentView.css:
156         (.content-view.canvas:not(.tab)):
157         (.content-view.canvas:not(.tab) > .progress):
158         (.content-view.canvas:not(.tab) > .progress > .frame-count):
159         * UserInterface/Views/CanvasContentView.js:
160         (WI.CanvasContentView):
161         (WI.CanvasContentView.prototype.attached):
162         (WI.CanvasContentView.prototype._recordingStarted):
163         (WI.CanvasContentView.prototype._recordingProgress):
164         (WI.CanvasContentView.prototype._recordingStopped):
165         Steal some space from the preview area to display a count of the number of recorded frames
166         and the current buffer usage.
167
168         * UserInterface/Views/CanvasOverviewContentView.css:
169         (.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)):
170         (.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),):
171         (.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)):
172         (.content-view.canvas-overview .content-view.canvas > .preview):
173         (.content-view.canvas-overview .content-view.canvas > .progress ~ .preview):
174         (.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)): Deleted.
175         (.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, footer),): Deleted.
176
177 2017-11-09  Nikita Vasilyev  <nvasilyev@apple.com>
178
179         Web Inspector: Styles Redesign: clicking on inline swatches and property checkboxes should not add a new property
180         https://bugs.webkit.org/show_bug.cgi?id=179507
181         <rdar://problem/35452204>
182
183         Reviewed by Brian Burg.
184
185         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
186         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
187         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
188         Don't add new properties when clicking on selector fields, source links, and property checkboxes.
189
190         * UserInterface/Views/SpreadsheetStyleProperty.js:
191         (WI.SpreadsheetStyleProperty.prototype._update):
192         It is safe to replace "change" event with "click" since it fires even when pressing Space key when the checkbox is focused.
193
194 2017-11-09  Devin Rousso  <webkit@devinrousso.com>
195
196         Web Inspector: support undo/redo of insertAdjacentHTML
197         https://bugs.webkit.org/show_bug.cgi?id=179283
198
199         Reviewed by Joseph Pecoraro.
200
201         * UserInterface/Models/DOMNode.js:
202         (WI.DOMNode.prototype.insertAdjacentHTML):
203
204         * UserInterface/Views/DOMTreeElement.js:
205         (WI.DOMTreeElement.prototype._startEditingAsHTML):
206         Drive-by: only attempt to update the cursor if an initialValue is supplied.
207
208 2017-11-09  Joseph Pecoraro  <pecoraro@apple.com>
209
210         Web Inspector: Make domain availability a list of types instead of a single type
211         https://bugs.webkit.org/show_bug.cgi?id=179457
212
213         Reviewed by Brian Burg.
214
215         * UserInterface/Protocol/InspectorBackend.js:
216         (InspectorBackendClass.prototype.activateDomain):
217         The second value changed to be an optional list. Check if the active
218         debuggable type is in the list or not.
219
220         * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
221         * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
222         * UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
223         * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
224         * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
225         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
226         * Versions/Inspector-iOS-10.0.json:
227         * Versions/Inspector-iOS-10.3.json:
228         * Versions/Inspector-iOS-11.0.json:
229         * Versions/Inspector-iOS-8.0.json:
230         * Versions/Inspector-iOS-9.0.json:
231         * Versions/Inspector-iOS-9.3.json:
232         Since this is a change to how we generate the frontend resource,
233         update the legacy versioned backends and regenerate their resource.
234
235 2017-11-09  Carlos Garcia Campos  <cgarcia@igalia.com>
236
237         REGRESSION(r224566): [GTK][WPE] Many inspector tests are failing after r224566
238         https://bugs.webkit.org/show_bug.cgi?id=179419
239
240         Reviewed by Carlos Alberto Lopez Perez.
241
242         All of them fail with the following error:
243
244         Uncaught exception in Inspector page: ReferenceError: Can't find variable: CodeMirror [TestCombined.js:36658:15]
245
246         This is because Test.html, even when combined, is trying to load CodeMirror from External/CodeMirror, but
247         CodeMirror was already combined for Main.html. We need to also combine CodeMirror for Test.html.
248
249         * Scripts/copy-user-interface-resources.pl:
250
251 2017-11-08  Joseph Pecoraro  <pecoraro@apple.com>
252
253         Web Inspector: Show Internal properties of PaymentRequest in Web Inspector Console
254         https://bugs.webkit.org/show_bug.cgi?id=179276
255
256         Reviewed by Andy Estes.
257
258         * UserInterface/Test.html:
259         * UserInterface/Test/FrontendTestHarness.js:
260         (FrontendTestHarness.prototype.evaluateInPage):
261         * UserInterface/Test/TestUtilities.js: Added.
262         (promisify):
263         Make async tests a little easier to work with by providing promises
264         in some cases that would normally take a callback.
265
266 2017-11-08  Brian Burg  <bburg@apple.com>
267
268         Web Inspector: fix incorrect curly quote orientation in a UIString
269         https://bugs.webkit.org/show_bug.cgi?id=179353
270         <rdar://problem/35368697>
271
272         Reviewed by Joseph Pecoraro.
273
274         I didn't see any other instances of this mistake in our localized strings.
275
276         * Localizations/en.lproj/localizedStrings.js:
277         * UserInterface/Views/ResourceTimelineDataGridNode.js:
278         Fix it.
279
280 2017-11-08  Joseph Pecoraro  <pecoraro@apple.com>
281
282         Web Inspector: Remove unused Page.ScriptIdentifier protocol type
283         https://bugs.webkit.org/show_bug.cgi?id=179407
284
285         Reviewed by Matt Baker.
286
287         * Versions/Inspector-iOS-10.0.json:
288         * Versions/Inspector-iOS-10.3.json:
289         * Versions/Inspector-iOS-11.0.json:
290         * Versions/Inspector-iOS-7.0.json:
291         * Versions/Inspector-iOS-8.0.json:
292         * Versions/Inspector-iOS-9.0.json:
293         * Versions/Inspector-iOS-9.3.json:
294         Remove unused protocol type.
295
296 2017-11-06  Nikita Vasilyev  <nvasilyev@apple.com>
297
298         Web Inspector: Styles Redesign: Display warnings
299         https://bugs.webkit.org/show_bug.cgi?id=179215
300
301         Reviewed by Brian Burg.
302
303         Display warning icons on the right of the property.
304
305         For now, the warning icons have only three title messages:
306         - Invalid property name;
307         - Invalid property value;
308         - Duplicate property.
309
310         * Localizations/en.lproj/localizedStrings.js:
311         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
312         (.spreadsheet-style-declaration-editor .property):
313         (.spreadsheet-style-declaration-editor .property-toggle):
314         (.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
315         (.spreadsheet-style-declaration-editor .property.has-warning):
316         (.spreadsheet-style-declaration-editor .property .warning):
317         Draw the warning arrow and icon using only one HTML element.
318         Don't set "top" property so the element remains vertically where it would be if it had "position: static".
319
320         (.spreadsheet-style-declaration-editor .property.has-warning .warning):
321         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
322         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
323         (WI.SpreadsheetCSSStyleDeclarationEditor):
324         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
325         (.spreadsheet-css-declaration):
326         (.spreadsheet-css-declaration :matches(.header, .header-media)):
327         (.spreadsheet-css-declaration .close-brace):
328         Make properties span the entire width of the styles sidebar. Unsupported properties have yellow
329         background. There should be no gaps between the property element and sidebar left and right edges.
330
331         * UserInterface/Views/SpreadsheetStyleProperty.js:
332         (WI.SpreadsheetStyleProperty):
333         (WI.SpreadsheetStyleProperty.prototype.updateStatus):
334         (WI.SpreadsheetStyleProperty.prototype._update):
335         (WI.SpreadsheetStyleProperty.prototype.updateClassNames): Deleted.
336         Rename updateClassNames to updateStatus since it modifies title attribute of the warning element.
337
338 2017-11-06  Ross Kirsling  <ross.kirsling@sony.com>
339
340         Web Inspector: Two little Layers tab fixes
341         https://bugs.webkit.org/show_bug.cgi?id=179273
342
343         Reviewed by Devin Rousso.
344
345         * UserInterface/Views/LayerDetailsSidebarPanel.js:
346         (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
347         Even when we suppress refire of the selected event, we still want a popover.
348
349         * UserInterface/Views/Layers3DContentView.js:
350         (WI.Layers3DContentView):
351         (WI.Layers3DContentView.prototype.shown):
352         (WI.Layers3DContentView.prototype.hidden):
353         (WI.Layers3DContentView.prototype.closed):
354         (WI.Layers3DContentView.prototype._layerTreeDidChange):
355         Opening WI directly to the Layers tab wasn't fetching layers right away. Let's fetch on every shown() and
356         prune the hacky logic we were previously using -- it's overkill anyway, now that we're tracking mutations.
357
358 2017-11-06  Joseph Pecoraro  <pecoraro@apple.com>
359
360         Web Inspector: no way to navigate from Resource tree element to its entry in Network Tab
361         https://bugs.webkit.org/show_bug.cgi?id=179328
362         <rdar://problem/35367294>
363
364         Reviewed by Brian Burg.
365
366         * Localizations/en.lproj/localizedStrings.js:
367         New reveal in network tab string.
368
369         * UserInterface/Base/Main.js:
370         (WI.isShowingNetworkTab):
371         Utility to know if the network tab is showing.
372
373         * UserInterface/Views/ContextMenuUtilities.js:
374         (WI.appendContextMenuItemsForSourceCode):
375         (showResourceWithOptions):
376         (WI.appendContextMenuItemsForURL):
377         Generalize context menus for just a URL.
378
379         * UserInterface/Views/TabBrowser.js:
380         (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
381         Support more tab ignore options, this is starting to get icky. We may want to
382         move to just a preferredTab approach, since that is what some of these want.
383
384         * UserInterface/Views/DOMTreeElement.js:
385         (WI.DOMTreeElement.prototype._populateTagContextMenu):
386         Make use of new ContextMenu utility to add menu items for a URL.
387
388         * UserInterface/Views/NetworkTabContentView.js:
389         (WI.NetworkTabContentView.prototype.showRepresentedObject):
390         * UserInterface/Views/NetworkTableContentView.js:
391         (WI.NetworkTableContentView.prototype.showRepresentedObject):
392         Handle showing a Resource in the NetworkTab. We immediately show
393         the details view for it, otherwise we fallback to the list view.
394
395 2017-11-06  Joseph Pecoraro  <pecoraro@apple.com>
396
397         Uncaught Exception: TypeError: null is not an object (evaluating 'mimeType.endsWith')
398         https://bugs.webkit.org/show_bug.cgi?id=179325
399         <rdar://problem/35366896>
400
401         Reviewed by Brian Burg.
402
403         * UserInterface/Base/MIMETypeUtilities.js:
404         (WI.fileExtensionForMIMEType):
405         (WI.shouldTreatMIMETypeAsText):
406         Handle null mime types.
407
408 2017-11-06  Joseph Pecoraro  <pecoraro@apple.com>
409
410         Web Inspector: Selecting a DOM Search Result in Search Tab unexpectedly changes Tabs
411         https://bugs.webkit.org/show_bug.cgi?id=179223
412         <rdar://problem/33949556>
413
414         Reviewed by Devin Rousso.
415
416         * Localizations/en.lproj/localizedStrings.js:
417         New string.
418
419         * UserInterface/Views/SearchResultTreeElement.js:
420         (WI.SearchResultTreeElement.prototype.populateContextMenu):
421         Add a context menu for search results to jump to a different tab.
422         These behaviors match the double click behavior for search results.
423
424         * UserInterface/Views/SearchTabContentView.js:
425         (WI.SearchTabContentView.prototype.canShowRepresentedObject):
426         Always support showing a DOM Tree. Clients should be using
427         ignoreSearchTab if they don't want to jump here.
428
429         * UserInterface/Views/DOMTreeDataGridNode.js:
430         (WI.DOMTreeDataGridNode.prototype._goToArrowWasClicked):
431         * UserInterface/Views/LayerTreeDataGridNode.js:
432         (WI.LayerTreeDataGridNode.prototype._goToArrowWasClicked):
433         Use ignoreSearchTab just in case when showing a DOM Tree.
434
435         * UserInterface/Views/ContentBrowser.js:
436         (WI.ContentBrowser.prototype.shown):
437         When showing, update our UI to reflect the values of the current content view, which
438         for a while may have been owned by another ContentBrowser.
439
440         (WI.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
441         (WI.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
442         (WI.ContentBrowser.prototype._contentViewNavigationItemsDidChange):
443         We can avoid work in a few places where we might not be the owning ContentBrowser
444         of a ContentView that is changing.
445
446 2017-11-05  Nikita Vasilyev  <nvasilyev@apple.com>
447
448         REGRESSION (r221338): Web Inspector: NavigationBar incorrectly calculates minimumWidth
449         https://bugs.webkit.org/show_bug.cgi?id=179292
450
451         Reviewed by Devin Rousso.
452
453         * UserInterface/Views/NavigationBar.js:
454         (WI.NavigationBar.prototype._calculateMinimumWidth):
455         totalItemWidth was the minimumWidth of the last item.
456
457 2017-11-05  Devin Rousso  <webkit@devinrousso.com>
458
459         Web Inspector: Canvas Tab: selecting Frame tree element should update preview/slider, does nothing
460         https://bugs.webkit.org/show_bug.cgi?id=179072
461         <rdar://problem/35278711>
462
463         Reviewed by Matt Baker.
464
465         * UserInterface/Views/CanvasTabContentView.js:
466         (WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
467
468         * UserInterface/Views/RecordingActionTreeElement.css:
469         (.item.action > .titles .parameter.swizzled):
470         (.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon): Deleted.
471         (body:not(.window-inactive, .window-docked-inactive) .item.action > .titles .parameter.swizzled): Deleted.
472         Drive-by: remove extra :focus selectors to prevent icon flashing when the window is blurred.
473
474 2017-11-04  Devin Rousso  <webkit@devinrousso.com>
475
476         Web Inspector: add contextmenu item to arbitrarily add HTML/Child to DOMTree
477         https://bugs.webkit.org/show_bug.cgi?id=179042
478
479         Reviewed by Joseph Pecoraro.
480
481         * Localizations/en.lproj/localizedStrings.js:
482
483         * UserInterface/Models/DOMNode.js:
484         (WI.DOMNode.prototype.insertAdjacentHTML.inspectedPage_node_insertAdjacentHTML):
485         (WI.DOMNode.prototype.insertAdjacentHTML):
486         Call-through to `insertAdjacentHTML` on the corresponding node in the inspected page.
487
488         * UserInterface/Views/DOMTreeElement.js:
489         (WI.DOMTreeElement):
490         (WI.DOMTreeElement.prototype._populateNodeContextMenu):
491         (WI.DOMTreeElement.prototype._startEditingAsHTML.dispose):
492         (WI.DOMTreeElement.prototype._startEditingAsHTML):
493         (WI.DOMTreeElement.prototype._insertAdjacentHTML.commitCallback):
494         (WI.DOMTreeElement.prototype._insertAdjacentHTML):
495         (WI.DOMTreeElement.prototype.updateTitle):
496         (WI.DOMTreeElement.prototype._singleTextChild):
497         (WI.DOMTreeElement.prototype._nodeTitleInfo):
498         (WI.DOMTreeElement.prototype._addHTML):
499         (WI.DOMTreeElement.prototype._addPreviousSibling):
500         (WI.DOMTreeElement.prototype._addNextSibling):
501         (WI.DOMTreeElement.prototype._editAsHTML):
502         Adjust where the editing element is placed depending on the options passed to `_editAsHTML`.
503         If the placement is as a child, put it inside the child list. If the placement is as a
504         sibling, place it before/after the selected TreeElement. Otherwise, add it as a child.
505
506         * UserInterface/Views/DOMTreeOutline.css:
507         (.tree-outline.dom):
508         (.tree-outline.dom li):
509         (.tree-outline.dom li:not(.editing)):
510         (.tree-outline.dom li.editing):
511         (body[dir=ltr] .tree-outline.dom li): Deleted.
512         (body[dir=rtl] .tree-outline.dom li): Deleted.
513         Don't add padding when the list item is being edited.
514
515 2017-11-03  Nikita Vasilyev  <nvasilyev@apple.com>
516
517         Web Inspector: Uncaught Exception: null is not an object (evaluating 'selector.specificity.map') (at SpreadsheetCSSStyleDeclarationSection.js:199:51)
518         https://bugs.webkit.org/show_bug.cgi?id=179225
519         <rdar://problem/35329019>
520
521         Reviewed by Joseph Pecoraro.
522
523         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
524         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
525         selector.specificity may not exist when the selector is dynamic and doesn't match the selected element.
526
527 2017-11-03  Ross Kirsling  <ross.kirsling@sony.com>
528
529         Web Inspector: Move Show Compositing Borders/Paint Flashing buttons from Elements tab to Layers tab
530         https://bugs.webkit.org/show_bug.cgi?id=179211
531
532         Reviewed by Joseph Pecoraro.
533
534         * UserInterface/Views/DOMTreeContentView.js:
535         (WI.DOMTreeContentView.prototype.get navigationItems):
536         (WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings):
537         Guard old buttons with experimental flag.
538
539         * UserInterface/Views/Layers3DContentView.js:
540         (WI.Layers3DContentView):
541         (WI.Layers3DContentView.prototype.get navigationItems):
542         (WI.Layers3DContentView.prototype.shown):
543         (WI.Layers3DContentView.prototype.closed):
544         (WI.Layers3DContentView.prototype._showPaintRectsSettingChanged):
545         (WI.Layers3DContentView.prototype._togglePaintFlashing):
546         (WI.Layers3DContentView.prototype._updateCompositingBordersButtonState):
547         (WI.Layers3DContentView.prototype._toggleCompositingBorders):
548         Add buttons to new home.
549         No need to guard for get/setCompositingBordersVisible anymore, as these were introduced in iOS 7.
550
551 2017-11-03  Devin Rousso  <webkit@devinrousso.com>
552
553         Web Inspector: move top-level namespace functions in ImageUtilities to static class
554         https://bugs.webkit.org/show_bug.cgi?id=179207
555
556         Reviewed by Brian Burg.
557
558         * .eslintrc:
559         * UserInterface/Base/ImageUtilities.js:
560         (WI.ImageUtilities.useSVGSymbol):
561         (WI.ImageUtilities.scratchCanvasContext2D):
562         (WI.ImageUtilities.imageFromImageData):
563         (WI.ImageUtilities.imageFromCanvasGradient):
564         (WI.ImageUtilities):
565         (useSVGSymbol): Deleted.
566         (WI.scratchCanvasContext2D): Deleted.
567         (WI.imageFromImageData): Deleted.
568         (WI.imageFromCanvasGradient): Deleted.
569
570         * UserInterface/Models/Recording.js:
571         (WI.Recording.prototype.async swizzle):
572         * UserInterface/Views/ButtonNavigationItem.js:
573         (WI.ButtonNavigationItem.prototype.set image):
574         * UserInterface/Views/CallFrameTreeElement.js:
575         (WI.CallFrameTreeElement.prototype._updateStatus):
576         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
577         (WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
578         * UserInterface/Views/DOMTreeElement.js:
579         (WI.DOMTreeElement.prototype._updateBreakpointStatus):
580         * UserInterface/Views/MultipleScopeBarItem.js:
581         (WI.MultipleScopeBarItem):
582         * UserInterface/Views/RecordingActionTreeElement.js:
583         (WI.RecordingActionTreeElement._generateDOM):
584         (WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):
585         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
586         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
587         * UserInterface/Views/ResourceMetricsContentView.js:
588         (WI.ResourceMetricsContentView.prototype._refreshResourceSizeSection):
589         * UserInterface/Views/ScopeRadioButtonNavigationItem.js:
590         (WI.ScopeRadioButtonNavigationItem):
591         * UserInterface/Views/ThreadTreeElement.js:
592         (WI.ThreadTreeElement.prototype._updateStatus):
593         * UserInterface/Views/TimelineTreeElement.js:
594         (WI.TimelineTreeElement.prototype._showCloseButton):
595         * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
596         (WI.VisualStyleCommaSeparatedKeywordEditor):
597         * UserInterface/Views/VisualStyleKeywordIconList.js:
598         (WI.VisualStyleKeywordIconList):
599         * UserInterface/Views/VisualStylePropertyEditorLink.js:
600         (WI.VisualStylePropertyEditorLink):
601         * UserInterface/Views/VisualStyleSelectorSection.js:
602         (WI.VisualStyleSelectorSection):
603         * UserInterface/Views/WebSocketDataGridNode.js:
604         (WI.WebSocketDataGridNode.prototype.createCellContent):
605
606 2017-11-03  Ross Kirsling  <ross.kirsling@sony.com>
607
608         Web Inspector: Hide legacy Layers sidebar on Search tab
609         https://bugs.webkit.org/show_bug.cgi?id=179257
610
611         Reviewed by Joseph Pecoraro.
612
613         * UserInterface/Views/SearchTabContentView.js:
614         (WI.SearchTabContentView):
615
616 2017-11-03  Joseph Pecoraro  <pecoraro@apple.com>
617
618         Web Inspector: Network Table - Include a secure lock indicator in the domain column
619         https://bugs.webkit.org/show_bug.cgi?id=179233
620         <rdar://problem/34070883>
621
622         Reviewed by Devin Rousso.
623
624         * UserInterface/Views/NetworkTableContentView.css:
625         (.network-table .cell.domain > .lock):
626         * UserInterface/Views/NetworkTableContentView.js:
627         (WI.NetworkTableContentView.prototype.tablePopulateCell):
628         (WI.NetworkTableContentView.prototype._populateDomainCell):
629         Add a small lock icon by the domain if the request was https/wss.
630
631 2017-11-03  Devin Rousso  <webkit@devinrousso.com>
632
633         Web Inspector: Canvas2D Profiling: highlight expensive context commands in the captured command log
634         https://bugs.webkit.org/show_bug.cgi?id=178302
635         <rdar://problem/33158849>
636
637         Reviewed by Brian Burg.
638
639         * UserInterface/Models/RecordingFrame.js:
640         (WI.RecordingFrame):
641         (WI.RecordingFrame.fromPayload):
642         (WI.RecordingFrame.prototype.get duration):
643         (WI.RecordingFrame.prototype.toJSON):
644
645         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
646         (WI.RecordingNavigationSidebarPanel.prototype.set recording):
647         * UserInterface/Views/RecordingNavigationSidebarPanel.css:
648         (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .status):
649
650 2017-11-02  Devin Rousso  <webkit@devinrousso.com>
651
652         Web Inspector: Canvas Tab: show supported GL extensions for selected canvas
653         https://bugs.webkit.org/show_bug.cgi?id=179070
654         <rdar://problem/35278276>
655
656         Reviewed by Brian Burg.
657
658         * Localizations/en.lproj/localizedStrings.js:
659
660         * UserInterface/Protocol/CanvasObserver.js:
661         (WI.CanvasObserver.prototype.extensionEnabled):
662
663         * UserInterface/Controllers/CanvasManager.js:
664         (WI.CanvasManager.prototype.extensionEnabled):
665
666         * UserInterface/Models/Canvas.js:
667         (WI.Canvas.prototype.get extensions):
668         (WI.Canvas.prototype.enableExtension):
669         Maintain a Set of enabled extensions, and dispatch an event whenever an extension is enabled.
670
671         * UserInterface/Views/CanvasDetailsSidebarPanel.css:
672         (.sidebar > .panel.details.canvas .details-section.canvas-extensions .content > ul):
673         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
674         (WI.CanvasDetailsSidebarPanel.prototype.set canvas):
675         (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
676         (WI.CanvasDetailsSidebarPanel.prototype.layout):
677         (WI.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):
678         (WI.CanvasDetailsSidebarPanel.prototype._refreshExtensionsSection):
679         Drive-by: hide Attributes section when the canvas has no attributes.
680
681 2017-11-02  Joseph Pecoraro  <pecoraro@apple.com>
682
683         Make ServiceWorker a Remote Inspector debuggable target
684         https://bugs.webkit.org/show_bug.cgi?id=179043
685         <rdar://problem/34126008>
686
687         Reviewed by Brian Burg.
688
689         Customize the Web Inspector frontend for a ServiceWorker target.
690         Currently this just behaves like a JavaScript Context target because
691         we haven't yet added support for Networking capabilities.
692
693         * UserInterface/Controllers/DebuggerManager.js:
694         (WI.DebuggerManager.prototype.get knownNonResourceScripts):
695         Drive-by fix a bug where lazily initializing the Resources / Debugger tabs
696         would show Console evaluation scripts. We should ignore them, like we
697         do in other places.
698
699         * Localizations/en.lproj/localizedStrings.js:
700         * UserInterface/Controllers/AppController.js:
701         (WI.AppController):
702         (WI.AppController.debuggableTypeFromHost):
703         * UserInterface/Controllers/AppControllerBase.js:
704         * UserInterface/Controllers/TimelineManager.js:
705         (WI.TimelineManager.defaultTimelineTypes):
706         (WI.TimelineManager.availableTimelineTypes):
707         * UserInterface/Models/TimelineRecording.js:
708         (WI.TimelineRecording.sourceCodeTimelinesSupported):
709         * UserInterface/Protocol/MainTarget.js:
710         (WI.MainTarget.prototype.get displayName):
711         * UserInterface/Test/TestAppController.js:
712         * UserInterface/Views/DashboardContainerView.css:
713         (body:not(.web) .toolbar .dashboard-container):
714         (body.javascript .toolbar .dashboard-container): Deleted.
715         * UserInterface/Views/DefaultDashboardView.css:
716         (body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)):
717         (body.javascript .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Deleted.
718         * UserInterface/Views/ResourceSidebarPanel.js:
719         (WI.ResourceSidebarPanel):
720         (WI.ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel):
721         (WI.ResourceSidebarPanel.prototype.initialLayout):
722         (WI.ResourceSidebarPanel.prototype._addScript):
723         (WI.ResourceSidebarPanel.prototype._extraDomainsActivated):
724         * UserInterface/Views/Toolbar.js:
725
726 2017-11-02  Devin Rousso  <webkit@devinrousso.com>
727
728         Web Inspector: Canvas: recording parameters that include an Image should show an InlineSwatch (2D canvas)
729         https://bugs.webkit.org/show_bug.cgi?id=177032
730
731         Reviewed by Brian Burg.
732
733         * Localizations/en.lproj/localizedStrings.js:
734
735         * UserInterface/Test.html:
736         * UserInterface/Base/ImageUtilities.js:
737         (WI.scratchCanvasContext2D):
738         Creates a static canvas that can be used for scratch purposes, such as converting ImageData
739         to an Image, or rendering the result of a CanvasGradient. The canvas is reset after each
740         call of the function so it can be reused by other callers.
741
742         (WI.imageFromImageData):
743         (WI.imageFromCanvasGradient):
744         Utility functions for getting a dataURL image of ImageData/CanvasGradient after drawing it
745         onto WI.scratchCanvasContext2D.
746
747         * UserInterface/Models/Recording.js:
748         (WI.Recording.prototype.async.swizzle):
749         Set the Image used to create a CanvasPattern as an expando property for later use.
750
751         * UserInterface/Models/RecordingAction.js:
752         (WI.RecordingAction.prototype.getImageParameters):
753
754         * UserInterface/Views/RecordingActionTreeElement.js:
755         (WI.RecordingActionTreeElement._generateDOM):
756         Add Image InlineSwatch elements for parameters that are viewable as an image. For ImageData
757         and CanvasGradient, WI.scratchCanvasContext2D is used to draw the ImageData/CanvasGradient
758         and get a dataURL to be used as the image.
759
760         (WI.RecordingActionTreeElement._createSwatchForColorParameters):
761         Drive-by: add checks that the parameter is not a CanvasGradient or CanvasPattern.
762
763         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
764         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
765         Add Image InlineSwatch elements for fillStyle/strokeStyle when the value is a CanvasGradient
766         or a CanvasPattern.
767
768         * UserInterface/Views/InlineSwatch.js:
769         (WI.InlineSwatch):
770         (WI.InlineSwatch.prototype._updateSwatch):
771         (WI.InlineSwatch.prototype._swatchElementClicked):
772         * UserInterface/Views/InlineSwatch.css:
773         (.inline-swatch):
774         (.inline-swatch:matches(.color, .gradient)):
775         (.inline-swatch:matches(.bezier, .spring, .variable)):
776         (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):hover):
777         (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):active):
778         (.inline-swatch:not(.read-only):active > span):
779         (.inline-swatch:matches(.bezier, .spring, .variable) > span):
780         (.inline-swatch.image > span):
781         (.inline-swatch:matches(.bezier, .spring, .variable):hover): Deleted.
782         (.inline-swatch:matches(.bezier, .spring, .variable):active): Deleted.
783         (.inline-swatch:active > span): Deleted.
784         (.inline-swatch:matches(.bezier, .spring) > span): Deleted.
785         Add Image type for showing previews of images.
786         Drive-by: simplify some styles.
787
788         * UserInterface/Views/RecordingActionTreeElement.css:
789         (.item.action > .titles .parameters > .inline-swatch):
790         (.tree-outline:matches(:focus, .force-focus) .item.action > .titles .parameters > .inline-swatch): Deleted.
791         Drive-by: remove the :focus requirement, as it would cause the InlineSwatch to shift when
792         the user clicked out of the WebInspector window.
793
794 2017-11-02  Joseph Pecoraro  <pecoraro@apple.com>
795
796         Inspector should display service worker served responses properly
797         https://bugs.webkit.org/show_bug.cgi?id=178597
798         <rdar://problem/35186111>
799
800         Reviewed by Brian Burg.
801
802         * Localizations/en.lproj/localizedStrings.js:
803         New Service Worker related strings.
804
805         * UserInterface/Controllers/HARBuilder.js:
806         (WI.HARBuilder.entry):
807         (WI.HARBuilder.timings):
808         Only output timing data when we have real resource timing data.
809
810         (WI.HARBuilder.fetchType):
811         Output a new string for a Service Worker load in our custom field.
812
813         * UserInterface/Models/ResourceTimingData.js:
814         (WI.ResourceTimingData.prototype.get responseStart):
815         Fallback further to the responseEnd. This can happen if the response
816         itself is an error/failure and there was no response, so treat it as
817         the same as response end.
818
819         * UserInterface/Models/Resource.js:
820         (WI.Resource.responseSourceFromPayload):
821         (WI.Resource.prototype.updateForRedirectResponse):
822         (WI.Resource.prototype.updateForResponse):
823         A fetch response won't change the URL, so if the URL is empty
824         don't change it from what the request's URL was.
825
826         (WI.Resource.prototype.hasResponse):
827         Failure is like finished. We should likely transition to an "isComplete" method.
828
829         * UserInterface/Views/NetworkTableContentView.js:
830         (WI.NetworkTableContentView.prototype._populateTransferSizeCell):
831         (WI.NetworkTableContentView.prototype._generateSortComparator):
832         Output "(service worker)" in the transfer size field, to indicate this came
833         from a Service worker. Sort such loads together.
834
835         * UserInterface/Views/ResourceHeadersContentView.js:
836         (WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
837         (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
838         Include the Service Worker response source in this details view. Also include
839         a FIXME, since we would like to link directly to the service worker in the future.
840
841 2017-11-02  Nikita Vasilyev  <nvasilyev@apple.com>
842
843         Web Inspector: Styles Redesign: turn on CSS spreadsheet editor by default
844         https://bugs.webkit.org/show_bug.cgi?id=179100
845         <rdar://problem/35285990>
846
847         Reviewed by Brian Burg.
848
849         Add a "Legacy Style Editor" checkbox and remove the experimental "Spreadsheet Style Editor" checkbox.
850
851         Remove settings of the legacy styles editor:
852         - Show inline warnings
853         - Automatically insert newline
854         - Select text on first click
855
856         These settings are not applicable for the spreadsheet styles editor and
857         now are always enabled for the legacy styles editor.
858
859         * Localizations/en.lproj/localizedStrings.js:
860         * UserInterface/Base/Setting.js:
861         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
862         (WI.CSSStyleDeclarationTextEditor):
863         (WI.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
864         (WI.CSSStyleDeclarationTextEditor.):
865         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
866         (WI.CSSStyleDetailsSidebarPanel):
867         * UserInterface/Views/SettingsTabContentView.js:
868         (WI.SettingsTabContentView.prototype._createGeneralSettingsView):
869         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
870
871 2017-11-01  Devin Rousso  <webkit@devinrousso.com>
872
873         Web Inspector: consolidate DOMTreeElement contextmenu items into submenus
874         https://bugs.webkit.org/show_bug.cgi?id=178996
875
876         Reviewed by Joseph Pecoraro.
877
878         * Localizations/en.lproj/localizedStrings.js:
879
880         * UserInterface/Views/ContextMenu.js:
881         (WI.ContextSubMenuItem.prototype.appendItem):
882         (WI.ContextSubMenuItem.prototype.appendSubMenuItem):
883         (WI.ContextSubMenuItem.prototype.appendCheckboxItem):
884         (WI.ContextSubMenuItem.prototype.pushItem):
885         (WI.ContextSubMenuItem.prototype._pushItem): Deleted.
886         Made `pushItem` public so that it is possible to create a ContextMenuItem without
887         immediately adding it to the ContextMenu.
888
889         (WI.ContextSubMenuItem.prototype._buildDescriptor):
890         (WI.ContextMenu.prototype._buildDescriptor):
891         Filter out submenus that have no items.
892
893         * UserInterface/Views/ContextMenuUtilities.js:
894         (WI.appendContextMenuItemsForDOMNode):
895         * UserInterface/Views/DOMTreeElement.js:
896         (WI.DOMTreeElement.prototype.toggleElementVisibility):
897         (WI.DOMTreeElement.prototype._populateTagContextMenu):
898         (WI.DOMTreeElement.prototype._populateTextContextMenu):
899         (WI.DOMTreeElement.prototype._populateNodeContextMenu):
900         (WI.DOMTreeElement.prototype._populateForcedPseudoStateItems): Deleted.
901         Add relevant items to the provided submenus and reorder the entire contextmenu for better
902         readability and consistency.
903
904         * UserInterface/Views/DOMTreeOutline.js:
905         (WI.DOMTreeOutline.prototype.populateContextMenu):
906         Create submenus for Add, Edit, Copy, and Delete, and pass them to the DOMTreeElement
907         "populate*ContextMenu" functions so that they can add items to each submenu.
908
909         (WI.DOMTreeOutline.prototype._hideElement):
910         Move to DOMTreeElement so that it can be used by a contextmenu item.
911
912 2017-11-01  Ross Kirsling  <ross.kirsling@sony.com>
913
914         Web Inspector: Improve UX of Layers tab visualization
915         https://bugs.webkit.org/show_bug.cgi?id=178966
916
917         Reviewed by Devin Rousso.
918
919         * UserInterface/Views/Layers3DContentView.js:
920         (WI.Layers3DContentView):
921         (WI.Layers3DContentView.prototype.initialLayout):
922         (WI.Layers3DContentView.prototype._canvasMouseDown):
923         (WI.Layers3DContentView.prototype._createLayerGroup): Renamed from _addLayerGroup.
924         (WI.Layers3DContentView.prototype._updateLayerGroupPosition): Merged into _updateLayers.
925         Set up zoom and pan.
926
927         (WI.Layers3DContentView.prototype._animate):
928         (WI.Layers3DContentView.prototype._restrictPan):
929         Restrict pan to bounding box on XY plane.
930
931         (WI.Layers3DContentView.prototype.layout):
932         (WI.Layers3DContentView.prototype._updateDocument):
933         (WI.Layers3DContentView.prototype._resetCamera):
934         On new document, throw out all old layers and center the camera on the new document layer.
935
936         (WI.Layers3DContentView.prototype.selectLayerById):
937         (WI.Layers3DContentView.prototype._centerOnSelection):
938         Recenter the camera when layer group selection is updated programmatically.
939
940         (WI.Layers3DContentView.prototype._updateLayers):
941         (WI.Layers3DContentView.prototype._createLayerMesh):
942         Fix visual artifact due to "depthWrite" flag.
943
944         * UserInterface/Views/LayerDetailsSidebarPanel.js:
945         (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
946         Suppress selection update event when the data grid selection is updated programmatically.
947
948         * UserInterface/Views/DataGridNode.js:
949         (WI.DataGridNode.prototype.revealAndSelect):
950         Allow forwarding of select()'s parameter.
951
952 2017-11-01  Joseph Pecoraro  <pecoraro@apple.com>
953
954         Web Inspector: Combine all storage icon files into a single file
955         https://bugs.webkit.org/show_bug.cgi?id=179134
956
957         Reviewed by Devin Rousso.
958
959         * UserInterface/Main.html:
960         * UserInterface/Views/CookieIcon.css: Removed.
961         * UserInterface/Views/DOMStorageIcons.css: Removed.
962         * UserInterface/Views/DatabaseIcon.css: Removed.
963         * UserInterface/Views/DatabaseTableIcon.css: Removed.
964         * UserInterface/Views/StorageIcons.css: Added.
965         (.application-cache-manifest .icon):
966         (.application-cache-frame .icon):
967         (.cookie-icon .icon):
968         (.local-storage-icon .icon):
969         (.session-storage-icon .icon):
970         (.database-icon .icon):
971         (.database-table-icon .icon):
972
973 2017-11-01  Nikita Vasilyev  <nvasilyev@apple.com>
974
975         Web Inspector: Styles Redesign: Hovering over a selector should highlight matching elements on the page
976         https://bugs.webkit.org/show_bug.cgi?id=179040
977
978         Reviewed by Devin Rousso.
979
980         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
981         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
982         Use mouseenter/mouseleave events instead of mousein/mouseout (as in the old styles sidebar)
983         to avoid unnecessary events being fired.
984
985         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._highlightNodesWithSelector):
986         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._hideDOMNodeHighlight):
987
988 2017-10-30  Nikita Vasilyev  <nvasilyev@apple.com>
989
990         Web Inspector: [PARITY] Styles Redesign: Ability to modify style attributes
991         https://bugs.webkit.org/show_bug.cgi?id=178328
992         <rdar://problem/35000990>
993
994         Reviewed by Joseph Pecoraro.
995
996         Before this patch, modifying a property of a style attribute duplicated the old property
997         and appended the new one. This happened because WI.TextRange.prototype.resolveOffsets
998         didn't resolve offsets correctly when text didn't end with a trailing new line.
999
1000         Since WI.TextRange.prototype.resolveOffsets is used elsewhere and this could be expected
1001         behavior, append a line break before resolving a range.
1002
1003         * UserInterface/Models/CSSProperty.js:
1004         (WI.CSSProperty.prototype._updateOwnerStyleText):
1005
1006 2017-10-30  Ross Kirsling  <ross.kirsling@sony.com>
1007
1008         Web Inspector: Clicking filler in data grid should clear selection
1009         https://bugs.webkit.org/show_bug.cgi?id=179027
1010
1011         Reviewed by Brian Burg.
1012
1013         * UserInterface/Views/DataGrid.js:
1014         (WI.DataGrid.prototype._mouseDownInDataTable):
1015
1016 2017-10-30  Devin Rousso  <webkit@devinrousso.com>
1017
1018         Web Inspector: Canvas Tab: no path components shown in recording content view after selecting a recording via View Recordings... dropdown
1019         https://bugs.webkit.org/show_bug.cgi?id=178807
1020         <rdar://problem/35176463>
1021
1022         Reviewed by Brian Burg.
1023
1024         When the first Recording is taken of a canvas, it is immediately added as a child. When the
1025         CanvasTreeElement is `attached`, however, it will attempt to regenerate its children if
1026         necessary. This is especially true for canvases with ShaderPrograms, as they are added with
1027         `addRepresentedObjectToNewChildQueue`, meaning that the child TreeElements aren't actually
1028         added until the next tick, preventing the ContentBrowser logic from generating path
1029         components correctly.
1030
1031         This patch switches to using `addChildForRepresentedObject` so that there is no delay when
1032         adding children, and also ensures that any existing recordings are also added on regeneration.
1033
1034         * UserInterface/Views/CanvasTabContentView.js:
1035         (WI.CanvasTabContentView.prototype._recordingAdded):
1036         Move logic for adding TreeElements for new Recordings to CanvasTreeElement.
1037
1038         * UserInterface/Views/CanvasTreeElement.js:
1039         (WI.CanvasTreeElement.createRecordingTreeElement):
1040         (WI.CanvasTreeElement):
1041         (WI.CanvasTreeElement.prototype.onattach):
1042         (WI.CanvasTreeElement.prototype.ondetach):
1043         (WI.CanvasTreeElement.prototype.onpopulate):
1044         (WI.CanvasTreeElement.prototype._handleItemAdded):
1045         (WI.CanvasTreeElement.prototype._handleItemRemoved):
1046         (WI.CanvasTreeElement.prototype._shaderProgramAdded): Deleted.
1047         (WI.CanvasTreeElement.prototype._shaderProgramRemoved): Deleted.
1048
1049 2017-10-30  Fujii Hironori  <Hironori.Fujii@sony.com>
1050
1051         [GTK] Web Inspector: Add Path.svg
1052         https://bugs.webkit.org/show_bug.cgi?id=178432
1053
1054         Reviewed by Carlos Garcia Campos.
1055
1056         * UserInterface/Images/gtk/Path.svg: Added.
1057
1058 2017-10-30  Nikita Vasilyev  <nvasilyev@apple.com>
1059
1060         Web Inspector: [PARITY] Styles Redesign: clicking on the white space after the property should create a blank property
1061         https://bugs.webkit.org/show_bug.cgi?id=178022
1062         <rdar://problem/34861687>
1063
1064         Reviewed by Matt Baker.
1065
1066         - Clicking on the whitespace on the right side of a property should insert a blank property after the clicked one.
1067         - Clicking on the whitespace at the end of a CSS rule should append a blank property.
1068         - Clicking on the whitespace before the first property should insert a blank property before the first one.
1069
1070         * UserInterface/Models/CSSProperty.js:
1071         (WI.CSSProperty.prototype.remove):
1072         (WI.CSSProperty.prototype._updateOwnerStyleText):
1073         Remove method previously didn't do anything for a newly added property.
1074
1075         * UserInterface/Models/CSSStyleDeclaration.js:
1076         (WI.CSSStyleDeclaration.prototype.newBlankProperty):
1077         Update indices of all properties after the newly added property.
1078
1079         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
1080         (WI.SpreadsheetCSSStyleDeclarationEditor):
1081         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
1082         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
1083         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
1084         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.isFocused):
1085         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
1086         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
1087         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
1088         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty): Deleted.
1089         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused): Deleted.
1090         Re-layout SpreadsheetCSSStyleDeclarationEditor after adding a new property. Preserve edited property
1091         so we can restore editing state after the re-layout.
1092
1093         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
1094         (WI.SpreadsheetCSSStyleDeclarationSection):
1095         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
1096         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
1097         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
1098         Clicking should add a new property only when we aren't editing an existing property.
1099
1100         * UserInterface/Views/SpreadsheetStyleProperty.js:
1101         (WI.SpreadsheetStyleProperty):
1102         (WI.SpreadsheetStyleProperty.prototype.updateClassNames):
1103         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
1104         Remove newlyAdded property of SpreadsheetStyleProperty. During layout SpreadsheetCSSStyleDeclarationEditor
1105         recreates SpreadsheetStyleProperty views and newlyAdded property gets lost.
1106
1107         * UserInterface/Views/SpreadsheetTextField.js:
1108         (WI.SpreadsheetTextField.prototype.get valueBeforeEditing):
1109         (WI.SpreadsheetTextField.prototype.startEditing):
1110         (WI.SpreadsheetTextField.prototype.stopEditing):
1111         (WI.SpreadsheetTextField.prototype._discardChange):
1112
1113 2017-10-27  Devin Rousso  <webkit@devinrousso.com>
1114
1115         Web Inspector: Canvas Tab: no way to see backtrace of where a canvas context was created
1116         https://bugs.webkit.org/show_bug.cgi?id=178799
1117         <rdar://problem/35175805>
1118
1119         Reviewed by Brian Burg.
1120
1121         * Localizations/en.lproj/localizedStrings.js:
1122
1123         * UserInterface/Models/Canvas.js:
1124         (WI.Canvas.fromPayload):
1125         (WI.Canvas.prototype.get backtrace):
1126
1127         * UserInterface/Views/CanvasDetailsSidebarPanel.css:
1128         (.sidebar > .panel.details.canvas .details-section.canvas-backtrace .call-frame):
1129
1130         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
1131         (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
1132         (WI.CanvasDetailsSidebarPanel.prototype.layout):
1133         (WI.CanvasDetailsSidebarPanel.prototype._refreshBacktraceSection):
1134
1135         * UserInterface/Views/ResourceIcons.css:
1136         (.canvas > .icon):
1137         (.canvas .icon): Deleted.
1138
1139 2017-10-26  Devin Rousso  <webkit@devinrousso.com>
1140
1141         Web Inspector: Canvas Tab: canvas path components from old page stick around when page is reloaded
1142         https://bugs.webkit.org/show_bug.cgi?id=178806
1143         <rdar://problem/35176360>
1144
1145         Reviewed by Brian Burg.
1146
1147         Before this change, the CanvasCollection was regenerated each time the Canvas tab was
1148         attached. This also caused the invisible TreeOutline, used for the path components and to
1149         manage selection, to be reset as well. Whenever the page refreshed, however, the old
1150         canvases, and associated recordings, were not removed. This patch reworks all of this logic
1151         to create the CanvasCollection on construction of the tab and add/remove canvases as needed.
1152
1153         * UserInterface/Controllers/CanvasManager.js:
1154         (WI.CanvasManager.prototype.canvasAdded):
1155         (WI.CanvasManager.prototype.canvasRemoved):
1156         (WI.CanvasManager.prototype._removeCanvas):
1157         (WI.CanvasManager.prototype._mainResourceDidChange):
1158         Replaced the "Cleared" event by instead firing "CanvasRemoved" for every tracked canvas. This
1159         massively simplifies the logic for when the page navigates, as everything goes through a
1160         single event listener.
1161         Drive-by: changed existing event names to remove unnecessary words.
1162
1163         * UserInterface/Views/CanvasTabContentView.js:
1164         (WI.CanvasTabContentView):
1165         (WI.CanvasTabContentView.prototype.attached):
1166         (WI.CanvasTabContentView.prototype.detached):
1167         (WI.CanvasTabContentView.prototype._addCanvas):
1168         (WI.CanvasTabContentView.prototype._removeCanvas):
1169         (WI.CanvasTabContentView.prototype._handleCanvasAdded):
1170         (WI.CanvasTabContentView.prototype._handleCanvasRemoved):
1171         (WI.CanvasTabContentView.prototype._canvasAdded): Deleted.
1172         (WI.CanvasTabContentView.prototype._canvasRemoved): Deleted.
1173         (WI.CanvasTabContentView.prototype._mainResourceDidChange): Deleted.
1174         Rework logic for the way that the CanvasCollection is maintained. It is no longer
1175         created/destroyed each time the view is attached/detached, and instead a diff is calculated
1176         for the added/existing/removed canvases and the content views are added/removed as such.
1177
1178         * UserInterface/Views/CanvasOverviewContentView.js:
1179         (WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged):
1180         Drive-by: if an imported recording is selected on the Canvas Overview view, we should show it.
1181
1182 2017-10-26  Devin Rousso  <webkit@devinrousso.com>
1183
1184         Web Inspector: Canvas Tab: canvases overview should support navigation via keyboard
1185         https://bugs.webkit.org/show_bug.cgi?id=178800
1186         <rdar://problem/35175856>
1187
1188         Reviewed by Brian Burg.
1189
1190         Create a KeyboardShorcut for each of the following:
1191          - Up: selects the previous canvas in the selected column
1192          - Down: selects the next canvas in the selected column
1193          - Right: selects the next canvas in the selected row
1194          - Left: selects the previous canvas in the selected row
1195          - Space: toggle recording of the selected canvas
1196          - Shift+Space: toggle single-frame recording of the selected canvas
1197
1198         The calculation for selected row/colum is based on the `offsetWidth` of the parent element
1199         and the selected item's content view element. Since this view uses a flexbox, all of the
1200         items are expected to have the same dimensions, meaning that this value is uniform. The
1201         intended functionality is that of a spreadsheet, where pressing pressing left/right will
1202         never change the selected row and up/down will never change the selected column.
1203
1204         * UserInterface/Views/CanvasOverviewContentView.css:
1205         (.content-view.canvas-overview):
1206         (.content-view.canvas-overview .content-view.canvas):
1207         Move margin value to a CSS variable so that it can be easily retrieved via JavaScript.
1208
1209         * UserInterface/Views/CanvasOverviewContentView.js:
1210         (WI.CanvasOverviewContentView):
1211         (WI.CanvasOverviewContentView.prototype.contentViewAdded):
1212         (WI.CanvasOverviewContentView.prototype.contentViewRemoved):
1213         (WI.CanvasOverviewContentView.prototype.attached):
1214         (WI.CanvasOverviewContentView.prototype.detached):
1215         (WI.CanvasOverviewContentView.prototype.get _itemMargin):
1216         (WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically):
1217         (WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally):
1218         (WI.CanvasOverviewContentView.prototype._updateNavigationItems):
1219         (WI.CanvasOverviewContentView.prototype._handleUp):
1220         (WI.CanvasOverviewContentView.prototype._handleRight):
1221         (WI.CanvasOverviewContentView.prototype._handleDown):
1222         (WI.CanvasOverviewContentView.prototype._handleLeft):
1223         (WI.CanvasOverviewContentView.prototype._handleSpace):
1224         (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
1225         Drive-by: call `_updateNavigationItems` whenever an item is added/removed so that if there
1226         are no items the navigation items cannot be clicked.
1227
1228 2017-10-26  Nikita Vasilyev  <nvasilyev@apple.com>
1229
1230         Web Inspector: Styles Redesign: Make "Style Attribute" text darker and non-focusable
1231         https://bugs.webkit.org/show_bug.cgi?id=178837
1232
1233         Reviewed by Brian Burg.
1234
1235         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
1236         (.spreadsheet-css-declaration .selector.style-attribute):
1237         Use the same shade of gray as in the "Inherited from" sections.
1238
1239         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
1240         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
1241         Only editable selectors should be focusable.
1242
1243 2017-10-26  Fujii Hironori  <Hironori.Fujii@sony.com>
1244
1245         [GTK] Web Inspector: Add CanvasOverview.svg and Canvas.svg
1246         https://bugs.webkit.org/show_bug.cgi?id=178426
1247
1248         Reviewed by Carlos Garcia Campos.
1249
1250         * UserInterface/Images/gtk/Canvas.svg: Added.
1251         * UserInterface/Images/gtk/CanvasOverview.svg: Added.
1252
1253 2017-10-25  Devin Rousso  <webkit@devinrousso.com>
1254
1255         Web Inspector: provide a way to enable/disable event listeners
1256         https://bugs.webkit.org/show_bug.cgi?id=177451
1257         <rdar://problem/34994925>
1258
1259         Reviewed by Joseph Pecoraro.
1260
1261         * Localizations/en.lproj/localizedStrings.js:
1262
1263         * UserInterface/Controllers/DOMTreeManager.js:
1264         (WI.DOMTreeManager.prototype.setEventListenerDisabled):
1265
1266         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
1267         (WI.DOMNodeDetailsSidebarPanel.prototype.attached):
1268         (WI.DOMNodeDetailsSidebarPanel.prototype.detached):
1269         (WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
1270         (WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
1271         (WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
1272         Listen for `WI.DOMNode.Event.EventListenersChanged` on all instances of WI.DOMNode, since we
1273         will still want to refresh the event listeners section in the event that an event listener
1274         is removed from a parent node.
1275
1276         * UserInterface/Views/EventListenerSectionGroup.js:
1277         (WI.EventListenerSectionGroup):
1278         (WI.EventListenerSectionGroup.prototype._eventText):
1279         (WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
1280         (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
1281         (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):
1282         * UserInterface/Views/EventListenerSectionGroup.css:
1283         (.event-listener-section > .content input[type="checkbox"]):
1284
1285         * UserInterface/Views/DetailsSectionSimpleRow.js:
1286         (WI.DetailsSectionSimpleRow.prototype.get label):
1287         (WI.DetailsSectionSimpleRow.prototype.set label):
1288
1289 2017-10-25  Devin Rousso  <webkit@devinrousso.com>
1290
1291         Web Inspector: replace TypeVerifier with subclasses of WI.Collection
1292         https://bugs.webkit.org/show_bug.cgi?id=178045
1293         <rdar://problem/35174307>
1294
1295         Reviewed by Brian Burg.
1296
1297         * UserInterface/Models/Collection.js:
1298         (WI.Collection):
1299         (WI.Collection.prototype.get displayName):
1300         (WI.Collection.prototype.objectIsRequiredType):
1301         (WI.Collection.prototype.add):
1302         (WI.Collection.prototype.get typeVerifier): Deleted.
1303         Instead of exposing the typeVerifier, we create a public predicate that returns whether the
1304         given object matches the expected type of the Collection. Subclasses can override it to
1305         limit the scope of the collection to a particular type.
1306
1307         * UserInterface/Models/CollectionTypes.js:
1308         (WI.FrameCollection.prototype.get displayName):
1309         (WI.FrameCollection.prototype.objectIsRequiredType):
1310         (WI.FrameCollection): Deleted.
1311         (WI.ScriptCollection.prototype.get displayName):
1312         (WI.ScriptCollection.prototype.objectIsRequiredType):
1313         (WI.ScriptCollection): Deleted.
1314         (WI.CSSStyleSheetCollection.prototype.get displayName):
1315         (WI.CSSStyleSheetCollection.prototype.objectIsRequiredType):
1316         (WI.CSSStyleSheetCollection): Deleted.
1317         (WI.CanvasCollection.prototype.get displayName):
1318         (WI.CanvasCollection.prototype.objectIsRequiredType):
1319         (WI.CanvasCollection): Deleted.
1320         (WI.ShaderProgramCollection.prototype.get displayName):
1321         (WI.ShaderProgramCollection.prototype.objectIsRequiredType):
1322         (WI.ShaderProgramCollection): Deleted.
1323         (WI.RecordingCollection.prototype.get displayName):
1324         (WI.RecordingCollection.prototype.objectIsRequiredType):
1325         (WI.RecordingCollection): Deleted.
1326         * UserInterface/Models/ResourceCollection.js:
1327         (WI.ResourceCollection):
1328         (WI.ResourceCollection.prototype.get displayName):
1329         (WI.ResourceCollection.prototype.objectIsRequiredType):
1330         (WI.ResourceCollection.verifierForType): Deleted.
1331         * UserInterface/Views/TreeOutlineGroup.js:
1332         (WI.TreeOutlineGroup.prototype.objectIsRequiredType):
1333         (WI.TreeOutlineGroup): Deleted.
1334         Introduce additional subclasses of Collection for other model types. Modify existing
1335         subclasses to remove `typeVerifier` and instead extend `objectIsRequiredType`.
1336
1337         * UserInterface/Models/Canvas.js:
1338         (WI.Canvas):
1339         * UserInterface/Models/Frame.js:
1340         (WI.Frame):
1341         * UserInterface/Protocol/Target.js:
1342         (WI.Target):
1343         * UserInterface/Views/ResourceSidebarPanel.js:
1344         (WI.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
1345         (WI.ResourceSidebarPanel.prototype._addScript):
1346
1347         * UserInterface/Views/CollectionContentView.js:
1348         (WI.CollectionContentView):
1349         (WI.CollectionContentView.titleForCollection): Delete.
1350         * UserInterface/Views/ResourceCollectionContentView.js:
1351         (WI.ResourceCollectionContentView):
1352         Require that subclasses of Collection override `get displayName` if the CollectionContentView
1353         is not provided with a `contentPlaceholderText`.
1354
1355         (WI.CollectionContentView.prototype.initialLayout):
1356         We don't need to create and add ContentView for each item of the Collection, as this is
1357         already done by attached().
1358
1359         (WI.CollectionContentView.prototype._showContentPlaceholder):
1360         Remove the 250ms delay before showing the placeholder TitleView.
1361
1362         * UserInterface/Views/FolderizedTreeElement.js:
1363         (WI.FolderizedTreeElement.prototype._settingsForRepresentedObject):
1364
1365 2017-10-25  Joseph Pecoraro  <pecoraro@apple.com>
1366
1367         Web Inspector: Display fetch() initiated loads as "fetch" instead of "xhr" in the Network Tab
1368         https://bugs.webkit.org/show_bug.cgi?id=178826
1369
1370         Reviewed by Youenn Fablet.
1371
1372         * UserInterface/Views/NetworkTableContentView.js:
1373         (WI.NetworkTableContentView.shortDisplayNameForResourceType):
1374         Fetch and XHR loads are still grouped under the succinct "XHR" filter, but
1375         at least display the better type name in the "Type" column of the table.
1376
1377 2017-10-25  Devin Rousso  <webkit@devinrousso.com>
1378
1379         Web Inspector: Canvas Tab: selected canvas card loses selection outline style while recording
1380         https://bugs.webkit.org/show_bug.cgi?id=178814
1381         <rdar://problem/35177317>
1382
1383         Reviewed by Brian Burg.
1384
1385         * UserInterface/Views/CanvasOverviewContentView.css:
1386         (.content-view.canvas-overview .content-view.canvas):
1387         (.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)):
1388         (.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, footer),):
1389         (.content-view.canvas-overview .content-view.canvas > header):
1390         (.content-view.canvas-overview .content-view.canvas.is-recording > header):
1391         (.content-view.canvas-overview .content-view.canvas > .preview):
1392         (.content-view.canvas-overview .content-view.canvas > footer):
1393         (.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)): Deleted.
1394         Instead of applying the border to the entire element, apply parts of the border to each of
1395         its children so that we can choose what colors to use for each part.
1396
1397 2017-10-25  Nikita Vasilyev  <nvasilyev@apple.com>
1398
1399         Web Inspector: [PARITY] Styles Redesign: Add color gradient, bezier curve, and spring inline widgets
1400         https://bugs.webkit.org/show_bug.cgi?id=178404
1401         <rdar://problem/35035992>
1402
1403         Reviewed by Devin Rousso.
1404
1405         Add inline widgets for the following CSS values:
1406         - Gradients, e.g. `background-image: linear-gradient(yellow, orange)`
1407         - Bezier curves, e.g. `transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55)`
1408         - Spring functions, e.g. `transition-timing-function: spring(1, 2, 2, 4)`
1409
1410         * UserInterface/Models/Color.js:
1411         (WI.Color.prototype.toString):
1412         Don't throw. The are never try/catch blocks on the callsites.
1413
1414         * UserInterface/Views/SpreadsheetStyleProperty.js:
1415         (WI.SpreadsheetStyleProperty.prototype._renderValue):
1416         (WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
1417         (WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
1418         (WI.SpreadsheetStyleProperty.prototype._addColorTokens):
1419         (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):
1420
1421 2017-10-25  Nikita Vasilyev  <nvasilyev@apple.com>
1422
1423         Web Inspector: Styles Redesign: Newly added invalid property isn't immediately shown as invalid
1424         https://bugs.webkit.org/show_bug.cgi?id=178488
1425
1426         Reviewed by Brian Burg.
1427
1428         * UserInterface/Models/CSSStyleDeclaration.js:
1429         (WI.CSSStyleDeclaration.prototype.newBlankProperty):
1430         Call this.update to update _properties, _allProperties, _visibleProperties, and _allVisibleProperties.
1431
1432         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
1433         (.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled)):
1434         (.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled)):
1435         (.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
1436         When the property name is valid, but the value isn't, display red line-through only for the value.
1437         This is how it works in the old styles sidebar as well.
1438
1439         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
1440         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
1441         (WI.SpreadsheetCSSStyleDeclarationEditor):
1442         * UserInterface/Views/SpreadsheetStyleProperty.js:
1443         (WI.SpreadsheetStyleProperty):
1444         (WI.SpreadsheetStyleProperty.prototype.updateClassNames):
1445         (WI.SpreadsheetStyleProperty.prototype._update):
1446         Introduce updateClassNames method. Unlike _update, it doesn't change text selection or focus and
1447         can be safely called on a property while it's being edited.
1448
1449 2017-10-25  Devin Rousso  <webkit@devinrousso.com>
1450
1451         Web Inspector: Canvas Tab: clicking on a canvas card causes details sidebar to show and mess up card arrangement
1452         https://bugs.webkit.org/show_bug.cgi?id=178803
1453         <rdar://problem/35176082>
1454
1455         Reviewed by Brian Burg.
1456
1457         * Localizations/en.lproj/localizedStrings.js:
1458         * UserInterface/Views/CanvasDetailsSidebarPanel.css:
1459         (.sidebar > .panel.details.canvas > .content > .empty-content-placeholder):
1460         (.sidebar > .panel.details.canvas > .content > .empty-content-placeholder > .message):
1461         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
1462         (WI.CanvasDetailsSidebarPanel):
1463         (WI.CanvasDetailsSidebarPanel.prototype.inspect):
1464         (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
1465         (WI.CanvasDetailsSidebarPanel.prototype.layout):
1466
1467         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
1468         (WI.RecordingNavigationSidebarPanel.disallowInstanceForClass): Deleted.
1469         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
1470         (WI.RecordingStateDetailsSidebarPanel.disallowInstanceForClass): Deleted.
1471         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
1472         (WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass): Deleted.
1473         Drive-by: these sidebar panels are now only used by the Canvas tab, so we no longer need to
1474         provide support for multiple instances of them.
1475
1476 2017-10-25  Devin Rousso  <webkit@devinrousso.com>
1477
1478         Web Inspector: preserve Recordings for each Canvas after closing the Canvas tab
1479         https://bugs.webkit.org/show_bug.cgi?id=178767
1480         <rdar://problem/35167239>
1481
1482         Reviewed by Brian Burg.
1483
1484         * UserInterface/Test.html:
1485         Include CollectionTypes for tests.
1486
1487         * UserInterface/Controllers/CanvasManager.js:
1488         (WI.CanvasManager.prototype.recordingFinished):
1489
1490         * UserInterface/Models/Canvas.js:
1491         (WI.Canvas):
1492         (WI.Canvas.prototype.get recordingCollection):
1493
1494         * UserInterface/Models/CollectionTypes.js:
1495         (WI.CanvasCollection):
1496         (WI.RecordingCollection):
1497
1498         * UserInterface/Views/CanvasContentView.js:
1499         (WI.CanvasContentView.prototype.initialLayout):
1500         (WI.CanvasContentView.prototype._addRecording):
1501         (WI.CanvasContentView.prototype._recordingStopped):
1502
1503         * UserInterface/Views/CanvasTabContentView.js:
1504         (WI.CanvasTabContentView.prototype.attached):
1505         (WI.CanvasTabContentView.prototype._recordingAdded):
1506
1507 2017-10-24  Joseph Pecoraro  <pecoraro@apple.com>
1508
1509         REGRESSION(r222181): Web Inspector: Augmenting Agents Domains are not getting activated
1510         https://bugs.webkit.org/show_bug.cgi?id=178768
1511         <rdar://problem/35081334>
1512
1513         Reviewed by Brian Burg.
1514
1515         * UserInterface/Base/Main.js:
1516         Simplify event dispatch.
1517
1518         * UserInterface/Controllers/AppController.js:
1519         (WI.AppController.prototype.activateExtraDomains):
1520         Pass the domains on.
1521
1522 2017-10-24  Joseph Pecoraro  <pecoraro@apple.com>
1523
1524         Web Inspector: Console Drawer resizing doesn't match cursor position
1525         https://bugs.webkit.org/show_bug.cgi?id=178753
1526         <rdar://problem/35160484>
1527
1528         Reviewed by Brian Burg.
1529
1530         * UserInterface/Views/ConsoleDrawer.js:
1531         (WI.ConsoleDrawer.prototype._updateDrawerHeight):
1532         Drive-by fix an early return that would never have worked.
1533
1534         * UserInterface/Views/Main.css:
1535         (#content):
1536         Give the #content a flex grow of 1. This causes the space to grow as it
1537         already was but now it does not affect the size of the fixed height sibling.
1538
1539 2017-10-24  Eric Carlson  <eric.carlson@apple.com>
1540
1541         Web Inspector: Enable WebKit logging configuration and display
1542         https://bugs.webkit.org/show_bug.cgi?id=177027
1543         <rdar://problem/33964767>
1544
1545         Reviewed by Joseph Pecoraro.
1546
1547         * Localizations/en.lproj/localizedStrings.js: Add new localized strings.
1548
1549         * UserInterface/Controllers/LogManager.js:
1550         (WI.LogManager): Initialize _loggingChannelSources, fetch _customLoggingChannels.
1551         (WI.LogManager.supportsLogChannels): New.
1552         (WI.LogManager.prototype.get customLoggingChannels): New.
1553         (WI.LogManager.prototype.get logChannelSources): New.
1554
1555         * UserInterface/Main.html:
1556         * UserInterface/Models/ConsoleMessage.js: Add Media and WebRTC.
1557
1558         * UserInterface/Models/IssueMessage.js:
1559         (WI.IssueMessage): Add media and webrtc.
1560
1561         * UserInterface/Models/LoggingChannel.js: Added.
1562         (WI.LoggingChannel):
1563         (WI.LoggingChannel.fromPayload):
1564         (WI.LoggingChannel.prototype.get source):
1565         (WI.LoggingChannel.prototype.get level):
1566
1567         * UserInterface/Views/LogContentView.js:
1568         (WI.LogContentView): Add new scope buttons for "Log", "Info", and "Debug". Create log channel
1569             scope buttons once logging has started.
1570         (WI.LogContentView.prototype.get navigationItems): Add the log message scope bar when necessary.
1571         (WI.LogContentView.prototype._scopeFromMessageSource): New.
1572         (WI.LogContentView.prototype._scopeFromMessageLevel): Don't group Info, Log, and Debug.
1573         (WI.LogContentView.prototype._messageAdded): Force a UI update the first time a WebKit log
1574             message is added.
1575
1576         (WI.LogContentView.prototype._messageShouldBeVisible): New, deal with message source bar buttons.
1577         (WI.LogContentView.prototype._messageSourceBarSelectionDidChange): New.
1578         (WI.LogContentView.prototype._filterMessageElements): Deal with message source bar buttons.
1579
1580         * UserInterface/Views/SettingsTabContentView.js:
1581         (WI.SettingsTabContentView.prototype._createGeneralSettingsView): Create and initialize menus
1582             for each log channel.
1583
1584 2017-10-24  Joseph Pecoraro  <pecoraro@apple.com>
1585
1586         Uncaught Exception: TypeError: null is not an object (evaluating 'this.treeOutline.isXMLMimeType')
1587         https://bugs.webkit.org/show_bug.cgi?id=178745
1588
1589         Reviewed by Brian Burg.
1590
1591         * UserInterface/Views/DOMTreeUpdater.js:
1592         (WI.DOMTreeUpdater.prototype._updateModifiedNodes):
1593         An earlier tree element update might have caused this other tree element's
1594         waiting to be updated to actually be removed. So just skip past them.
1595
1596 2017-10-24  Fujii Hironori  <Hironori.Fujii@sony.com>
1597
1598         [GTK] Web Inspector: Add Recording.svg
1599         https://bugs.webkit.org/show_bug.cgi?id=175045
1600
1601         Reviewed by Brian Burg.
1602
1603         * UserInterface/Images/gtk/Recording.svg: Added.
1604
1605 2017-10-24  Devin Rousso  <webkit@devinrousso.com>
1606
1607         Web Inspector: allow ShaderProgram to be shown in CanvasContentView
1608         https://bugs.webkit.org/show_bug.cgi?id=178714
1609
1610         Reviewed by Brian Burg.
1611
1612         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
1613         (WI.CanvasDetailsSidebarPanel.prototype.inspect):
1614         Allow ShaderProgram to show the related Canvas information.
1615
1616         * UserInterface/Views/CanvasTabContentView.js:
1617         (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
1618         (WI.CanvasTabContentView.prototype.showRepresentedObject):
1619         (WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
1620         If a ShaderProgram is selected in the path component, display a ShaderProgramContentView.
1621
1622 2017-10-24  Devin Rousso  <webkit@devinrousso.com>
1623
1624         Web Inspector: remove canvases from Resources and experimental setting/UI
1625         https://bugs.webkit.org/show_bug.cgi?id=178711
1626
1627         Reviewed by Brian Burg.
1628
1629         * UserInterface/Base/Main.js:
1630         (WI.tabContentViewClassForRepresentedObject):
1631         * UserInterface/Base/Setting.js:
1632         * UserInterface/Controllers/CanvasManager.js:
1633         (WI.CanvasManager.prototype.canvasAdded):
1634         (WI.CanvasManager.prototype.canvasRemoved):
1635         * UserInterface/Models/Canvas.js:
1636         * UserInterface/Models/Frame.js:
1637         (WI.Frame):
1638         (WI.Frame.prototype.get extraScriptCollection):
1639         (WI.Frame.prototype.commitProvisionalLoad):
1640         (WI.Frame.prototype.get canvasCollection): Deleted.
1641         * UserInterface/Views/CanvasTabContentView.js:
1642         (WI.CanvasTabContentView.isTabAllowed):
1643         * UserInterface/Views/FrameTreeElement.js:
1644         (WI.FrameTreeElement):
1645         (WI.FrameTreeElement.prototype.onattach):
1646         (WI.FrameTreeElement.prototype.ondetach):
1647         (WI.FrameTreeElement.prototype.onpopulate):
1648         (WI.FrameTreeElement.prototype._styleSheetAdded):
1649         (WI.FrameTreeElement.prototype._canvasWasAdded): Deleted.
1650         (WI.FrameTreeElement.prototype._canvasWasRemoved): Deleted.
1651         * UserInterface/Views/ResourceSidebarPanel.js:
1652         (WI.ResourceSidebarPanel):
1653         (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
1654         (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
1655         (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
1656         * UserInterface/Views/ResourcesTabContentView.js:
1657         (WI.ResourcesTabContentView):
1658         (WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
1659         * UserInterface/Views/SettingsTabContentView.js:
1660         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
1661
1662 2017-10-24  Devin Rousso  <webkit@devinrousso.com>
1663
1664         Web Inspector: Show recordings in CanvasTabContentView
1665         https://bugs.webkit.org/show_bug.cgi?id=177606
1666         <rdar://problem/34715819>
1667
1668         Reviewed by Brian Burg.
1669
1670         Original patch by Matt Baker <mattbaker@apple.com>.
1671
1672         This patch folds canvas recordings into the new Canvas tab, which now
1673         supports showing both CanvasCollections and Recordings.
1674
1675         When viewing recordings, a back button is shown at the start of the
1676         navigation bar, allowing the user to return to the overview. It has been
1677         styled with a back arrow, to make its function as clear as possible.
1678         Like other navigation path components, the item for the recording can
1679         clicked to select another recording taken from the same canvas.
1680
1681         The recording action scrubber has been moved from the content browser's
1682         navigation bar to a more prominent location in the recording content view.
1683         Selecting a frame tree element in the navigation sidebar no longer selects
1684         the last action for that frame. This was changed to prevent the scrubber
1685         position from behaving non-monotonically when selecting actions in sequential
1686         order.
1687
1688         While this patch retains support for importing recordings, the feature
1689         is not polished. Currently it is not possible to return to an imported
1690         recording after leaving closing the view. In the future we may want to
1691         consider including a navigation sidebar panel for the overview, which
1692         could list canvas recordings (and eventually shaders).
1693
1694         * .eslintrc:
1695         Drive-by: remove duplicate key.
1696
1697         * Localizations/en.lproj/localizedStrings.js:
1698         * UserInterface/Base/Main.js:
1699         (WI.contentLoaded):
1700         (WI.tabContentViewClassForRepresentedObject):
1701         * UserInterface/Main.html:
1702         * UserInterface/Views/RecordingTabContentView.js: Removed.
1703         Remove RecordingTabContentView.
1704
1705         * UserInterface/Images/Recording.svg:
1706         New recording icon, used for tree elements and canvas preview UI.
1707
1708         * UserInterface/Models/Recording.js:
1709         (WI.Recording):
1710         (WI.Recording.prototype.get visualActionIndexes):
1711         Visual action indexes should be computed by the recording.
1712
1713         * UserInterface/Views/CanvasContentView.js:
1714         (WI.CanvasContentView):
1715         (WI.CanvasContentView.prototype.refresh):
1716         (WI.CanvasContentView.prototype.initialLayout):
1717         (WI.CanvasContentView.prototype.attached):
1718         (WI.CanvasContentView.prototype._recordingStopped):
1719         (WI.CanvasContentView.prototype._handleRecordingSelectElementChange):
1720         New UI for showing CanvasContentView as a CollectionView item. Includes
1721         recordings button and select for choosing a recording to view.
1722
1723         * UserInterface/Views/CanvasOverviewContentView.css:
1724         (.content-view.canvas-overview .content-view.canvas > header):
1725         Switch to 13px, which is more frequently used.
1726
1727         (.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
1728         Switch to literal em dash. Surrounding spaces were ignored when using
1729         the backslash-escaped character.
1730
1731         (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar):
1732         (.content-view.canvas-overview .content-view.canvas > footer > .recordings):
1733         (.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
1734         (.content-view.canvas-overview .content-view.canvas > footer > .recordings > select):
1735         (.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus):
1736         (.content-view.canvas-overview .content-view.canvas > footer > .flexible-space):
1737         (.popover-content > .tree-outline .item.recording > .icon):
1738         (.popover-content > .tree-outline .item.recording:hover):
1739         (.popover-content > .tree-outline .item.recording:hover > .icon):
1740         (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar): Deleted.
1741         (.content-view.canvas-overview .content-view.canvas > footer): Deleted.
1742         New styles for the recording picker.
1743
1744         * UserInterface/Views/CanvasOverviewContentView.js:
1745         (WI.CanvasOverviewContentView):
1746         (WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
1747         (WI.CanvasOverviewContentView.prototype.contentViewAdded):
1748         (WI.CanvasOverviewContentView.prototype.contentViewRemoved):
1749         (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
1750         (WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged): Deleted.
1751         (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent): Deleted.
1752         Canvas tree elements are now managed by CanvasTabContentView, which is
1753         now responsible for maintaining the tree of canvas objects. For now the
1754         tree holds canvases and recordings, but will eventually include shader programs.
1755
1756         * UserInterface/Views/CanvasTabContentView.css:
1757         (.content-view.tab.canvas .navigation-bar > .item .recording > .icon):
1758         (.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon): Deleted.
1759         Add styles for recording path components.
1760
1761         * UserInterface/Views/CanvasTabContentView.js:
1762         (WI.CanvasTabContentView):
1763         (WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
1764         (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
1765         (WI.CanvasTabContentView.prototype.showRepresentedObject):
1766         (WI.CanvasTabContentView.prototype.shown):
1767         (WI.CanvasTabContentView.prototype.restoreStateFromCookie):
1768         (WI.CanvasTabContentView.prototype.attached):
1769         (WI.CanvasTabContentView.prototype.detached):
1770         (WI.CanvasTabContentView.prototype._canvasAdded):
1771         (WI.CanvasTabContentView.prototype._canvasRemoved):
1772         (WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
1773         (WI.CanvasTabContentView.prototype._recordingStopped):
1774         (WI.CanvasTabContentView.prototype._navigationSidebarImport):
1775         (WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
1776         (WI.CanvasTabContentView.prototype._recordingAdded):
1777         (WI.CanvasTabContentView.prototype._recordingActionIndexChanged):
1778         (WI.CanvasTabContentView.prototype._updateActionIndex):
1779         (WI.CanvasTabContentView.prototype.restoreFromCookie): Deleted.
1780         (WI.CanvasTabContentView.prototype._overviewPathComponentClicked): Deleted.
1781
1782         * UserInterface/Views/ContentView.js:
1783         (WI.ContentView.createFromRepresentedObject):
1784
1785         * UserInterface/Views/RecordingActionTreeElement.css:
1786         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
1787         (body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,): Deleted.
1788
1789         * UserInterface/Views/RecordingContentView.css:
1790         (.content-view:not(.tab).recording):
1791         (.content-view:not(.tab).recording > header):
1792         (.content-view:not(.tab).recording > header > .slider-container):
1793         (.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
1794         (.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-runnable-track):
1795         (.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-thumb):
1796         (.content-view:not(.tab).recording > .preview-container):
1797
1798         * UserInterface/Views/RecordingContentView.js:
1799         (WI.RecordingContentView):
1800         (WI.RecordingContentView.prototype.updateActionIndex):
1801         (WI.RecordingContentView.prototype.initialLayout):
1802         (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
1803         (WI.RecordingContentView.prototype._updateSliderValue):
1804         (WI.RecordingContentView.prototype._sliderChanged):
1805         (WI.RecordingContentView.prototype.get supplementalRepresentedObjects): Deleted.
1806
1807         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
1808         (WI.RecordingNavigationSidebarPanel.prototype.set recording):
1809         (WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
1810
1811         * UserInterface/Views/ResourceIcons.css:
1812         (.canvas .icon):
1813         (.canvas.canvas-2d .icon): Deleted.
1814         (.canvas:matches(.webgl, .webgl2, .webgpu) .icon): Deleted.
1815
1816 2017-10-24  Ross Kirsling  <ross.kirsling@sony.com>
1817
1818         Web Inspector: Layer mutations should be purely based on layerId, not based on nodeId
1819         https://bugs.webkit.org/show_bug.cgi?id=178554
1820
1821         Reviewed by Devin Rousso.
1822
1823         * UserInterface/Controllers/LayerTreeManager.js:
1824         (WI.LayerTreeManager.prototype.layerTreeMutations):
1825         Looking for special cases involving nodeIds is incorrect, as nodeIds need not be unique in the layer list (such
1826         as when an element and a pseudo-element thereof each give rise to a layer). A layer object marked "preserved" in
1827         this way shares no data with its predecessor, meaning that no consumer can act upon this so-called preservation.
1828         A preserved layer should be nothing more or less than a recycled layerId (the thing that *is* unique).
1829
1830 2017-10-23  Nikita Vasilyev  <nvasilyev@apple.com>
1831
1832         Web Inspector: Styles Redesign: Inline widgets don't hide when starting editing by tabbing from property name
1833         https://bugs.webkit.org/show_bug.cgi?id=178638
1834
1835         Reviewed by Joseph Pecoraro.
1836
1837         * UserInterface/Views/SpreadsheetStyleProperty.js:
1838         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
1839         Blur event on the property name text field caused WI.SpreadsheetStyleProperty.prototype._renderValue,
1840         which displayed inline swatches. Display inline swatches only after blur event on the property value.
1841
1842 2017-10-23  Joseph Pecoraro  <pecoraro@apple.com>
1843
1844         Web Inspector: Please support HAR Export for network traffic
1845         https://bugs.webkit.org/show_bug.cgi?id=146692
1846         <rdar://problem/7463672>
1847
1848         Reviewed by Brian Burg.
1849
1850         * UserInterface/Main.html:
1851         * UserInterface/Test.html:
1852         New resources.
1853
1854         * UserInterface/Base/Platform.js:
1855         Include a build number as well.
1856         
1857         * UserInterface/Base/URLUtilities.js:
1858         (parseLocationQueryParameters): Deleted.
1859         Remove unused function.
1860
1861         * UserInterface/Controllers/FrameResourceManager.js:
1862         (WI.FrameResourceManager.prototype.frameDidNavigate):
1863         (WI.FrameResourceManager.prototype.resourceRequestWillBeSent):
1864         (WI.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
1865         (WI.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
1866         (WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
1867         Pass along a walltime.
1868
1869         * UserInterface/Protocol/NetworkObserver.js:
1870         (WI.NetworkObserver.prototype.requestWillBeSent):
1871         Pass along a walltime. This new parameter shifts old parameters.
1872
1873         * UserInterface/Controllers/HARBuilder.js: Added.
1874         (WI.HARBuilder.async.buildArchive):
1875         (WI.HARBuilder.creator):
1876         (WI.HARBuilder.pages):
1877         (WI.HARBuilder.pageTimings):
1878         (WI.HARBuilder.entry):
1879         (WI.HARBuilder.request):
1880         (WI.HARBuilder.response):
1881         (WI.HARBuilder.cookies):
1882         (WI.HARBuilder.headers):
1883         (WI.HARBuilder.content):
1884         (WI.HARBuilder.postData):
1885         (WI.HARBuilder.cache):
1886         (WI.HARBuilder.timings):
1887         (WI.HARBuilder.ipAddress):
1888         (WI.HARBuilder.date):
1889         (WI.HARBuilder.fetchType):
1890         HAR construction and helpers.
1891
1892         * UserInterface/Models/Cookie.js:
1893         (WI.Cookie.prototype.expirationDate):
1894         * UserInterface/Models/Resource.js:
1895         (WI.Resource.prototype.get queryStringParameters):
1896         (WI.Resource.prototype.get requestFormParameters):
1897         (WI.Resource.prototype.get requestSentWalltime):
1898         (WI.Resource.prototype.get requestSentDate):
1899         (WI.Resource.prototype.hasRequestFormParameters):
1900         Helpers for HAR generation and sub-sets of data.
1901
1902         * UserInterface/Models/SourceCode.js:
1903         (WI.SourceCode.prototype._processContent):
1904         Capture the raw, unmodified, base64 encoded flag and content. This ends
1905         up getting used by HAR generation and is otherwise lost.
1906
1907         * UserInterface/Test/TestHarness.js:
1908         (TestHarness.prototype.json):
1909         Helper for just logging JSON data with a filter. This defaults to
1910         a reasonable 2 space indent for JSON logs in our test output.
1911
1912         * UserInterface/Views/DOMTreeContentView.js:
1913         (WI.DOMTreeContentView.prototype.get saveData):
1914         (WI.DOMTreeContentView.get saveData.saveHandler): Deleted.
1915         Drive-by simplify while looking at other save handlers.
1916
1917         * UserInterface/Views/NetworkTableContentView.js:
1918         (WI.NetworkTableContentView.prototype.get supportsSave):
1919         (WI.NetworkTableContentView.prototype.get saveData):
1920         (WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
1921         (WI.NetworkTableContentView.prototype._HARResources):
1922         (WI.NetworkTableContentView.prototype._exportHAR):
1923         Provide a context menu and save keyboard handler to export a HAR.
1924         This matches other browsers.
1925
1926         * UserInterface/Views/ResourceClusterContentView.js:
1927         (WI.ResourceClusterContentView.prototype._canShowRequestContentView):
1928         Use code that is now available in Resource.
1929
1930 2017-10-20  Matt Baker  <mattbaker@apple.com>
1931
1932         Web Inspector: scrolling the editor while debugging shouldn't trigger popovers
1933         https://bugs.webkit.org/show_bug.cgi?id=178325
1934
1935         Reviewed by Devin Rousso.
1936
1937         Ignore the next "mousemove" event immediately following a "mousewheel",
1938         when determining the hovered item for purposes of triggering a popover.
1939
1940         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
1941         (WI.CodeMirrorTokenTrackingController):
1942         (WI.CodeMirrorTokenTrackingController.prototype._startTracking):
1943         (WI.CodeMirrorTokenTrackingController.prototype._stopTracking):
1944         (WI.CodeMirrorTokenTrackingController.prototype.handleEvent):
1945         (WI.CodeMirrorTokenTrackingController.prototype._mouseMovedOverEditor):
1946
1947 2017-10-20  Joseph Pecoraro  <pecoraro@apple.com>
1948
1949         Web Inspector: preview content view for MIME type application/json should be a collapsible tree outline
1950         https://bugs.webkit.org/show_bug.cgi?id=158938
1951         <rdar://problem/26891128>
1952
1953         Reviewed by Brian Burg.
1954
1955         * Localizations/en.lproj/localizedStrings.js:
1956         * UserInterface/Main.html:
1957         New files and strings.
1958
1959         * UserInterface/Views/JSONResourceContentView.css: Added.
1960         (.content-view.resource.json):
1961         (.content-view.resource.json .object-tree .prototype-property):
1962         Some padding and scrolling for the JSON content view.
1963
1964         * UserInterface/Views/JSONResourceContentView.js: Added.
1965         (WI.JSONResourceContentView):
1966         (WI.JSONResourceContentView.customContentViewDisplayName):
1967         (WI.JSONResourceContentView.prototype.contentAvailable):
1968         (WI.JSONResourceContentView.prototype.closed):
1969         JSON view evaluates the JSON content on the page and shows an ObjectTree
1970         for the resulting object.
1971
1972         * UserInterface/Views/ResourceClusterContentView.js:
1973         (WI.ResourceClusterContentView):
1974         (WI.ResourceClusterContentView.prototype.get customResponseContentView):
1975         (WI.ResourceClusterContentView.prototype.get selectionPathComponents):
1976         (WI.ResourceClusterContentView.prototype.restoreFromCookie):
1977         (WI.ResourceClusterContentView.prototype.showResponse):
1978         (WI.ResourceClusterContentView.prototype._canShowRequestContentView):
1979         (WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView):
1980         (WI.ResourceClusterContentView.prototype._pathComponentForContentView):
1981         (WI.ResourceClusterContentView.prototype._identifierForContentView):
1982         (WI.ResourceClusterContentView.prototype._showContentViewForIdentifier):
1983         (WI.ResourceClusterContentView.prototype._resourceTypeDidChange):
1984         (WI.ResourceClusterContentView.prototype._resourceLoadingDidFinish):
1985         (WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentView):
1986         (WI.ResourceClusterContentView.prototype._customContentViewConstructorForResource):
1987         Allow a custom content view to be used for a resource based on the response.
1988         Currently the only custom content view is the JSON content view.
1989
1990 2017-10-20  Joseph Pecoraro  <pecoraro@apple.com>
1991
1992         Web Inspector: Network Tab - Turn on the new tab by default, remove the legacy network tab
1993         https://bugs.webkit.org/show_bug.cgi?id=178559
1994         <rdar://problem/34985503>
1995
1996         Reviewed by Matt Baker.
1997
1998         * Localizations/en.lproj/localizedStrings.js:
1999         * UserInterface/Base/Main.js:
2000         (WI.contentLoaded):
2001         * UserInterface/Base/Setting.js:
2002         * UserInterface/Main.html:
2003         * UserInterface/Views/LegacyNetworkSidebarPanel.css: Removed.
2004         * UserInterface/Views/LegacyNetworkSidebarPanel.js: Removed.
2005         * UserInterface/Views/LegacyNetworkTabContentView.js: Removed.
2006         * UserInterface/Views/NetworkGridContentView.css: Removed.
2007         * UserInterface/Views/NetworkGridContentView.js: Removed.
2008         * UserInterface/Views/TabBrowser.js:
2009         (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
2010         Remove LegacyNetwork tab, its NetworkGridContentView, and associated content.
2011
2012         * UserInterface/Views/NetworkTabContentView.js:
2013         (WI.NetworkTabContentView.isTabAllowed):
2014         Simplify now that this is the only Network tab.
2015
2016         * UserInterface/Views/SettingsTabContentView.js:
2017         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018         Remove experimental setting.
2019
2020
2021 2017-10-19  Joseph Pecoraro  <pecoraro@apple.com>
2022
2023         Unreviewed localized strings update.
2024
2025         * Localizations/en.lproj/localizedStrings.js:
2026         Add missing string after r223735.
2027
2028 2017-10-19  Joseph Pecoraro  <pecoraro@apple.com>
2029
2030         Web Inspector: Network Tab: Metrics Detail View
2031         https://bugs.webkit.org/show_bug.cgi?id=178323
2032         <rdar://problem/34071929>
2033
2034         Reviewed by Devin Rousso.
2035
2036         Provide a Metrics detail view for resources in the Network tab.
2037         This detail view shows:
2038         
2039           - Transfer Size information (Header + Body bytes)
2040           - Resource Size information (Compression, MIME)
2041           - Timing information (ResourceTiming, Waterfall breakdown)
2042
2043         The display of timing information isn't quite final. But this
2044         is a good starting point for all the information.
2045
2046         * Localizations/en.lproj/localizedStrings.js:
2047         * UserInterface/Main.html:
2048         New resources and strings.
2049
2050         * UserInterface/Base/MIMETypeUtilities.js:
2051         (WI.shouldTreatMIMETypeAsText):
2052         Helper for detecting text resources.
2053
2054         * UserInterface/Images/Receiving.svg: Added.
2055         * UserInterface/Images/Sending.svg: Added.
2056         * UserInterface/Images/gtk/Receiving.svg: Added.
2057         * UserInterface/Images/gtk/Sending.svg: Added.
2058         Same images for main and linux ports with different licenses.
2059
2060         * UserInterface/Views/NetworkResourceDetailView.js:
2061         (WI.NetworkResourceDetailView):
2062         (WI.NetworkResourceDetailView.prototype.metricsContentViewGoToHeaders):
2063         (WI.NetworkResourceDetailView.prototype.metricsContentViewGoToRequestBody):
2064         (WI.NetworkResourceDetailView.prototype.metricsContentViewGoToResponseBody):
2065         (WI.NetworkResourceDetailView.prototype.initialLayout):
2066         (WI.NetworkResourceDetailView.prototype._showPreferredContentView):
2067         (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
2068         Replace "Timing" and "Details" stubs with a single "Metrics" section.
2069         Handle delegate cases from the Metrics content view.
2070
2071         * UserInterface/Views/NetworkTableContentView.js:
2072         (WI.NetworkTableContentView.displayNameForResource):
2073         (WI.NetworkTableContentView.prototype._displayType): Deleted.
2074         (WI.NetworkTableContentView.prototype._entryForResource):
2075         Promote this to a static helper in case anyone else wants it.
2076
2077         (WI.NetworkTableContentView.prototype.closed):
2078         (WI.NetworkTableContentView.prototype.reset):
2079         (WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
2080         Reorder code a bit to reduce work since hiding the detail view currently
2081         forces a layout.
2082
2083         * UserInterface/Views/ResourceHeadersContentView.js:
2084         (WI.ResourceHeadersContentView):
2085         (WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
2086         (WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
2087         (WI.ResourceHeadersContentView.prototype._goToRequestDataClicked): Deleted.
2088         Simplify by making the delegate required.
2089
2090         * UserInterface/Views/ResourceMetricsContentView.css: Added.
2091         (.resource-metrics):
2092         (.resource-metrics > .content):
2093         (.resource-metrics > .content .label):
2094         General metrics styles.
2095
2096         (.resource-metrics > .content > section):
2097         (.resource-metrics > .content > section .subtitle):
2098         (.resource-metrics > .content > section:not(:last-of-type)):
2099         (.resource-metrics > .content > section.split):
2100         (.resource-metrics > .content > section.split > .subsection):
2101         (.resource-metrics > .content > section.split > .subsection > table):
2102         (.resource-metrics > .content > section.split > .divider):
2103         (.resource-metrics > .content > section.network > .subsection > .container):
2104         (.resource-metrics > .content > section.network .bytes-group):
2105         (.resource-metrics > .content > section.network .bytes):
2106         (body[dir=ltr] .resource-metrics > .content > section.network table > tr > td.label):
2107         (body[dir=rtl] .resource-metrics > .content > section.network table > tr > td.label):
2108         (.resource-metrics > .content > section.network .suffix):
2109         (.resource-metrics > .content > section.network img):
2110         (.resource-metrics > .content > section.network .go-to-arrow):
2111         (.resource-metrics > .content > section.network .warning):
2112         Styles for Sizes sections.
2113
2114         (.resource-metrics > .content > section.timing):
2115         (.resource-metrics > .content > section.timing .subtitle):
2116         (.resource-metrics > .content > section.timing > ul):
2117         (.resource-metrics > .content > section.timing > ul > li):
2118         (.resource-metrics > .content > section.timing > .waterfall):
2119         (.resource-metrics > .content > section.timing > .waterfall .block):
2120         (.resource-metrics > .content > section.timing > ul > li > .row-label):
2121         (body[dir=ltr] .resource-metrics > .content > section.timing > ul > li > .row-label):
2122         (body[dir=rtl] .resource-metrics > .content > section.timing > ul > li > .row-label):
2123         (.resource-metrics > .content > section.timing > ul > li > .time-label):
2124         (.resource-metrics > .content > section.timing > ul > li.total .block):
2125         (.resource-metrics > .content > section.timing > ul > li.total .time-label):
2126         (.resource-metrics > .content > section.timing .indeterminate-progress-spinner):
2127         (.resource-metrics > .content > section.timing .empty):
2128         Styles for Timing section.
2129
2130         * UserInterface/Views/ResourceMetricsContentView.js: Added.
2131         (WI.ResourceMetricsContentView):
2132         (WI.ResourceMetricsContentView.prototype.initialLayout.createSizeComponents):
2133         (WI.ResourceMetricsContentView.prototype.initialLayout):
2134         (WI.ResourceMetricsContentView.prototype.layout):
2135         (WI.ResourceMetricsContentView.prototype.closed):
2136         (WI.ResourceMetricsContentView.prototype._sizeComponents):
2137         (WI.ResourceMetricsContentView.prototype._refreshTransferSizeSections.appendGoToArrow):
2138         (WI.ResourceMetricsContentView.prototype._refreshTransferSizeSections):
2139         (WI.ResourceMetricsContentView.prototype._refreshResourceSizeSection):
2140         (WI.ResourceMetricsContentView.prototype._refreshTimingSection.createBlock):
2141         (WI.ResourceMetricsContentView.prototype._refreshTimingSection.createTimeLabel):
2142         (WI.ResourceMetricsContentView.prototype._refreshTimingSection.createRow):
2143         (WI.ResourceMetricsContentView.prototype._refreshTimingSection):
2144         (WI.ResourceMetricsContentView.prototype._resourceSizeDidChange):
2145         (WI.ResourceMetricsContentView.prototype._resourceTransferSizeDidChange):
2146         (WI.ResourceMetricsContentView.prototype._resourceMetricsDidChange):
2147         (WI.ResourceMetricsContentView.prototype._resourceTimestampsDidChange):
2148         Metrics content. This just creates all of the elements, and saves a
2149         few to get populated with data later on.
2150
2151 2017-10-19  Joseph Pecoraro  <pecoraro@apple.com>
2152
2153         Web Inspector: Network Tab - Improve graphical representation of network waterfall
2154         https://bugs.webkit.org/show_bug.cgi?id=147897
2155         <rdar://problem/27482198>
2156
2157         Reviewed by Brian Burg.
2158
2159         * Localizations/en.lproj/localizedStrings.js:
2160         * UserInterface/Main.html:
2161         New strings and resources.
2162
2163         * UserInterface/Views/Variables.css:
2164         (:root):
2165         Global styles.
2166
2167         * UserInterface/Views/NetworkTableContentView.css:
2168         (.network-table .header .cell.waterfall):
2169         (.network-table .timeline-ruler):
2170         (.network-table .timeline-ruler > .header):
2171         Styles for having a TimelineRuler in the Waterfall's table header.
2172
2173         (.network-table :not(.header) .cell.waterfall):
2174         (.network-table :not(.header) .cell.waterfall .waterfall-container):
2175         (.waterfall .block):
2176         (.waterfall .block.request,):
2177         (.waterfall .block.mouse):
2178         (.waterfall .block.queue):
2179         (.waterfall .block.dns):
2180         (.waterfall .block.connect):
2181         (.waterfall .block.secure):
2182         (.waterfall .block.request):
2183         (.waterfall .block.response):
2184         Waterfall styles inside the Network Table.
2185
2186         * UserInterface/Views/NetworkTableContentView.js:
2187         (WI.NetworkTableContentView):
2188         (WI.NetworkTableContentView.prototype.reset):
2189         (WI.NetworkTableContentView.prototype.tablePopulateCell):
2190         (WI.NetworkTableContentView.prototype.initialLayout):
2191         (WI.NetworkTableContentView.prototype._updateWaterfallTimelineRuler):
2192         (WI.NetworkTableContentView.prototype._updateEntryForResource):
2193         (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
2194         (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
2195         (WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
2196         (WI.NetworkTableContentView.prototype._tableWaterfallColumnDidChangeWidth):
2197         Update the TimelineRuler and Waterfall column when the column's
2198         size changes or the time bounds change. The time bounds right now
2199         are the earliest and latest time of resources. Later we hope to
2200         bound this by a timeline selection.
2201
2202         (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
2203         (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
2204         (WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
2205         (WI.NetworkTableContentView.prototype._populateWaterfallGraph):
2206         (WI.NetworkTableContentView.prototype._hidePopover):
2207         Create and manage a popover for the waterfall column.
2208
2209         * UserInterface/Views/Popover.js:
2210         (WI.Popover):
2211         (WI.Popover.prototype.get element):
2212         (WI.Popover.prototype.get visible):
2213         (WI.Popover.prototype.get backgroundStyle):
2214         (WI.Popover.prototype.set backgroundStyle):
2215         (WI.Popover.prototype._drawBackground):
2216         Provide an option to have a white background popover.
2217
2218         * UserInterface/Views/ResourceTimingBreakdownView.css: Added.
2219         (.resource-timing-breakdown):
2220         (.resource-timing-breakdown .waterfall):
2221         (.resource-timing-breakdown .waterfall .block):
2222         (.resource-timing-breakdown .waterfall .block.request):
2223         (body[dir=ltr] .resource-timing-breakdown .waterfall .block.queue,):
2224         (body[dir=ltr] .resource-timing-breakdown .waterfall .block.response):
2225         (body[dir=rtl] .resource-timing-breakdown .waterfall .block.queue,):
2226         (body[dir=rtl] .resource-timing-breakdown .waterfall .block.response):
2227         (.resource-timing-breakdown .numbers):
2228         (body[dir=ltr] .resource-timing-breakdown .numbers):
2229         (body[dir=rtl] .resource-timing-breakdown .numbers):
2230         Waterfall styles and sizes in the popover's breakdown view.
2231
2232         (.resource-timing-breakdown .numbers > p):
2233         (.resource-timing-breakdown .numbers > p > .swatch):
2234         (.resource-timing-breakdown .numbers .swatch.queue):
2235         (.resource-timing-breakdown .numbers .swatch.dns):
2236         (.resource-timing-breakdown .numbers .swatch.connect):
2237         (.resource-timing-breakdown .numbers .swatch.secure):
2238         (.resource-timing-breakdown .numbers .swatch.request):
2239         (.resource-timing-breakdown .numbers .swatch.response):
2240         (.resource-timing-breakdown .numbers > p > .label):
2241         (.resource-timing-breakdown .numbers > p.total):
2242         Number and label styles in the popover's breakdown view.
2243
2244         * UserInterface/Views/ResourceTimingBreakdownView.js: Added.
2245         (WI.ResourceTimingBreakdownView):
2246         (WI.ResourceTimingBreakdownView.prototype.initialLayout):
2247         (WI.ResourceTimingBreakdownView.prototype.initialLayout.appendBlock):
2248         (WI.ResourceTimingBreakdownView.prototype.initialLayout.appendRow):
2249         Show a section for a waterfall visualization and a section for the numbers.
2250
2251         * UserInterface/Views/Table.js:
2252         (WI.Table.prototype.reloadVisibleColumnCells):
2253         (WI.Table.prototype.cellForRowAndColumn):
2254         (WI.Table.prototype.addColumn):
2255         (WI.Table.prototype.showColumn):
2256         (WI.Table.prototype.hideColumn):
2257         (WI.Table.prototype.resizerDragging):
2258         (WI.Table.prototype.resizerDragEnded):
2259         (WI.Table.prototype._resizeColumnsAndFiller):
2260         (WI.Table.prototype._applyColumnWidths):
2261         (WI.Table.prototype._positionHeaderViews):
2262         * UserInterface/Views/TableColumn.js:
2263         (WI.TableColumn.prototype.get headerView):
2264         Provide a way to include a WI.View with a TableColumn Header. This
2265         matches what we do with DataGrid, and ends up being pretty concise.
2266
2267         * UserInterface/Views/TimelineRuler.css:
2268         (.timeline-ruler > .header):
2269         Make the height a variable so that other code can work off of it.
2270
2271 2017-10-19  Ross Kirsling  <ross.kirsling@sony.com>
2272
2273         Web Inspector: Remove superfluous file External/.eslintrc
2274         https://bugs.webkit.org/show_bug.cgi?id=178474
2275
2276         Reviewed by Joseph Pecoraro.
2277
2278         * UserInterface/External/.eslintrc: Removed.
2279
2280 2017-10-19  Adrian Perez de Castro  <aperez@igalia.com>
2281
2282         [GTK] Inspector UI does not use system font despite -webkit-system-font being supported
2283         https://bugs.webkit.org/show_bug.cgi?id=178388
2284
2285         Reviewed by Joseph Pecoraro.
2286
2287         Change ocurrences of the "-apple-system" generic font name to
2288         "-webkit-system-font", which is also implemented by the GTK+ port.
2289
2290         * UserInterface/Views/CodeMirrorOverrides.css:
2291         (.CodeMirror .CodeMirror-linenumber):
2292         (.CodeMirror .CodeMirror-placeholder):
2293         * UserInterface/Views/ConsoleMessageView.css:
2294         (.console-user-command.special-user-log > .console-message-text):
2295         (.console-message .console-message-extra-parameters-container > li::before):
2296         (.console-message .console-message-location):
2297         * UserInterface/Views/DataGrid.css:
2298         (.data-grid td):
2299         * UserInterface/Views/DefaultDashboardView.css:
2300         (.toolbar .dashboard.default > .item):
2301         * UserInterface/Views/HeapSnapshotInstancesContentView.css:
2302         (.heap-snapshot-instance-popover-content > .title):
2303         * UserInterface/Views/HierarchicalPathComponent.css:
2304         (.hierarchical-path-component):
2305         * UserInterface/Views/LogContentView.css:
2306         (.console-messages):
2307         * UserInterface/Views/Main.css:
2308         (body):
2309         * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
2310         (.object-tree-array-index .index-name):
2311         * UserInterface/Views/ObjectTreePropertyTreeElement.css:
2312         (.object-tree-property .property-name,):
2313         * UserInterface/Views/ObjectTreeView.css:
2314         (.tree-outline.object li .empty-message):
2315         * UserInterface/Views/RecordingActionTreeElement.css:
2316         (.item.action:not(.initial-state)::before):
2317         * UserInterface/Views/SourceCodeTextEditor.css:
2318         (.source-code.text-editor > .CodeMirror .line-indicator-widget > .text):
2319         (.popover .debugger-popover-content > .title):
2320         * UserInterface/Views/TypeTreeView.css:
2321         (.type-tree):
2322         * UserInterface/Views/VisualStyleFontFamilyTreeElement.js:
2323
2324 2017-10-18  Ross Kirsling  <ross.kirsling@sony.com>
2325
2326         Web Inspector: Layers sidebar footer should not have white background with full-width quick console
2327         https://bugs.webkit.org/show_bug.cgi?id=178493
2328
2329         Reviewed by Matt Baker.
2330
2331         * UserInterface/Views/LayerDetailsSidebarPanel.css:
2332         Update CSS for new sidebar.
2333
2334         * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
2335         Update CSS for legacy sidebar.
2336
2337 2017-10-18  Fujii Hironori  <Hironori.Fujii@sony.com>
2338
2339         [GTK] Web Inspector: Add Layers.svg
2340         https://bugs.webkit.org/show_bug.cgi?id=178430
2341
2342         Reviewed by Michael Catanzaro.
2343
2344         * UserInterface/Images/gtk/Layers.svg: Added.
2345
2346 2017-10-18  Commit Queue  <commit-queue@webkit.org>
2347
2348         Unreviewed, rolling out r223321.
2349         https://bugs.webkit.org/show_bug.cgi?id=178476
2350
2351         This protocol change broke some internal builds (Requested by
2352         brrian__ on #webkit).
2353
2354         Reverted changeset:
2355
2356         "Web Inspector: provide a way to enable/disable event
2357         listeners"
2358         https://bugs.webkit.org/show_bug.cgi?id=177451
2359         https://trac.webkit.org/changeset/223321
2360
2361 2017-10-17  Nikita Vasilyev  <nvasilyev@apple.com>
2362
2363         Web Inspector: [PARITY] Styles Redesign: Add color picker inline widget
2364         https://bugs.webkit.org/show_bug.cgi?id=178354
2365
2366         Reviewed by Joseph Pecoraro.
2367
2368         Show color picker using the existing WI.InlineSwatch.
2369
2370         * UserInterface/Models/Color.js:
2371         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
2372         (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-comment):
2373         Syntax highlight comments in values.
2374
2375         * UserInterface/Views/SpreadsheetStyleProperty.js:
2376         (WI.SpreadsheetStyleProperty.prototype._renderValue):
2377         (WI.SpreadsheetStyleProperty.prototype._addColorTokens):
2378         Find colors in CodeMirror tokens and replace them with color token elements.
2379
2380 2017-10-17  Nikita Vasilyev  <nvasilyev@apple.com>
2381
2382         Web Inspector: Styles: Command-click on a property name should jump to definition in Resources tab
2383         https://bugs.webkit.org/show_bug.cgi?id=174329
2384         <rdar://problem/33225564>
2385
2386         Reviewed by Joseph Pecoraro.
2387
2388         * UserInterface/Base/Main.js:
2389         Add "meta-key-pressed" class to <body> when Command key is pressed.
2390
2391         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
2392         (.meta-key-pressed .spreadsheet-css-declaration:not(.locked) :matches(.name, .value):not(.editing):hover):
2393         Use the same styles as in CodeMirrorTokenTrackingController.css.
2394
2395         * UserInterface/Views/SpreadsheetStyleProperty.js:
2396         (WI.SpreadsheetStyleProperty.prototype._update):
2397         (WI.SpreadsheetStyleProperty.prototype._setupJumpToSymbol):
2398         This is very similar to WI.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked,
2399         except it doesn't include special cases for CSS variables and links yet.
2400
2401 2017-10-16  Nikita Vasilyev  <nvasilyev@apple.com>
2402
2403         Web Inspector: Styles Redesign: apply syntax highlighting to property values
2404         https://bugs.webkit.org/show_bug.cgi?id=178176
2405
2406         Reviewed by Matt Baker.
2407
2408         - Highlight links blue and CSS strings dark red.
2409         - Truncate URLs and strings over 150 characters.
2410
2411         * UserInterface/Views/CodeMirrorAdditions.js:
2412         Parse CSS values using CodeMirror.
2413
2414         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
2415         (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-link):
2416         (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-string):
2417
2418         * UserInterface/Views/SpreadsheetStyleProperty.js:
2419         (WI.SpreadsheetStyleProperty.prototype._update):
2420         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldWillStartEditing):
2421         Replace trancated values with their full version.
2422
2423         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
2424         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
2425         (WI.SpreadsheetStyleProperty.prototype._renderValue):
2426         Highlight links and CSS strings in values when not editing.
2427
2428         * UserInterface/Views/SpreadsheetTextField.js:
2429         (WI.SpreadsheetTextField.prototype.startEditing):
2430         Disabling of syntax highlighting moved to spreadsheetTextFieldWillStartEditing.
2431
2432         * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
2433         (.syntax-highlighted a):
2434         * UserInterface/Views/Variables.css:
2435         (:root):
2436         Make link color a variable.
2437
2438 2017-10-16  Ross Kirsling  <ross.kirsling@sony.com>
2439
2440         Web Inspector: Layers tab mistakenly throws out the root element's layer.
2441         https://bugs.webkit.org/show_bug.cgi?id=178222
2442
2443         Reviewed by Brian Burg.
2444
2445         * UserInterface/Controllers/LayerTreeManager.js:
2446         (WI.LayerTreeManager.prototype.layersForNode):
2447         Fix the issue at the manager level.
2448
2449         * UserInterface/Views/Layers3DContentView.js:
2450         (WI.Layers3DContentView.prototype.layout):
2451         Update new sidebar based on simplified manager API.
2452
2453         * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
2454         (WI.LayerTreeDetailsSidebarPanel.prototype.layout):
2455         Move overtailored code from manager to legacy sidebar.
2456
2457 2017-10-15  Nikita Vasilyev  <nvasilyev@apple.com>
2458
2459         Web Inspector: Modify CSS number values with up key and down key
2460         https://bugs.webkit.org/show_bug.cgi?id=170779
2461         <rdar://problem/33170633>
2462
2463         Reviewed by Matt Baker.
2464
2465         Up key increments a number, Down key decrements it.
2466
2467         Holding modifier keys changes the step value:
2468         - Option modifies the value by 0.1
2469         - Shift modifies the value by 10
2470         - Command modifies the value by 100
2471
2472         * UserInterface/Test.html:
2473         * UserInterface/Views/EditingSupport.js:
2474         (WI.incrementElementValue):
2475         Abstract away incrementElementValue into a public method.
2476
2477         * UserInterface/Views/SpreadsheetTextField.js:
2478         (WI.SpreadsheetTextField.prototype._handleKeyDown):
2479
2480 2017-10-15  Devin Rousso  <webkit@devinrousso.com>
2481
2482         Web Inspector: show warning when recorded Canvas action caused no visual change
2483         https://bugs.webkit.org/show_bug.cgi?id=175282
2484
2485         Reviewed by Joseph Pecoraro.
2486
2487         * Localizations/en.lproj/localizedStrings.js:
2488
2489         * UserInterface/Models/RecordingAction.js:
2490         (WI.RecordingAction):
2491         (WI.RecordingAction.prototype.get valid):
2492         (WI.RecordingAction.prototype.get hasVisibleEffect):
2493         (WI.RecordingAction.prototype.markInvalid):
2494         (WI.RecordingAction.prototype.apply):
2495         (WI.RecordingAction.prototype.async._swizzle):
2496         If the selected action is visual, save a copy of the preview canvas' dataURL before
2497         applying the action and compare it to its dataURL after. If there is no difference, the
2498         action had no visual effect.
2499
2500         * UserInterface/Models/Recording.js:
2501         (WI.Recording):
2502
2503         * UserInterface/Views/RecordingActionTreeElement.js:
2504         (WI.RecordingActionTreeElement):
2505         (WI.RecordingActionTreeElement.prototype._handleValidityChanged):
2506         (WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):
2507         * UserInterface/Views/RecordingActionTreeElement.css:
2508         (.item.action.visual.no-visible-effect:not(.invalid) > .status > .warning):
2509
2510         * UserInterface/Views/RecordingContentView.js:
2511         (WI.RecordingContentView):
2512         (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
2513         (WI.RecordingContentView.prototype._applyAction): Deleted.
2514
2515 2017-10-15  Nikita Vasilyev  <nvasilyev@apple.com>
2516
2517         Web Inspector: [PARITY] Styles Redesign: clicking on the go-to arrow in Computed tab should work
2518         https://bugs.webkit.org/show_bug.cgi?id=178286
2519         <rdar://problem/34986379>
2520
2521         Reviewed by Joseph Pecoraro.
2522
2523         Highlight the matching property using a yellow background and focus on the property value
2524         if the property is editable (e.g., not a User Agent style).
2525
2526         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
2527         (.spreadsheet-style-declaration-editor):
2528         (.spreadsheet-style-declaration-editor .property):
2529         Move left padding to the property element so there's no awkward gap on the left side
2530         when the property is highlighted.
2531
2532         (.spreadsheet-style-declaration-editor .property.highlighted):
2533         (@keyframes style-property-highlight):
2534         Use the same animation duration as we used in `.text-editor > .CodeMirror .highlighted`.
2535         The highlight color was changed from light blue to yellow.
2536
2537         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
2538         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
2539         Use the same logic as in WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty
2540         to find matching style property to highlight.
2541
2542         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
2543         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.highlightProperty):
2544         Use the same logic as in WI.CSSStyleDeclarationSection.prototype.highlightProperty.
2545
2546         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
2547         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
2548         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
2549         Copied from WI.RulesStyleDetailsPanel.
2550
2551         * UserInterface/Views/SpreadsheetStyleProperty.js:
2552         (WI.SpreadsheetStyleProperty):
2553         (WI.SpreadsheetStyleProperty.prototype.detached):
2554         (WI.SpreadsheetStyleProperty.prototype.highlight):
2555
2556 2017-10-14  Nikita Vasilyev  <nvasilyev@apple.com>
2557
2558         REGRESSION (r223310): Web Inspector: Class list container is transparent and unreadable
2559         https://bugs.webkit.org/show_bug.cgi?id=178311
2560
2561         Reviewed by Devin Rousso.
2562
2563         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
2564         (.sidebar > .panel.details.css-style > .content ~ .class-list-container):
2565         Fix 1px hole below the class container.
2566
2567 2017-10-14  Matt Baker  <mattbaker@apple.com>
2568
2569         Web Inspector: Canvas tab: recordings should have a unique name
2570         https://bugs.webkit.org/show_bug.cgi?id=178188
2571         <rdar://problem/34943364>
2572
2573         Reviewed by Devin Rousso.
2574
2575         * Localizations/en.lproj/localizedStrings.js:
2576         New format string "Recording %d".
2577
2578         * UserInterface/Base/FileUtilities.js:
2579         (WI.loadDataFromFile):
2580         Pass chosen filename to callback.
2581
2582         * UserInterface/Controllers/CanvasManager.js:
2583         (WI.CanvasManager.prototype.recordingFinished):
2584         Create a unique name for the recording.
2585
2586         * UserInterface/Models/Recording.js:
2587         (WI.Recording):
2588         (WI.Recording.fromPayload):
2589         (WI.Recording.prototype.get displayName):
2590         (WI.Recording.prototype.createDisplayName):
2591
2592         * UserInterface/Views/RecordingContentView.js:
2593         (WI.RecordingContentView.prototype.get saveData):
2594         Use encodeURI so that special characters can be used in filenames, and
2595         to be consistent with other `saveData` implementations.
2596
2597         * UserInterface/Views/RecordingNavigationSidebarPanel.js:
2598         (WI.RecordingNavigationSidebarPanel.prototype.set recording):
2599         (WI.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
2600         Drive-by fix: wait until actions are resolved before updating UI.
2601
2602         * UserInterface/Views/RecordingTabContentView.js:
2603         (WI.RecordingTabContentView.prototype._navigationSidebarImport):
2604         Try to use the imported filename as the recording name. If the name
2605         collides with that of another imported recording, append a unique suffix.
2606
2607 2017-10-14  Devin Rousso  <webkit@devinrousso.com>
2608
2609         Web Inspector: provide a way to enable/disable event listeners
2610         https://bugs.webkit.org/show_bug.cgi?id=177451
2611
2612         Reviewed by Joseph Pecoraro.
2613
2614         * Localizations/en.lproj/localizedStrings.js:
2615
2616         * UserInterface/Controllers/DOMTreeManager.js:
2617         (WI.DOMTreeManager.prototype.setEventListenerDisabled):
2618
2619         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
2620         (WI.DOMNodeDetailsSidebarPanel.prototype.attached):
2621         (WI.DOMNodeDetailsSidebarPanel.prototype.detached):
2622         (WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
2623         (WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
2624         (WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
2625         Listen for `WI.DOMNode.Event.EventListenersChanged` on all instances of WI.DOMNode, since we
2626         will still want to refresh the event listeners section in the event that an event listener
2627         is removed from a parent node.
2628
2629         * UserInterface/Views/EventListenerSectionGroup.js:
2630         (WI.EventListenerSectionGroup):
2631         (WI.EventListenerSectionGroup.prototype._eventText):
2632         (WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
2633         (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
2634         (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):
2635         * UserInterface/Views/EventListenerSectionGroup.css:
2636         (.event-listener-section > .content input[type="checkbox"]):
2637
2638         * UserInterface/Views/DetailsSectionSimpleRow.js:
2639         (WI.DetailsSectionSimpleRow.prototype.get label):
2640         (WI.DetailsSectionSimpleRow.prototype.set label):
2641
2642 2017-10-13  Devin Rousso  <webkit@devinrousso.com>
2643
2644         Web Inspector: make split console full width of view
2645         https://bugs.webkit.org/show_bug.cgi?id=176635
2646
2647         Reviewed by Timothy Hatcher.
2648
2649         * UserInterface/Main.html:
2650         * UserInterface/Views/Main.css:
2651         (#main):
2652         (#content):
2653         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
2654         (.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):
2655         (.sidebar > .panel.details.css-style > .content ~ .options-container):
2656
2657 2017-10-13  Devin Rousso  <webkit@devinrousso.com>
2658
2659         Web Inspector: fix ESLint errors
2660         https://bugs.webkit.org/show_bug.cgi?id=175065
2661
2662         Reviewed by Joseph Pecoraro.
2663
2664         Removed trailing whitespace, extra parenthesis, and some unnecessary escape characters.
2665         Added missing semicolons, spacing around default values for parameters, and changed `==` to
2666         `===` where applicable.
2667
2668         Specific changes to each file were removed for brevity.
2669
2670         * .eslintrc:
2671         Alphabetize each list of global variables and add some missing utility functions.
2672
2673         * UserInterface/Base/EventListener.js:
2674         * UserInterface/Base/EventListenerSet.js:
2675         * UserInterface/Base/Main.js:
2676         * UserInterface/Base/Setting.js:
2677         * UserInterface/Base/TextUtilities.js:
2678         * UserInterface/Base/URLUtilities.js:
2679         * UserInterface/Base/Utilities.js:
2680         * UserInterface/Base/YieldableTask.js:
2681         * UserInterface/Controllers/AppControllerBase.js:
2682         * UserInterface/Controllers/CanvasManager.js:
2683         * UserInterface/Controllers/CodeMirrorCompletionController.js:
2684         * UserInterface/Controllers/DOMDebuggerManager.js:
2685         * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
2686         * UserInterface/Controllers/RuntimeManager.js:
2687         * UserInterface/Controllers/SourceMapManager.js:
2688         * UserInterface/Debug/DebugContentView.js:
2689         * UserInterface/Debug/UncaughtExceptionReporter.js:
2690         * UserInterface/Models/CSSKeywordCompletions.js:
2691         * UserInterface/Models/DOMNode.js:
2692         * UserInterface/Models/DOMNodeStyles.js:
2693         * UserInterface/Models/KeyboardShortcut.js:
2694         * UserInterface/Models/ProfileNode.js:
2695         * UserInterface/Models/Resource.js:
2696         * UserInterface/Models/ResourceCollection.js:
2697         * UserInterface/Models/Script.js:
2698         * UserInterface/Models/ScriptSyntaxTree.js:
2699         * UserInterface/Models/ScriptTimelineRecord.js:
2700         * UserInterface/Protocol/Connection.js:
2701         * UserInterface/Test/FrontendTestHarness.js:
2702         * UserInterface/Test/TestHarness.js:
2703         * UserInterface/Views/CSSStyleDeclarationSection.js:
2704         * UserInterface/Views/ChartDetailsSectionRow.js:
2705         * UserInterface/Views/CodeMirrorAdditions.js:
2706         * UserInterface/Views/CodeMirrorFormatters.js:
2707         * UserInterface/Views/CodeMirrorRegexMode.js:
2708         * UserInterface/Views/ContentBrowserTabContentView.js:
2709         * UserInterface/Views/DataGrid.js:
2710         * UserInterface/Views/DataGridNode.js:
2711         * UserInterface/Views/FindBanner.js:
2712         * UserInterface/Views/GroupNavigationItem.js:
2713         * UserInterface/Views/HierarchicalPathNavigationItem.js:
2714         * UserInterface/Views/NetworkTableContentView.js:
2715         * UserInterface/Views/NetworkTimelineView.js:
2716         * UserInterface/Views/ObjectTreePropertyTreeElement.js:
2717         * UserInterface/Views/ObjectTreeView.js:
2718         * UserInterface/Views/RecordingContentView.js:
2719         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
2720         * UserInterface/Views/ResourceCookiesContentView.js:
2721         * UserInterface/Views/ResourceDetailsSection.js:
2722         * UserInterface/Views/ResourceHeadersContentView.js:
2723         * UserInterface/Views/ResourceTimelineDataGridNode.js:
2724         * UserInterface/Views/SettingEditor.js:
2725         * UserInterface/Views/Sidebar.js:
2726         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
2727         * UserInterface/Views/Table.js:
2728         * UserInterface/Views/TextEditor.js:
2729         * UserInterface/Views/TimelineDataGridNode.js:
2730         * UserInterface/Views/TreeElement.js:
2731         * UserInterface/Views/TreeOutline.js:
2732         * UserInterface/Views/WebSocketDataGridNode.js:
2733         * UserInterface/Workers/Formatter/EsprimaFormatter.js:
2734         * UserInterface/Workers/Formatter/FormatterWorker.js:
2735
2736 2017-10-13  Nikita Vasilyev  <nvasilyev@apple.com>
2737
2738         Web Inspector: Styles Redesign: hook up autocompletion to property names and values
2739         https://bugs.webkit.org/show_bug.cgi?id=177313
2740         <rdar://problem/34577057>
2741
2742         Reviewed by Joseph Pecoraro.
2743
2744         - Arrow Right accept the current completion item and places the text caret after it.
2745         - Arrow Left hides the completion popover.
2746         - Arrow Up selects the previous completion item.
2747         - Arrow Down selects the next completion item.
2748         - Enter and Tab accept the current completion item and navigate to the next focusable item.
2749         - Escape hides the completion popover, if there is one.
2750
2751         * UserInterface/Views/CompletionSuggestionsView.js:
2752         (WI.CompletionSuggestionsView):
2753         (WI.CompletionSuggestionsView.prototype._mouseDown):
2754         Add a preventBlur option so clicking on an completion item doesn't change the focus and
2755         doesn't cause "blur" event on the target text field.
2756
2757         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
2758         (.spreadsheet-style-declaration-editor .completion-hint):
2759         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
2760         (WI.SpreadsheetCSSStyleDeclarationEditor):
2761         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
2762         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
2763         Call detached on every SpreadsheetTextField to hide CompletionSuggestionsView once
2764         SpreadsheetCSSStyleDeclarationEditor is removed from the DOM.
2765
2766         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
2767         Remove index argument since it is no longer used.
2768
2769         * UserInterface/Views/SpreadsheetStyleProperty.js:
2770         (WI.SpreadsheetStyleProperty):
2771         (WI.SpreadsheetStyleProperty.prototype.detached):
2772         (WI.SpreadsheetStyleProperty.prototype._remove):
2773         (WI.SpreadsheetStyleProperty.prototype._update):
2774         (WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
2775         (WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
2776         Add an extra parameter to SpreadsheetTextField to pass a completion data provider.
2777
2778         * UserInterface/Views/SpreadsheetTextField.js:
2779         (WI.SpreadsheetTextField):
2780         (WI.SpreadsheetTextField.prototype.get suggestionHint):
2781         (WI.SpreadsheetTextField.prototype.set suggestionHint):
2782         (WI.SpreadsheetTextField.prototype.startEditing):
2783         (WI.SpreadsheetTextField.prototype.stopEditing):
2784         (WI.SpreadsheetTextField.prototype.detached):
2785         (WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
2786         (WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
2787         (WI.SpreadsheetTextField.prototype._getPrefix):
2788         (WI.SpreadsheetTextField.prototype._handleBlur):
2789         (WI.SpreadsheetTextField.prototype._handleKeyDown):
2790         (WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
2791         (WI.SpreadsheetTextField.prototype._handleInput):
2792         (WI.SpreadsheetTextField.prototype._updateCompletions):
2793         (WI.SpreadsheetTextField.prototype._getCaretRect):
2794         (WI.SpreadsheetTextField.prototype._getCompletionPrefix):
2795         (WI.SpreadsheetTextField.prototype._applyCompletionHint):
2796         (WI.SpreadsheetTextField.prototype._hideCompletions):
2797         Provide text completion based on the existing CompletionSuggestionsView when completionProvider is passed to SpreadsheetTextField.
2798
2799 2017-10-12  Joseph Pecoraro  <pecoraro@apple.com>
2800
2801         Web Inspector: Switch Clear navigation item back to the Trash icon (Console, Timelines, Network)
2802         https://bugs.webkit.org/show_bug.cgi?id=178244
2803         <rdar://problem/34966525>
2804
2805         Reviewed by Brian Burg.
2806
2807         * UserInterface/Images/NavigationItemClear.svg: Removed.
2808         * UserInterface/Images/gtk/NavigationItemClear.svg: Removed.
2809         * UserInterface/Views/LogContentView.js:
2810         (WI.LogContentView):
2811         * UserInterface/Views/NetworkGridContentView.js:
2812         (WI.NetworkGridContentView):
2813         * UserInterface/Views/NetworkTableContentView.js:
2814         (WI.NetworkTableContentView):
2815         * UserInterface/Views/TimelineRecordingContentView.js:
2816         (WI.TimelineRecordingContentView):
2817         Many users found the new Clear icon confusing. Revert to the Trash icon.
2818
2819 2017-10-11  Ross Kirsling  <ross.kirsling@sony.com>
2820
2821         Web Inspector: Make 3D objects selectable in Layers visualization
2822         https://bugs.webkit.org/show_bug.cgi?id=178136
2823
2824         Reviewed by Devin Rousso.
2825
2826         * UserInterface/Views/Layers3DContentView.js:
2827         (WI.Layers3DContentView):
2828         (WI.Layers3DContentView.prototype.initialLayout):
2829         (WI.Layers3DContentView.prototype._canvasMouseDown):
2830         (WI.Layers3DContentView.prototype._updateLayerGroupSelection):
2831         Implement selection of 3D layer objects.
2832         
2833         (WI.Layers3DContentView.prototype._addLayerGroup): Renamed from _addLayer.
2834         (WI.Layers3DContentView.prototype._updateLayerGroupPosition):
2835         (WI.Layers3DContentView.prototype._createLayerMesh):
2836         Refactor -- one group per layer (visible plane and composited outline), not groups by shape.
2837
2838         (WI.Layers3DContentView.prototype.layout):
2839         (WI.Layers3DContentView.prototype._updateLayers):
2840         (WI.Layers3DContentView.prototype._clearLayers): Deleted.
2841         Don't destroy all 3D objects on every LayerTreeDidChange; make use of layerTreeMutations.
2842         (Not only a performance improvement, but also necessary to properly preserve highlighting.) 
2843         
2844         (WI.Layers3DContentView.prototype.selectLayerById):
2845         Allow selection to be updated from the outside.
2846
2847         * UserInterface/Views/LayerDetailsSidebarPanel.js:
2848         (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
2849         (WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
2850         (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
2851         Allow selection to be updated from the outside.
2852
2853         (WI.LayerDetailsSidebarPanel.prototype.inspect):
2854         (WI.LayerDetailsSidebarPanel.prototype._updateLayers): Renamed from _updateDisplayWithLayers.
2855         (WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):
2856         (WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
2857         (WI.LayerDetailsSidebarPanel.prototype._contentForPopover):
2858         (WI.LayerDetailsSidebarPanel.prototype._dataGridNodeForLayer): Deleted.
2859         Cleanup.
2860         
2861         * UserInterface/Views/LayersTabContentView.js:
2862         (WI.LayersTabContentView):
2863         (WI.LayersTabContentView.prototype._detailsSidebarSelectedLayerChanged):
2864         (WI.LayersTabContentView.prototype._contentViewSelectedLayerChanged):
2865         Orchestrate communication of selection state between visualization and sidebar.
2866
2867 2017-10-11  Joseph Pecoraro  <pecoraro@apple.com>
2868
2869         Web Inspector: Avoid "100.00ms" vs "100.0ms" jitter in TimelineRuler labels
2870         https://bugs.webkit.org/show_bug.cgi?id=178143
2871
2872         Reviewed by Brian Burg.
2873
2874         * UserInterface/Base/Utilities.js:
2875         Allow a small slop factor that wouldn't have changed the display value's
2876         significant figures anyways. This addresses cases where 100.0000000000001
2877         were being treated slightly differently from 100.0.
2878
2879 2017-10-11  Joseph Pecoraro  <pecoraro@apple.com>
2880
2881         Web Inspector: Network Tab - Show initially loaded resources even if network info not logged
2882         https://bugs.webkit.org/show_bug.cgi?id=178098
2883         <rdar://problem/34073529>
2884
2885         Reviewed by Devin Rousso.
2886
2887         * UserInterface/Models/Resource.js:
2888         (WI.Resource.prototype.hasResponse):
2889         Resources loaded by Page.getFrameTree have a response but no status code data.
2890         So include finished resources as having a resource.
2891
2892         * UserInterface/Views/NetworkTableContentView.js:
2893         (WI.NetworkTableContentView):
2894         (WI.NetworkTableContentView.prototype.closed):
2895         (WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
2896         (WI.NetworkTableContentView.prototype._mainFrameDidChange):
2897         Listen for the first main frame change to perform an initial population.
2898
2899         (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
2900         This path is not currently taken when table is null, but change the code so
2901         that if it is reached without the table it would behave gracefully.
2902
2903         * UserInterface/Views/ResourceHeadersContentView.js:
2904         (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
2905         On first open none of the resources have a statusCode. Show an emDash.
2906
2907 2017-10-10  Brian Burg  <bburg@apple.com>
2908
2909         Web Inspector: Quick Open: source mapped files are not shown as search results
2910         https://bugs.webkit.org/show_bug.cgi?id=178151
2911         <rdar://problem/31561718>
2912
2913         Reviewed by Joseph Pecoraro.
2914
2915         * UserInterface/Views/OpenResourceDialog.js:
2916         (WI.OpenResourceDialog.prototype._addResource):
2917         Also consider matching the query string against SourceMapResources
2918         attached to a resource's source maps.
2919
2920 2017-10-10  Joseph Pecoraro  <pecoraro@apple.com>
2921
2922         Web Inspector: Network Tab - Set column initial widths to try allow waterfall column to expand more by default
2923         https://bugs.webkit.org/show_bug.cgi?id=178142
2924         <rdar://problem/34918233>
2925
2926         Reviewed by Brian Burg.
2927
2928         * UserInterface/Views/NetworkTableContentView.js:
2929         (WI.NetworkTableContentView.prototype.initialLayout):
2930         Provide initial widths for many columns where the max could fit
2931         but we'd prefer a smaller than max initial width in wide cases.
2932
2933         * UserInterface/Views/Table.js:
2934         (WI.Table.prototype._resizeColumnsAndFiller):
2935         When auto sizing all columns use the preferred initial widths.
2936
2937         * UserInterface/Views/TableColumn.js:
2938         (WI.TableColumn.prototype.get preferredInitialWidth):
2939         Save the initial width.
2940
2941 2017-10-10  Ross Kirsling  <ross.kirsling@sony.com>
2942
2943         Web Inspector: Views should explicitly remove event listeners from managers/Frame
2944         https://bugs.webkit.org/show_bug.cgi?id=175951
2945
2946         Reviewed by Brian Burg.
2947
2948         * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
2949         (WI.ApplicationCacheDetailsSidebarPanel.prototype.closed):
2950         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
2951         (WI.DOMNodeDetailsSidebarPanel.prototype.closed):
2952         * UserInterface/Views/DebuggerDashboardView.js:
2953         (WI.DebuggerDashboardView.prototype.closed):
2954         * UserInterface/Views/LogContentView.js:
2955         (WI.LogContentView.prototype.closed):
2956         * UserInterface/Views/NetworkGridContentView.js:
2957         (WI.NetworkGridContentView.prototype.closed):
2958         * UserInterface/Views/ProbeDetailsSidebarPanel.js:
2959         (WI.ProbeDetailsSidebarPanel.prototype.closed):
2960         * UserInterface/Views/QuickConsole.js:
2961         (WI.QuickConsole.prototype.closed):
2962         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
2963         (WI.ScopeChainDetailsSidebarPanel.prototype.closed):
2964         * UserInterface/Views/TimelineOverview.js:
2965         (WI.TimelineOverview.prototype.closed):
2966
2967 2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>
2968
2969         Web Inspector: Network Tab - Include remote address in the Headers view
2970         https://bugs.webkit.org/show_bug.cgi?id=178094
2971         <rdar://problem/34895221>
2972
2973         Reviewed by Devin Rousso.
2974
2975         * Localizations/en.lproj/localizedStrings.js:
2976         * UserInterface/Views/ResourceHeadersContentView.js:
2977         (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
2978         (WI.ResourceHeadersContentView.prototype._resourceMetricsDidChange):
2979
2980 2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>
2981
2982         Unreviewed, minified WebInspector opens blank.
2983         <rdar://problem/34892307>
2984
2985         * UserInterface/Views/ResourceHeadersContentView.js:
2986         (WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
2987         Regression introduced in r223006. The minified build has a SyntaxError
2988         causing WebInspector top open blank. Add the missing semicolon.
2989
2990 2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>
2991
2992         Web Inspector: Network Tab - Filter resources based on URL / Text Content
2993         https://bugs.webkit.org/show_bug.cgi?id=178071
2994         <rdar://problem/34071562>
2995
2996         Reviewed by Brian Burg.
2997
2998         * Localizations/en.lproj/localizedStrings.js:
2999         New strings.
3000
3001         * UserInterface/Views/FilterBar.css:
3002         (.filter-bar.active > input[type="search"]::-webkit-search-decoration):
3003         (.filter-bar.indicating-progress > input[type="search"]::-webkit-search-decoration):
3004         New icon for progress / active states.
3005
3006         * UserInterface/Views/FilterBar.js:
3007         (WI.FilterBar.prototype.get inputField):
3008         (WI.FilterBar.prototype.get placeholder):
3009         (WI.FilterBar.prototype.set placeholder):
3010         (WI.FilterBar.prototype.get incremental):
3011         (WI.FilterBar.prototype.set incremental):
3012         (WI.FilterBar.prototype.get indicatingProgress):
3013         (WI.FilterBar.prototype.set indicatingProgress):
3014         (WI.FilterBar.prototype.get indicatingActive):
3015         (WI.FilterBar.prototype.set indicatingActive):
3016         (WI.FilterBar.prototype._handleFilterInputEvent):
3017         When incremental is set to false on the FilterBar still dispatch an
3018         event when the textfield clears.
3019
3020         * UserInterface/Images/FilterFieldActiveGlyph.svg: Added.
3021         * UserInterface/Images/gtk/FilterFieldActiveGlyph.svg: Added.
3022         New blue icon for active state.
3023
3024         * UserInterface/Controllers/FrameResourceManager.js:
3025         (WI.FrameResourceManager.prototype.resourceForIdentifier):
3026         Accessor for arbitrary resource.
3027
3028         * UserInterface/Views/NetworkTableContentView.css:
3029         (.content-view.network .navigation-bar .filter-bar):
3030         (.content-view.network .warning-banner):
3031         (body[dir=ltr] .content-view.network .warning-banner):
3032         (body[dir=rtl] .content-view.network .warning-banner):
3033         (.content-view.network .warning-banner > a):
3034         Warning banner when the filter produces no results. This matches the
3035         warning in the Debugger tab when breakpoints are disabled.
3036
3037         * UserInterface/Views/ScopeBar.js:
3038         (WI.ScopeBar.prototype.resetToDefault):
3039         Provide a way to easily reset a scope bar to the default item.
3040
3041         * UserInterface/Views/RadioButtonNavigationItem.css:
3042         (.navigation-bar .item.radio.button.text-only:active):
3043         * UserInterface/Views/ScopeBar.css:
3044         (.scope-bar > li:active):
3045         Cleanup some styles that should be using a variable.
3046
3047         * UserInterface/Views/NetworkTableContentView.js:
3048         (WI.NetworkTableContentView):
3049         (WI.NetworkTableContentView.prototype.get filterNavigationItems):
3050         (WI.NetworkTableContentView.prototype.layout):
3051         (WI.NetworkTableContentView.prototype._processPendingEntries):
3052         (WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource):
3053         (WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource):
3054         (WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator):
3055         (WI.NetworkTableContentView.prototype._updateEmptyFilterResultsWarning):
3056         (WI.NetworkTableContentView.prototype._showEmptyFilterResultsWarning):
3057         (WI.NetworkTableContentView.prototype._hideEmptyFilterResultsWarning):
3058         (WI.NetworkTableContentView.prototype._positionEmptyFilterMessage):
3059         (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
3060         (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
3061         (WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
3062         (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
3063         (WI.NetworkTableContentView.prototype._hasTypeFilter):
3064         (WI.NetworkTableContentView.prototype._hasTextFilter):
3065         (WI.NetworkTableContentView.prototype._hasActiveFilter):
3066         (WI.NetworkTableContentView.prototype._passTypeFilter):
3067         (WI.NetworkTableContentView.prototype._passTextFilter):
3068         (WI.NetworkTableContentView.prototype._passFilter):
3069         (WI.NetworkTableContentView.prototype._updateFilteredEntries):
3070         (WI.NetworkTableContentView.prototype._resetFilters):
3071         (WI.NetworkTableContentView.prototype._textFilterDidChange):
3072         (WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
3073         There are now two filters.
3074
3075           - FilterBar - Filters URL and Full Text Content
3076           - ScopeBar  - Filters Resource Type
3077
3078         The text content filter is asynchronous. We reuse the existing Search
3079         functionality when filtering on text. We need to defer text content
3080         filtering until the resource finishes loading.
3081
3082 2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>
3083
3084         Web Inspector: Network Tab: Row wrapping (waterfall displaying behind next row's name)
3085         https://bugs.webkit.org/show_bug.cgi?id=178015
3086         <rdar://problem/34858720>
3087
3088         Reviewed by Brian Burg.
3089
3090         * UserInterface/Views/Table.css:
3091         (.table > .header):
3092         (.table > .data-container > .data-list > li):
3093         Disallow wrapping.
3094
3095 2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>
3096
3097         Web Inspector: Network Tab - Cookies Detail View
3098         https://bugs.webkit.org/show_bug.cgi?id=177988
3099         <rdar://problem/34071927>
3100
3101         Reviewed by Brian Burg.
3102
3103         * Localizations/en.lproj/localizedStrings.js:
3104         * UserInterface/Main.html:
3105         * UserInterface/Test.html:
3106         New strings and resources.
3107
3108         * UserInterface/Models/Cookie.js: Added.
3109         (WI.Cookie):
3110         (WI.Cookie.parseCookieRequestHeader):
3111         (WI.Cookie.parseSetCookieResponseHeader):
3112         Encapsulation for Cookie attributes.
3113
3114         * UserInterface/Models/Resource.js:
3115         (WI.Resource.prototype.get requestCookies):
3116         (WI.Resource.prototype.get responseCookies):
3117         (WI.Resource.prototype.updateForRedirectResponse):
3118         (WI.Resource.prototype.updateForResponse):
3119         (WI.Resource.prototype.updateWithMetrics):
3120         New computed accessors for requestCookies and responseCookies.
3121
3122         * UserInterface/Views/NetworkResourceDetailView.js:
3123         (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
3124         Show the new Cookie View.
3125
3126         * UserInterface/Views/NetworkTableContentView.css:
3127         (.content-view.network .network-table .icon):
3128         (.network-table li:not(.filler) .cell.name):
3129         (.network-table .cache-type):
3130         (.network-table .error):
3131         (body[dir=ltr] .network-table .cell.name > .status):
3132         (body[dir=rtl] .network-table .cell.name > .status):
3133         (.network-table .cell.name > .status .indeterminate-progress-spinner):
3134         (.showing-detail .network-table .cell:not(.name)):
3135         (.showing-detail .network-table .resizer:not(:first-of-type)):
3136         (.network-table :not(.header) .cell:first-of-type):
3137         Rework these styles to be specific to the .network-table.
3138
3139         * UserInterface/Views/Table.css:
3140         (.table :not(.header) .cell:first-of-type): Deleted.
3141         Move this to the network table styles, it shouldn't apply to all tables. 
3142
3143         * UserInterface/Views/ResourceCookiesContentView.css:
3144         (.resource-cookies > section > .details.has-table):
3145         (.resource-cookies .table):
3146         (.resource-cookies .table > .header):
3147         Styles for Cookies view and table.
3148
3149         * UserInterface/Views/ResourceCookiesContentView.js: Added.
3150         (WI.ResourceCookiesContentView):
3151         (WI.ResourceCookiesContentView.prototype.tableNumberOfRows):
3152         (WI.ResourceCookiesContentView.prototype.tableSortChanged):
3153         (WI.ResourceCookiesContentView.prototype.tablePopulateCell):
3154         (WI.ResourceCookiesContentView.prototype.initialLayout):
3155         (WI.ResourceCookiesContentView.prototype._incompleteSectionWithMessage):
3156         (WI.ResourceCookiesContentView.prototype._incompleteSectionWithLoadingIndicator):
3157         (WI.ResourceCookiesContentView.prototype._dataSourceForTable):
3158         (WI.ResourceCookiesContentView.prototype._generateSortComparator):
3159         (WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
3160         (WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
3161         (WI.ResourceCookiesContentView.prototype._sizeForTable):
3162         (WI.ResourceCookiesContentView.prototype._resourceRequestHeadersDidChange):
3163         (WI.ResourceCookiesContentView.prototype._resourceResponseReceived):
3164         Tables for Request and Response cookies. They are simliar with slightly different columns.
3165         Handle simple display and sorting for the tables.
3166
3167         * UserInterface/Views/ResourceHeadersContentView.js:
3168         (WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
3169         Break out Set-Cookie headers as multiple headers. THey should never be combined.
3170
3171         * UserInterface/Views/Table.js:
3172         (WI.Table.prototype.showColumn):
3173         (WI.Table.prototype.hideColumn):
3174         (WI.Table.prototype._handleHeaderContextMenu):
3175         * UserInterface/Views/TableColumn.js:
3176         (WI.TableColumn.prototype.get hideable):
3177         (WI.TableColumn.prototype.set hidden):
3178         (WI.TableColumn):
3179         (WI.TableColumn.prototype.setHidden): Deleted.
3180         Make it so some columns can not be hidden. For example the "value" column
3181         in the Cookie tables.
3182
3183 2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>
3184
3185         Web Inspector: Network Tab - Search Headers Detail View
3186         https://bugs.webkit.org/show_bug.cgi?id=177981
3187
3188         Reviewed by Brian Burg.
3189
3190         * UserInterface/Base/Main.js:
3191         * UserInterface/Views/LogContentView.js:
3192         (WI.LogContentView.prototype.performSearch):
3193         Rename "Dom" to "DOM" in utility function.
3194
3195         * UserInterface/Views/ResourceHeadersContentView.css:
3196         (.resource-headers.showing-find-banner .search-highlight):
3197         Search highlight styles.
3198
3199         * UserInterface/Views/ResourceHeadersContentView.js:
3200         (WI.ResourceHeadersContentView.prototype.get supportsSearch):
3201         (WI.ResourceHeadersContentView.prototype.get numberOfSearchResults):
3202         (WI.ResourceHeadersContentView.prototype.get hasPerformedSearch):
3203         (WI.ResourceHeadersContentView.prototype.set automaticallyRevealFirstSearchResult):
3204         (WI.ResourceHeadersContentView.prototype.performSearch):
3205         (WI.ResourceHeadersContentView.prototype.searchCleared):
3206         (WI.ResourceHeadersContentView.prototype.revealPreviousSearchResult):
3207         (WI.ResourceHeadersContentView.prototype.revealNextSearchResult):
3208         (WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
3209         (WI.ResourceHeadersContentView.prototype._revealSearchResult):
3210         Implement ContentView search behavior.
3211
3212 2017-10-08  Devin Rousso  <webkit@devinrousso.com>
3213
3214         Web Inspector: add autocompletion for min/max within a CSS calc
3215         https://bugs.webkit.org/show_bug.cgi?id=178068
3216
3217         Reviewed by Joseph Pecoraro.
3218
3219         * UserInterface/Models/CSSKeywordCompletions.js:
3220         (WI.CSSKeywordCompletions.forFunction):
3221
3222 2017-10-06  Matt Baker  <mattbaker@apple.com>
3223
3224         Web Inspector: Add Canvas tab and CanvasOverviewContentView
3225         https://bugs.webkit.org/show_bug.cgi?id=177604
3226         <rdar://problem/34714650>
3227
3228         Reviewed by Devin Rousso.
3229
3230         This patch adds experimental feature support for the Canvas tab. Initially
3231         the tab provides only an overview of the canvases in the page, and will
3232         exist side-by-side with the existing experimental Canvas UI.
3233
3234         * Localizations/en.lproj/localizedStrings.js:
3235         * UserInterface/Base/Main.js:
3236         (WI.contentLoaded):
3237         * UserInterface/Base/Setting.js:
3238
3239         * UserInterface/Images/Canvas.svg: Added.
3240         * UserInterface/Images/CanvasOverview.svg: Added.
3241         * UserInterface/Main.html:
3242         Add new art and canvas UI classes.
3243
3244         * UserInterface/Models/Canvas.js:
3245         (WI.Canvas.requestNode):
3246         (WI.Canvas.prototype.requestContent):
3247         (WI.Canvas.prototype.requestCSSCanvasClientNodes):
3248         (WI.Canvas.prototype.requestSize.calculateSize.getAttributeValue):
3249         (WI.Canvas.prototype.requestSize.calculateSize):
3250         (WI.Canvas.prototype.requestSize.getPropertyValue):
3251         (WI.Canvas.prototype.requestSize):
3252         Use promises to retrieve canvas data asynchronously.
3253
3254         * UserInterface/Models/CollectionTypes.js: Added.
3255         (WI.CanvasCollection):
3256         New location for concrete collection types. Having a class to type check
3257         makes using a collection as a represented object a bit simpler.
3258
3259         * UserInterface/Views/CanvasContentView.css:
3260         (.content-view.canvas:not(.tab)):
3261         (.content-view.canvas:not(.tab) > .preview):
3262         (.content-view.canvas:not(.tab) > .preview > img):
3263         (.content-view.canvas:not(.tab) > :matches(header, footer)):
3264         (.content-view.canvas): Deleted.
3265         (.content-view.canvas > .preview): Deleted.
3266         (.content-view.canvas > .preview > img): Deleted.
3267         During the transition to the new Canvas tab, CanvasContentView needs to
3268         support being shown as a full-size content view, and as an item in a
3269         CollectionContentView. Hide header and footer elements by default.
3270
3271         * UserInterface/Views/CanvasContentView.js:
3272         (WI.CanvasContentView):
3273         (WI.CanvasContentView.prototype.refresh):
3274         (WI.CanvasContentView.prototype.initialLayout):
3275         (WI.CanvasContentView.prototype.layout):
3276         (WI.CanvasContentView.prototype.shown):
3277         (WI.CanvasContentView.prototype.attached):
3278         (WI.CanvasContentView.prototype.detached):
3279         (WI.CanvasContentView.prototype._showError):
3280         (WI.CanvasContentView.prototype._refreshPixelSize):
3281         (WI.CanvasContentView.prototype._showGridButtonClicked):
3282         (WI.CanvasContentView.prototype._updateImageGrid):
3283         (WI.CanvasContentView.prototype._updateMemoryCost):
3284         (WI.CanvasContentView.prototype._updatePixelSize):
3285         (WI.CanvasContentView.prototype._updateRecordNavigationItem):
3286         (WI.CanvasContentView.prototype.hidden): Deleted.
3287         (WI.CanvasContentView.prototype.closed): Deleted.
3288         (WI.CanvasContentView.prototype._showPreview): Deleted.
3289         Added new UI for display in the Canvas overview. These elements are always
3290         created, but only appear when the canvas is viewed as a "card".
3291
3292         Canvas previews are no longer shown as soon as they are available from
3293         the backend. Instead, once the canvas content is ready a layout is scheduled.
3294         This guarantees that refreshing all canvases at once causes no flicker,
3295         and introduces no perceptible delay.
3296
3297         Finally, the "Cancel recording" tooltip has been renamed "Stop recording",
3298         to match the behavior of the command.
3299
3300         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
3301         (WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.): Deleted.
3302         Canvas.prototype.requestNode now returns a promise.
3303
3304         * UserInterface/Views/CanvasOverviewContentView.css: Added.
3305         (.content-view.canvas-overview):
3306         (.content-view.canvas-overview .content-view.canvas):
3307         (.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)):
3308         (.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
3309         (.content-view.canvas-overview .content-view.canvas > header):
3310         (.content-view.canvas-overview .content-view.canvas.is-recording > header):
3311         (.content-view.canvas-overview .content-view.canvas > header > .titles,):
3312         (.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
3313         (.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
3314         (.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
3315         (.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title):
3316         (.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
3317         (.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item):
3318         (.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
3319         (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar):
3320         (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled):
3321         (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop):
3322         (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover):
3323         (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active):
3324         (.content-view.canvas-overview .content-view.canvas > .preview):
3325         (.content-view.canvas-overview .content-view.canvas > .preview > img):
3326         (.content-view.canvas-overview .content-view.canvas > .preview > .message-text-view):
3327         (.content-view.canvas-overview .content-view.canvas > footer):
3328         (.content-view.canvas-overview .content-view.canvas > footer .memory-cost):
3329         Add header, navigation bar, and footer styles to CanvasContentView when
3330         it is being shown as an item in a CollectionContentView.
3331