Web Inspector: Canvas tab: create icons for recordings/shaders in the preview tile
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2018-08-20  Devin Rousso  <webkit@devinrousso.com>
2
3         Web Inspector: Canvas tab: create icons for recordings/shaders in the preview tile
4         https://bugs.webkit.org/show_bug.cgi?id=183650
5
6         Reviewed by Joseph Pecoraro.
7
8         * Localizations/en.lproj/localizedStrings.js:
9
10         * UserInterface/Views/CanvasContentView.js:
11         (WI.CanvasContentView):
12         (WI.CanvasContentView.prototype.initialLayout):
13         (WI.CanvasContentView.prototype.attached):
14         (WI.CanvasContentView.prototype._recordingStopped):
15         (WI.CanvasContentView.prototype._shaderProgramAdded):
16         (WI.CanvasContentView.prototype._shaderProgramRemoved):
17         (WI.CanvasContentView.prototype._updateViewRelatedItems):
18         (WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
19         (WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
20         (WI.CanvasContentView.prototype._addRecording): Deleted.
21         (WI.CanvasContentView.prototype._handleRecordingSelectElementChange): Deleted.
22         * UserInterface/Views/CanvasOverviewContentView.css:
23         (.content-view.canvas-overview .content-view.canvas > footer > .view-related-items):
24         (.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > :matches(.view-shader, .view-recording)):
25         (.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > img + img):
26         (.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-shader):
27         (.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-recording):
28         (.content-view.canvas-overview .content-view.canvas > footer > .recordings): Deleted.
29         (.content-view.canvas-overview .content-view.canvas > footer > .recordings::before): Deleted.
30         (.content-view.canvas-overview .content-view.canvas > footer > .recordings > select): Deleted.
31         (.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus): Deleted.
32         Create two image buttons in the bottom left corner of each canvas tile that appear when the
33         canvas has associated shaders and/or recordings. Clicking each image button will function
34         similar to path components, in that if there is only one shader/recording, it is immediately
35         selected, whereas if there are multiple a dropdown is shown.
36
37         * UserInterface/Views/CanvasSidebarPanel.js:
38         (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
39         (WI.CanvasSidebarPanel.prototype._recordingChanged):
40         Drive-by: ensure that the selected recording action is properly updated when first loading a
41         recording and when scrubbing through one.
42
43 2018-08-16  Devin Rousso  <drousso@apple.com>
44
45         Web Inspector: support breakpoints for arbitrary event names
46         https://bugs.webkit.org/show_bug.cgi?id=183118
47
48         Reviewed by Joseph Pecoraro.
49
50         Create UI for setting breakpoints on event names. Ties into renamed DOMDebugger commands,
51         specifically `setEventBreakpoint` and `removeEventBreakpoint`, that will pause execution if
52         any DOM event is fired that matches any previously registered breakpoints.
53
54         Event breakpoints are distinguished by name, and they currently apply globally, meaning
55         that only one breakpoint per event name can be registered.
56
57         Event breakpoints are created in the Debugger tab in a new "Event Breakpoints" section in
58         the Navigation sidebar. A new type of popover, EventBreakpointPopover, is used, but right
59         now all it contains is a basic text input for the event name. Similarly, a new TreeElement
60         subclass, EventBreakpointTreeElement, is used when showing the list of event listener
61         breakpoints, but all it shows now is the event name.
62
63         The majority of the logic in this patch was derived from XHR breakpoints.
64
65         * Localizations/en.lproj/localizedStrings.js:
66         * UserInterface/Main.html:
67         * UserInterface/Test.html:
68         * UserInterface/Images/EventBreakpoint.svg: Added.
69
70         * UserInterface/Models/EventBreakpoint.js: Added.
71         (WI.EventBreakpoint):
72         (WI.EventBreakpoint.prototype.get eventName):
73         (WI.EventBreakpoint.prototype.get disabled):
74         (WI.EventBreakpoint.prototype.set disabled):
75         (WI.EventBreakpoint.prototype.get serializableInfo):
76         (WI.EventBreakpoint.prototype.saveIdentityToCookie):
77
78         * UserInterface/Controllers/DOMDebuggerManager.js:
79         (WI.DOMDebuggerManager):
80         (WI.DOMDebuggerManager.prototype.get eventBreakpoints): Added.
81         (WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Added.
82         (WI.DOMDebuggerManager.prototype.addEventBreakpoint): Added.
83         (WI.DOMDebuggerManager.prototype.removeEventBreakpoint): Added.
84         (WI.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
85         (WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Added.
86         (WI.DOMDebuggerManager.prototype._updateEventBreakpoint): Added.
87         (WI.DOMDebuggerManager.prototype._resolveEventBreakpoint): Added.
88         (WI.DOMDebuggerManager.prototype._saveEventBreakpoints): Added.
89         (WI.DOMDebuggerManager.prototype._eventBreakpointDisabledStateDidChange): Added.
90
91         * UserInterface/Controllers/DebuggerManager.js:
92         (WI.DebuggerManager.prototype._pauseReasonFromPayload):
93
94         * UserInterface/Controllers/EventBreakpointTreeController.js: Added.
95         (WI.EventBreakpointTreeController):
96         (WI.EventBreakpointTreeController.prototype.revealAndSelect):
97         (WI.EventBreakpointTreeController.prototype._eventBreakpointAdded):
98         (WI.EventBreakpointTreeController.prototype._eventBreakpointRemoved):
99         (WI.EventBreakpointTreeController.prototype._addTreeElement):
100
101         * UserInterface/Views/DebuggerSidebarPanel.js:
102         (WI.DebuggerSidebarPanel):
103         (WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
104         (WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved): Added.
105         (WI.DebuggerSidebarPanel.prototype._addEventBreakpointButtonClicked): Added.
106         (WI.DebuggerSidebarPanel.prototype.willDismissPopover):
107
108         * UserInterface/Views/EventBreakpointTreeElement.js: Added.
109         (WI.EventBreakpointTreeElement):
110         (WI.EventBreakpointTreeElement.prototype.onattach):
111         (WI.EventBreakpointTreeElement.prototype.ondetach):
112         (WI.EventBreakpointTreeElement.prototype.ondelete):
113         (WI.EventBreakpointTreeElement.prototype.onenter):
114         (WI.EventBreakpointTreeElement.prototype.onspace):
115         (WI.EventBreakpointTreeElement.prototype.populateContextMenu):
116         (WI.EventBreakpointTreeElement.prototype._statusImageElementClicked):
117         (WI.EventBreakpointTreeElement.prototype._statusImageElementFocused):
118         (WI.EventBreakpointTreeElement.prototype._statusImageElementMouseDown):
119         (WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):
120         (WI.EventBreakpointTreeElement.prototype._updateStatus):
121         * UserInterface/Views/EventBreakpointTreeElement.css: Added.
122         (.breakpoint.event-listener:not(.breakpoint-paused-icon) .icon):
123
124         * UserInterface/Views/EventBreakpointPopover.js: Added.
125         (WI.EventBreakpointPopover):
126         (WI.EventBreakpointPopover.prototype.get result):
127         (WI.EventBreakpointPopover.prototype.get value):
128         (WI.EventBreakpointPopover.prototype.show):
129         (WI.EventBreakpointPopover.prototype._presentOverTargetElement):
130         * UserInterface/Views/EventBreakpointPopover.css: Added.
131         (.popover .event-listener-breakpoint-content):
132         (.popover .event-listener-breakpoint-content > input):
133
134         * UserInterface/Views/NavigationSidebarPanel.js:
135         (WI.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
136
137 2018-08-16  Joseph Pecoraro  <pecoraro@apple.com>
138
139         Web Inspector: Show Initiator information in Network Table
140         https://bugs.webkit.org/show_bug.cgi?id=188590
141         <rdar://problem/43305488>
142
143         Reviewed by Matt Baker.
144
145         * UserInterface/Views/NetworkResourceDetailView.js:
146         (WI.NetworkResourceDetailView):
147         (WI.NetworkResourceDetailView.prototype.shown):
148         (WI.NetworkResourceDetailView.prototype.willShowWithCookie):
149         (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
150         When a ResourceDetailView gets shown, it may also want to show its initial content view
151         with a cookie as the cookie may contain position highlight information.
152
153         * UserInterface/Views/NetworkTableContentView.js:
154         (WI.NetworkTableContentView):
155         (WI.NetworkTableContentView.prototype._showResourceDetailView):
156         (WI.NetworkTableContentView.prototype.showRepresentedObject):
157         When showing a represented object, pass the cookie information on to the detail
158         view's so that it may include the cookie when showing the final content view.
159
160         (WI.NetworkTableContentView.prototype.tablePopulateCell):
161         (WI.NetworkTableContentView.prototype._populateInitiatorCell):
162         (WI.NetworkTableContentView.prototype.initialLayout):
163         New initiator column contains a source code link to the call site.
164
165         (WI.NetworkTableContentView.prototype._generateSortComparator):
166         (WI.NetworkTableContentView.prototype._entryForResource):
167         Entry data for the initiator is a display string that can be sorted easily.
168
169 2018-08-16  Joseph Pecoraro  <pecoraro@apple.com>
170
171         LayoutTest inspector/worker/debugger-pause.html sometimes times out
172         https://bugs.webkit.org/show_bug.cgi?id=188580
173
174         Reviewed by Matt Baker.
175
176         * UserInterface/Protocol/Target.js:
177         (WI.Target.prototype.get mainResource):
178         (WI.Target.prototype.set mainResource):
179         Dispatch an event when the Main Resource is set.
180
181 2018-08-15  Aditya Keerthi  <akeerthi@apple.com>
182
183         [Datalist] Add button to TextFieldInputs with a datalist
184         https://bugs.webkit.org/show_bug.cgi?id=187741
185
186         Reviewed by Tim Horton.
187
188         Add keyword completion for 'list-button'.
189
190         * UserInterface/External/CodeMirror/css.js:
191         * UserInterface/Models/CSSKeywordCompletions.js:
192
193 2018-08-15  Devin Rousso  <drousso@apple.com>
194
195         Web Inspector: REGRESSION(r?): the probe sidebar doesn't show up when adding probes
196         https://bugs.webkit.org/show_bug.cgi?id=188594
197
198         Reviewed by Brian Burg.
199
200         * UserInterface/Views/ProbeDetailsSidebarPanel.js:
201         (WI.ProbeDetailsSidebarPanel.prototype.set inspectedProbeSets):
202         (WI.ProbeDetailsSidebarPanel.prototype.initialLayout):
203         Add checks to ensure that DOM elements for each probe section exist before trying to
204         add/remove them from the sidebar. This can happen if probes are inspected before the sidebar
205         is shown for the first time.
206
207         * UserInterface/Views/ProbeSetDataGrid.js:
208         (WI.ProbeSetDataGrid):
209         (WI.ProbeSetDataGrid.columnIdentifierForProbe): Added.
210         (WI.ProbeSetDataGrid.prototype._setupProbe):
211         (WI.ProbeSetDataGrid.prototype._teardownProbe):
212         (WI.ProbeSetDataGrid.prototype._probeExpressionChanged):
213         * UserInterface/Views/ProbeSetDataGridNode.js:
214         (WI.ProbeSetDataGridNode.prototype.set frame):
215         Provide better column identifiers for each probe's `WI.DataGrid`. It's possible for the
216         numeric probe ID value to be stringified when passing it into the constructor of
217         `WI.DataGrid`, which will not match the original numeric value on later retrieval.
218
219 2018-08-14  Matt Baker  <mattbaker@apple.com>
220
221         Web Inspector: Table should not center rows when scrolling them into view
222         https://bugs.webkit.org/show_bug.cgi?id=188593
223         <rdar://problem/43311660>
224
225         Reviewed by Devin Rousso.
226
227         * UserInterface/Views/Table.js:
228         (WI.Table.prototype._handleKeyDown):
229
230 2018-08-13  Matt Baker  <mattbaker@apple.com>
231
232         Web Inspector: Table should handle row selection instead of the table delegate
233         https://bugs.webkit.org/show_bug.cgi?id=188534
234         <rdar://problem/43253335>
235
236         Reviewed by Joseph Pecoraro.
237
238         Row selection should be implemented by Table, rather than its delegate.
239
240         * UserInterface/Views/NetworkTableContentView.js:
241         (WI.NetworkTableContentView.prototype.tableShouldSelectRow):
242         (WI.NetworkTableContentView.prototype.tableCellMouseDown): Deleted.
243         Prevent selection unless the clicked cell belongs to the name column.
244
245         * UserInterface/Views/ResourceCookiesContentView.js:
246         (WI.ResourceCookiesContentView.prototype.tableShouldSelectRow):
247         Always prevent selection.
248
249         * UserInterface/Views/Table.js:
250         (WI.Table):
251         (WI.Table.prototype._handleMouseDown):
252
253 2018-08-12  Aditya Keerthi  <akeerthi@apple.com>
254
255         [macOS] Color wells should appear pressed when presenting a color picker
256         https://bugs.webkit.org/show_bug.cgi?id=188477
257
258         Reviewed by Tim Horton.
259
260         Add keyword completion for 'color-well'.
261
262         * UserInterface/External/CodeMirror/css.js:
263         * UserInterface/Models/CSSKeywordCompletions.js:
264
265 2018-08-09  Nikita Vasilyev  <nvasilyev@apple.com>
266
267         Web Inspector: Dark Mode: SourceCodeTextEditor error/warning text widget is too light
268         https://bugs.webkit.org/show_bug.cgi?id=188126
269         <rdar://problem/42674963>
270
271         Reviewed by Matt Baker.
272
273         * UserInterface/Views/DarkMode.css:
274         (@media (prefers-dark-interface)):
275         (.source-code.text-editor > .CodeMirror .issue-widget.warning,): Added.
276         (.source-code.text-editor > .CodeMirror .issue-widget.error,): Added.
277
278 2018-08-07  Joseph Pecoraro  <pecoraro@apple.com>
279
280         Web Inspector: Add another Protocol Version (iOS 12)
281         https://bugs.webkit.org/show_bug.cgi?id=188359
282         <rdar://problem/42981364>
283
284         Reviewed by Brian Burg.
285
286         * UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js: Added.
287         * Versions/Inspector-iOS-12.0.json: Added.
288
289 2018-08-06  Joseph Pecoraro  <pecoraro@apple.com>
290
291         Web Inspector: Global search sometimes returns duplicate results for a resource
292         https://bugs.webkit.org/show_bug.cgi?id=188270
293         <rdar://problem/42867498>
294
295         Reviewed by Brian Burg.
296
297         * UserInterface/Views/SearchSidebarPanel.js:
298         (WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
299         Avoid duplicate search results in the frontend. We should also fix the backend
300         but a frontend fix will also be desired for backends that have the issue.
301
302 2018-08-03  Alex Christensen  <achristensen@webkit.org>
303
304         Fix spelling of "overridden"
305         https://bugs.webkit.org/show_bug.cgi?id=188315
306
307         Reviewed by Darin Adler.
308
309         * UserInterface/Views/ContentBrowserTabContentView.js:
310         (WI.ContentBrowserTabContentView.prototype.treeElementForRepresentedObject):
311         * UserInterface/Views/GeneralTreeElement.js:
312         (WI.GeneralTreeElement.prototype.ondetach):
313         * UserInterface/Views/NavigationBar.js:
314         (WI.NavigationBar.prototype.get sizesToFit):
315         * UserInterface/Views/NavigationSidebarPanel.js:
316         (WI.NavigationSidebarPanel.prototype.shouldFilterPopulate):
317         * UserInterface/Views/TextEditor.js:
318         (WI.TextEditor.prototype.canBeFormatted):
319         * UserInterface/Views/TreeElement.js:
320         (WI.TreeElement.prototype.onpopulate):
321
322 2018-08-01  Nikita Vasilyev  <nvasilyev@apple.com>
323
324         Web Inspector: Dark Mode: SourceCodeTextEditor thread indicator widget is too light
325         https://bugs.webkit.org/show_bug.cgi?id=188119
326         <rdar://problem/42670811>
327
328         Reviewed by Matt Baker.
329
330         Make the background of the thread indicator widget darker.
331
332         Reduce the number of HTML elements and simplify CSS by removing the HTML element that drew an arrow and using clip-path on inline widgets instead.
333
334         * UserInterface/Views/DarkMode.css:
335         (@media (prefers-dark-interface)):
336         (.text-editor > .CodeMirror .execution-line):
337         (.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
338         * UserInterface/Views/SourceCodeTextEditor.css:
339         (.source-code.text-editor .CodeMirror-linewidget):
340         (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline):
341         (@media (prefers-dark-interface)):
342         (.source-code.text-editor > .CodeMirror .thread-widget.inline):
343         * UserInterface/Views/SourceCodeTextEditor.js:
344         (WI.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
345         (WI.SourceCodeTextEditor.prototype._updateIssueWidgetForIssues):
346         * UserInterface/Views/TextEditor.css:
347         (@media (prefers-dark-interface)):
348         (.text-editor > .CodeMirror .execution-line.primary .CodeMirror-linenumber::after):
349         * UserInterface/Views/Variables.css:
350         (:root):
351
352 2018-08-01  Nikita Vasilyev  <nvasilyev@apple.com>
353
354         Web Inspector: Dark Mode: disabled breakpoints banner is too light
355         https://bugs.webkit.org/show_bug.cgi?id=188120
356         <rdar://problem/42671348>
357
358         Reviewed by Matt Baker.
359
360         * UserInterface/Views/DebuggerSidebarPanel.css:
361         (@media (prefers-dark-interface)):
362         (.sidebar > .panel.navigation.debugger .warning-banner):
363
364 2018-07-31  Joseph Pecoraro  <pecoraro@apple.com>
365
366         Web Inspector: Include a full URL tooltip when hovering the name in the Network Tab
367         https://bugs.webkit.org/show_bug.cgi?id=188199
368
369         Reviewed by Matt Baker.
370
371         * UserInterface/Views/NetworkTableContentView.js:
372         (WI.NetworkTableContentView.prototype._populateNameCell):
373         Give a tooltip to the entire cell since the entire cell has interactivity.
374
375 2018-07-30  Nikita Vasilyev  <nvasilyev@apple.com>
376
377         Web Inspector: Dark Mode: Search sidebar panel text field has a white background
378         https://bugs.webkit.org/show_bug.cgi?id=188128
379         <rdar://problem/42678270>
380
381         Reviewed by Matt Baker.
382
383         Make the search bar in Search tab match the style of the filter bar.
384
385         * UserInterface/Views/DarkMode.css:
386         (@media (prefers-dark-interface)):
387         (:matches(.search-bar, .filter-bar) > input[type="search"],):
388         (:matches(.search-bar, .filter-bar) > input[type="search"]::placeholder):
389         (:matches(.search-bar, .filter-bar) > input[type="search"]:focus):
390         (.filter-bar > input[type="search"]): Deleted.
391         (.filter-bar > input[type="search"]::placeholder): Deleted.
392         (.filter-bar > input[type="search"]:focus): Deleted.
393
394 2018-07-26  Ryan Haddad  <ryanhaddad@apple.com>
395
396         Unreviewed, rolling out r234281.
397
398         Broke internal builds.
399
400         Reverted changeset:
401
402         "[Datalist] Add button to TextFieldInputs with a datalist"
403         https://bugs.webkit.org/show_bug.cgi?id=187741
404         https://trac.webkit.org/changeset/234281
405
406 2018-07-26  Aditya Keerthi  <akeerthi@apple.com>
407
408         [Datalist] Add button to TextFieldInputs with a datalist
409         https://bugs.webkit.org/show_bug.cgi?id=187741
410
411         Reviewed by Tim Horton.
412
413         Add keyword completion for 'list-button'.
414
415         * UserInterface/External/CodeMirror/css.js:
416         * UserInterface/Models/CSSKeywordCompletions.js:
417
418 2018-07-25  Nikita Vasilyev  <nvasilyev@apple.com>
419
420         Web Inspector: Dark Mode: Breakpoint editor in JS debugger has inconsistent background
421         https://bugs.webkit.org/show_bug.cgi?id=188026
422
423         Reviewed by Matt Baker.
424
425         * UserInterface/Views/DarkMode.css:
426         (@media (prefers-dark-interface)):
427         (.edit-breakpoint-popover-condition):
428         (.breakpoint-action-eval-editor):
429
430 2018-07-22  Nikita Vasilyev  <nvasilyev@apple.com>
431
432         Web Inspector: Dark Mode: remove odd-looking top border
433         https://bugs.webkit.org/show_bug.cgi?id=187885
434
435         Reviewed by Matt Baker.
436
437         This border doesn't exist in the light mode, and it shouldn't be in the dark mode either.
438
439         * UserInterface/Views/DarkMode.css:
440         (@media (prefers-dark-interface)):
441         (body .toolbar):
442
443 2018-07-20  Nikita Vasilyev  <nvasilyev@apple.com>
444
445         Web Inspector: Dark Mode: Layers tab background should be dark
446         https://bugs.webkit.org/show_bug.cgi?id=187660
447         <rdar://problem/42179616>
448
449         Reviewed by Brian Burg.
450
451         * UserInterface/Views/Layers3DContentView.js:
452         (WI.Layers3DContentView.prototype.initialLayout):
453         * UserInterface/Views/Variables.css:
454         (:root):
455
456 2018-07-19  Ross Kirsling  <ross.kirsling@sony.com>
457
458         Web Inspector: Layers visualization shouldn't select on mousedown
459         https://bugs.webkit.org/show_bug.cgi?id=187488
460
461         Reviewed by Matt Baker.
462
463         * UserInterface/Views/Layers3DContentView.js:
464         (WI.Layers3DContentView):
465         (WI.Layers3DContentView.prototype.initialLayout):
466         (WI.Layers3DContentView.prototype._canvasMouseDown):
467         (WI.Layers3DContentView.prototype._canvasMouseUp):
468         Don't update selection on mousedown, update on mouseup!
469         Specifically, only update when mousedown & mouseup targets are the same and mousemove hasn't been triggered.
470
471 2018-07-19  Nikita Vasilyev  <nvasilyev@apple.com>
472
473         Web Inspector: Dark Mode: poor contrast for Search Tab's "the page's content has changed" message
474         https://bugs.webkit.org/show_bug.cgi?id=187792
475
476         Reviewed by Brian Burg.
477
478         * UserInterface/Views/DarkMode.css:
479         (@media (prefers-dark-interface)):
480         (:root):
481         Make the background color slightly more yellow and less red. This slightly dicreases the contrast
482         but makes the text look less like an error.
483
484         * UserInterface/Views/SearchSidebarPanel.css:
485         (@media (prefers-dark-interface)):
486         (.sidebar > .panel.navigation.search.changed > .banner):
487
488 2018-07-18  Matt Baker  <mattbaker@apple.com>
489
490         Web Inspector: REGRESSION(r232591): CodeMirrorEditor should not use a RegExp lineSeparator option
491         https://bugs.webkit.org/show_bug.cgi?id=187772
492         <rdar://problem/42331640>
493
494         Reviewed by Joseph Pecoraro.
495
496         * UserInterface/Views/CodeMirrorEditor.js:
497         (WI.CodeMirrorEditor.create):
498         (WI.CodeMirrorEditor):
499         CodeMirror should be left to auto-detect line separators. By default
500         it detects \n, \r\n, and \r. By specifying a regular expression we
501         merely cause problems when CodeMirror uses the supplied lineSeparator
502         when joining its array of lines together.
503
504         * UserInterface/Views/TextEditor.js:
505         (WI.TextEditor.set string.update):
506         (WI.TextEditor.prototype.set string):
507         This assertion was only true when we forced "\n" line endings everywhere.
508         It no longer holds for source text with "\r\n" (Windows-style) line endings.
509
510 2018-07-16  Matt Baker  <mattbaker@apple.com>
511
512         Web Inspector: Fix execution highlighting after r233820
513         https://bugs.webkit.org/show_bug.cgi?id=187703
514         <rdar://problem/42246167>
515
516         Reviewed by Joseph Pecoraro.
517
518         * UserInterface/Views/SourceCodeTextEditor.js:
519         (WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
520         * UserInterface/Views/TextEditor.js:
521         (WI.TextEditor.prototype.currentPositionToOriginalPosition):
522         (WI.TextEditor.prototype._updateExecutionRangeHighlight):
523
524 2018-07-16  Aaron Chu  <aaron_chu@apple.com>
525
526         AX: Audit Tab should have an Audit Manager
527         https://bugs.webkit.org/show_bug.cgi?id=184071
528         <rdar://problem/38946364>
529
530         Reviewed by Brian Burg.
531
532         This implements the AuditManager for the audit feature. This patch revolves
533         around building out an AuditManager that facilitates an audit. The AuditManager
534         is responsible for managing and storing AuditReports and AuditTestSuites. It is
535         also tasked to decide how to run a test -- whether as a test case or as a test
536         suite. This patch also includes 4 models with which the AuditManager works to
537         perform an audit and to generate a report. These models include AuditTestCase,
538         which as a collection is stored inside an AuditTestSuite; and AuditResult,
539         which, as a collection is stored inside an AuditReport.
540
541         * UserInterface/Controllers/AuditManager.js: Added.
542         (WI.AuditManager):
543         (WI.AuditManager.prototype.get testSuites):
544         (WI.AuditManager.prototype.get reports):
545         (WI.AuditManager.prototype.async.runAuditTestByRepresentedObject):
546         (WI.AuditManager.prototype.reportForId):
547         (WI.AuditManager.prototype.removeAllReports):
548         (WI.AuditManager.prototype.async._runTestCase):
549         * UserInterface/Main.html:
550         * UserInterface/Models/AuditReport.js: Added.
551         (WI.AuditReport):
552         (WI.AuditReport.prototype.get representedTestCases):
553         (WI.AuditReport.prototype.get representedTestSuite):
554         (WI.AuditReport.prototype.get resultsData):
555         (WI.AuditReport.prototype.get isWritable):
556         (WI.AuditReport.prototype.get failedCount):
557         (WI.AuditReport.prototype.addResult):
558         (WI.AuditReport.prototype.close):
559         * UserInterface/Models/AuditResult.js: Added.
560         (WI.AuditResult):
561         (WI.AuditResult.prototype.get testResult):
562         (WI.AuditResult.prototype.get name):
563         (WI.AuditResult.prototype.get logLevel):
564         (WI.AuditResult.prototype.get failed):
565         * UserInterface/Models/AuditTestCase.js: Added.
566         (WI.AuditTestCase.prototype.get id):
567         (WI.AuditTestCase.prototype.get name):
568         (WI.AuditTestCase.prototype.get suite):
569         (WI.AuditTestCase.prototype.get test):
570         (WI.AuditTestCase.prototype.get setup):
571         (WI.AuditTestCase.prototype.get tearDown):
572         (WI.AuditTestCase.prototype.get errorDetails):
573         (WI.AuditTestCase):
574         * UserInterface/Models/AuditTestSuite.js: Added.
575         (WI.AuditTestSuite):
576         (WI.AuditTestSuite.testCaseDescriptors):
577         (WI.AuditTestSuite.prototype.get id):
578         (WI.AuditTestSuite.prototype.get name):
579         (WI.AuditTestSuite.prototype.get testCases):
580         (WI.AuditTestSuite.prototype._buildTestCasesFromDescriptors):
581         * UserInterface/Test.html:
582
583 2018-07-16  Nikita Vasilyev  <nvasilyev@apple.com>
584
585         Web Inspector: Dark Mode: Console filter field buttons should be darker
586         https://bugs.webkit.org/show_bug.cgi?id=187626
587         <rdar://problem/42142744>
588
589         Reviewed by Brian Burg.
590
591         * UserInterface/Views/FindBanner.css:
592         (@media (prefers-dark-interface)):
593         (.find-banner > button.segmented):
594         (.find-banner > button.segmented > .glyph):
595
596 2018-07-16  Nikita Vasilyev  <nvasilyev@apple.com>
597
598         Web Inspector: Dark Mode: selected item background color is too light
599         https://bugs.webkit.org/show_bug.cgi?id=187691
600         <rdar://problem/42225308>
601
602         Reviewed by Brian Burg.
603
604         * UserInterface/Views/DarkMode.css:
605         (@media (prefers-dark-interface)):
606         (:root):
607         (.tree-outline.dom li.elements-drag-over .selection-area):
608         (.tree-outline.dom:focus li.selected .selection-area):
609
610 2018-07-14  Kocsen Chung  <kocsen_chung@apple.com>
611
612         Ensure WebKit stack is ad-hoc signed
613         https://bugs.webkit.org/show_bug.cgi?id=187667
614
615         Reviewed by Alexey Proskuryakov.
616
617         * Configurations/Base.xcconfig:
618
619 2018-07-13  Matt Baker  <mattbaker@apple.com>
620
621         Web Inspector: REGRESSION (r195723): Improve support for resources with '\r' and '\r\n' line endings
622         https://bugs.webkit.org/show_bug.cgi?id=186453
623         <rdar://problem/39689180>
624
625         Reviewed by Joseph Pecoraro.
626
627         Now that the frontend no longer uses offsets from the original source
628         file to calculate positions within CodeMirror, it is possible to support
629         resources with '\r' and '\r\n' line endings in the editor.
630
631         * UserInterface/Views/CodeMirrorEditor.js:
632         (WI.CodeMirrorEditor.create):
633         (WI.CodeMirrorEditor):
634
635 2018-07-13  Matt Baker  <mattbaker@apple.com>
636
637         Web Inspector: Basic blocks highlighting should use line/column locations instead of offsets
638         https://bugs.webkit.org/show_bug.cgi?id=187613
639         <rdar://problem/42131808>
640
641         Reviewed by Joseph Pecoraro.
642
643         * UserInterface/Controllers/BasicBlockAnnotator.js:
644         Basic blocks sent from the backend include offsets into the original
645         file, rather than line/column locations. In order to translate to positions
646         within CodeMirror, we need to calculate the original line and column
647         for each block.
648
649         (WI.BasicBlockAnnotator.prototype.insertAnnotations):
650         (WI.BasicBlockAnnotator.prototype._calculateBasicBlockPositions.offsetToPosition):
651         (WI.BasicBlockAnnotator.prototype._calculateBasicBlockPositions):
652         (WI.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges.):
653         (WI.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):
654         (WI.BasicBlockAnnotator.prototype._highlightTextForBasicBlock):
655
656         * UserInterface/Models/SourceCodePosition.js:
657         (WI.SourceCodePosition.prototype.offsetColumn):
658
659         * UserInterface/Views/TextEditor.js:
660         (WI.TextEditor.prototype.getTextInRange):
661         (WI.TextEditor.prototype.addStyleToTextRange):
662         Better encapsulation for CodeMirror positions.
663
664         * UserInterface/Workers/Formatter/FormatterUtilities.js:
665         (get if):
666         Update String.prototype.lineEndings to support additional line separators.
667
668 2018-07-13  Matt Baker  <mattbaker@apple.com>
669
670         Web Inspector: Execution highlighting in the frontend should be line/column-based
671         https://bugs.webkit.org/show_bug.cgi?id=187532
672         <rdar://problem/42035580>
673
674         Reviewed by Joseph Pecoraro.
675
676         Source code offsets from Esprima should not be used to calculate ranges
677         in CodeMirror for expression highlighting.
678
679         This also fixes a long standing bug when adjusting for the starting
680         position of an inline script. Previously the start offset from the script
681         TextRange was used for this purpose, but the value is often incorrect (see
682         https://bugs.webkit.org/show_bug.cgi?id=187532#c5). By using the starting
683         line/column instead, we avoid the problem.
684
685         * UserInterface/Models/ScriptSyntaxTree.js:
686         (WI.ScriptSyntaxTree.prototype.containersOfPosition):
687         (WI.ScriptSyntaxTree.prototype.containersOfOffset): Deleted.
688
689         * UserInterface/Models/SourceCodePosition.js:
690         (WI.SourceCodePosition.prototype.offsetColumn):
691
692         * UserInterface/Views/SourceCodeTextEditor.js:
693         (WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.toInlineScriptPosition):
694         (WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.fromInlineScriptPosition):
695         (WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
696         (WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.convertRangeOffsetsToSourceCodeOffsets): Deleted.
697
698         * UserInterface/Views/TextEditor.js:
699         (WI.TextEditor.prototype._updateExecutionRangeHighlight):
700
701 2018-07-13  Matt Baker  <mattbaker@apple.com>
702
703         Web Inspector: SourceCodePosition.js missing from Test.html
704         https://bugs.webkit.org/show_bug.cgi?id=187644
705
706         Reviewed by Brian Burg.
707
708         * UserInterface/Test.html:
709
710 2018-07-12  Matt Baker  <mattbaker@apple.com>
711
712         Web Inspector: Type token positioning should use line/column locations from Esprima instead of offsets
713         https://bugs.webkit.org/show_bug.cgi?id=187612
714         <rdar://problem/42131910>
715
716         Reviewed by Joseph Pecoraro.
717
718         * UserInterface/Controllers/TypeTokenAnnotator.js:
719         (WI.TypeTokenAnnotator.prototype.insertAnnotations):
720         (WI.TypeTokenAnnotator.prototype._insertTypeToken):
721         (WI.TypeTokenAnnotator.prototype._insertToken):
722         Use line/column locations, instead of offsets, from the AST when calculating
723         token positions for CodeMirror. Once in CodeMirror's string space, we
724         can safely convert to/from offsets.
725
726         * UserInterface/Models/ScriptSyntaxTree.js:
727         Retrieve line/column locations for AST nodes, in addition to offsets.
728         Offsets into the original file are still needed for getting type information
729         from the profiler in the backend.
730
731         (WI.ScriptSyntaxTree):
732         (WI.ScriptSyntaxTree.prototype.filterByRange):
733         Filter by positions, which can be safely used from CodeMirror, instead of offsets.
734
735         (WI.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
736         (WI.ScriptSyntaxTree.prototype.filterByRange.filterForNodesInRange): Deleted.
737
738         * UserInterface/Models/SourceCodePosition.js:
739         Add convenience methods for comparing line/column positions, and for
740         converting to the format expected by CodeMirror. SourceCodePosition could
741         be made to interoperate with CodeMirror by exposing properties `line`
742         and `ch`, but making the conversion explicit improves code readability.
743
744         (WI.SourceCodePosition.prototype.equals):
745         (WI.SourceCodePosition.prototype.isBefore):
746         (WI.SourceCodePosition.prototype.isAfter):
747         (WI.SourceCodePosition.prototype.isWithin):
748         (WI.SourceCodePosition.prototype.toCodeMirror):
749         (WI.SourceCodePosition):
750
751         * UserInterface/Views/TextEditor.js:
752         (WI.TextEditor.prototype.visibleRangePositions):
753         (WI.TextEditor.prototype.originalPositionToCurrentPosition):
754         (WI.TextEditor.prototype.currentOffsetToCurrentPosition):
755         (WI.TextEditor.prototype.currentPositionToCurrentOffset):
756         (WI.TextEditor.prototype.setInlineWidget):
757
758 2018-07-10  Fujii Hironori  <Hironori.Fujii@sony.com>
759
760         REGRESSION(r229932) Use of uninitialized value in subroutine entry at copy-user-interface-resources.pl
761         https://bugs.webkit.org/show_bug.cgi?id=187511
762
763         Reviewed by Brian Burg.
764
765         copy-user-interface-resources.pl output warning messages unless
766         BUILT_PRODUCTS_DIR and BUILT_PRODUCTS_DIR env vars are defined.
767
768         * Scripts/copy-user-interface-resources.pl:
769         (webInspectorUIAdditionsDir): Added. Return UNDEF if
770         BUILT_PRODUCTS_DIR and SDKROOT env vars aren't defined.
771         (combineOrStripResourcesForWebKitAdditions): Check
772         $webInspectorUIAdditionsDir is defined.
773
774 2018-07-10  Ross Kirsling  <rkirsling@gmail.com>
775
776         Web Inspector: Layers inspector should allow control-dragging to pan the 3D render
777         https://bugs.webkit.org/show_bug.cgi?id=185109
778
779         Reviewed by Matt Baker.
780
781         Addressed in the three.js repo itself (https://github.com/mrdoob/three.js/pull/13972),
782         so this patch simply updates three.js and its OrbitControls module.
783
784         * UserInterface/External/three.js/LICENSE:
785         * UserInterface/External/three.js/three.js:
786         Update to r94.
787
788         * UserInterface/External/three.js/OrbitControls.js:
789         Update to latest.
790
791         * UserInterface/Views/Layers3DContentView.js:
792         (WI.Layers3DContentView.prototype.initialLayout):
793         (WI.Layers3DContentView.prototype._restrictPan):
794         Adapt to recent changes in three.js.
795
796 2018-07-10  Matt Baker  <mattbaker@apple.com>
797
798         Web Inspector: Remove unused NavigationSidebarPanel.treeElementAddedOrChanged
799         https://bugs.webkit.org/show_bug.cgi?id=187508
800
801         Reviewed by Joseph Pecoraro.
802
803         * UserInterface/Views/NavigationSidebarPanel.js:
804         (WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
805         (WI.NavigationSidebarPanel.prototype.treeElementAddedOrChanged): Deleted.
806
807 2018-07-10  Matt Baker  <mattbaker@apple.com>
808
809         Web Inspector: REGRESSION (r217505): Debugger content view doesn't update when left sidebar is collapsed
810         https://bugs.webkit.org/show_bug.cgi?id=187482
811         <rdar://problem/41989190>
812
813         Reviewed by Brian Burg.
814
815         Subclasses of NavigationSidebarPanel must process tree selection changes
816         even when collapsed. Sidebar panels perform critical controller tasks
817         for their tabs, such as updating the view when pausing in the debugger,
818         and when the hierarchical path component selection changes.
819
820         * UserInterface/Views/DebuggerSidebarPanel.js:
821         (WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
822         * UserInterface/Views/ResourceSidebarPanel.js:
823         (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
824         * UserInterface/Views/SearchSidebarPanel.js:
825         (WI.SearchSidebarPanel.prototype._treeSelectionDidChange):
826         * UserInterface/Views/SourcesSidebarPanel.js:
827         (WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
828         * UserInterface/Views/StorageSidebarPanel.js:
829         (WI.StorageSidebarPanel._treeSelectionDidChange):
830
831 2018-07-09  Brian Burg  <bburg@apple.com>
832
833         REGRESSION: Web Inspector no longer pauses in internal injected scripts like WDFindNodes.js
834         https://bugs.webkit.org/show_bug.cgi?id=187350
835         <rdar://problem/41728249>
836
837         Reviewed by Matt Baker.
838
839         * UserInterface/Base/Setting.js: Add a new setting to allow pausing in internal scripts.
840         * UserInterface/Controllers/DebuggerManager.js: Listen to the setting change and toggle
841         the backend setting accordingly. The default is to not break into internal scripts.
842
843         * UserInterface/Views/SettingsTabContentView.js:
844         (WI.SettingsTabContentView.prototype._createDebugSettingsView):
845         Expose the new setting in the Debug settings panel.
846
847 2018-07-06  Nikita Vasilyev  <nvasilyev@apple.com>
848
849         Web Inspector: Dark Mode: resource search field has white text on white background
850         https://bugs.webkit.org/show_bug.cgi?id=187423
851
852         Reviewed by Timothy Hatcher.
853
854         Match the colors of sidebar filter fields.
855
856         * UserInterface/Views/DarkMode.css:
857         (@media (prefers-dark-interface)):
858         (.find-banner > input[type="search"]):
859
860 2018-07-04  Tim Horton  <timothy_horton@apple.com>
861
862         Introduce PLATFORM(IOSMAC)
863         https://bugs.webkit.org/show_bug.cgi?id=187315
864
865         Reviewed by Dan Bernstein.
866
867         * Configurations/Base.xcconfig:
868
869 2018-06-28  Matt Baker  <mattbaker@apple.com>
870
871         Web Inspector: REGRESSION (r213000): copy from Search results content view broken
872         https://bugs.webkit.org/show_bug.cgi?id=187020
873         <rdar://problem/40928766>
874
875         Reviewed by Timothy Hatcher.
876
877         Since WI._copy listens for a copy event from the document, it is called
878         after CodeMirror handles the event and sets clipboard data. If WI._copy
879         finds a custom copy handler to call, that handler can determine whether
880         to overwrite the current clipboard data, or leave it alone.
881
882         SearchTabContentView's handleCopyEvent method should return early if the
883         content tree outline doesn't have the focus. This prevents the selection
884         in the TextEditor from being overwritten, without any special knowledge of
885         the content browser's current view.
886
887         * UserInterface/Views/SearchTabContentView.js:
888         (WI.SearchTabContentView.prototype.handleCopyEvent):
889
890 2018-06-25  Nikita Vasilyev  <nvasilyev@apple.com>
891
892         Web Inspector: Dark Mode: Box Model section should have dark background
893         https://bugs.webkit.org/show_bug.cgi?id=186976
894
895         Reviewed by Brian Burg.
896
897         Replace all instances of black text on white background with the default text and background colors.
898
899         * UserInterface/Views/BoxModelDetailsSectionRow.css:
900         (@media (prefers-dark-interface)):
901         (.details-section .row.box-model):
902         (.details-section .row.box-model .label):
903         (.details-section .row.box-model :matches(.position, .margin, .border, .padding, .content)):
904         (.details-section .row.box-model:not(.hovered) :matches(.margin, .border, .padding, .content),):
905         (.details-section .row.box-model .margin):
906         (.details-section .row.box-model .border):
907
908 2018-06-25  Nikita Vasilyev  <nvasilyev@apple.com>
909
910         Web Inspector: Dark Mode: color outline is too dark
911         https://bugs.webkit.org/show_bug.cgi?id=186975
912
913         Reviewed by Brian Burg.
914
915         Make the outline lighter than the background.
916
917         * UserInterface/Views/DarkMode.css:
918         (@media (prefers-dark-interface)):
919         (.hover-menu > svg > :matches(path, rect)):
920
921 2018-06-25  Nikita Vasilyev  <nvasilyev@apple.com>
922
923         Web Inspector: Dark Mode: Media query names are unreadable
924         https://bugs.webkit.org/show_bug.cgi?id=186974
925
926         Reviewed by Brian Burg.
927
928         Change media query names from dark blue to light blue.
929
930         * UserInterface/Views/DarkMode.css:
931         (@media (prefers-dark-interface)):
932         (.CodeMirror .CodeMirror-lines .CodeMirror-matchingbracket):
933         (.cm-s-default .cm-attribute):
934
935 2018-06-25  Nikita Vasilyev  <nvasilyev@apple.com>
936
937         Web Inspector: Dark Mode: Network headers colors are too dim
938         https://bugs.webkit.org/show_bug.cgi?id=186985
939
940         Reviewed by Brian Burg.
941
942         Increasing the luminance of network header colors by increasing lightness and brightness.
943
944         * UserInterface/Views/DarkMode.css:
945         (@media (prefers-dark-interface)):
946         (:root):
947
948 2018-06-25  Nikita Vasilyev  <nvasilyev@apple.com>
949
950         Web Inspector: Dark Mode: Font guideline colors are too bright
951         https://bugs.webkit.org/show_bug.cgi?id=186986
952
953         Reviewed by Brian Burg.
954
955         Make the guidelines less distractive from the font glyphs.
956
957         * UserInterface/Views/DarkMode.css:
958         (@media (prefers-dark-interface)):
959         (.content-view.resource.font .preview > .line):
960         (.content-view.resource.font .metric.top):
961         (.content-view.resource.font .metric.baseline):
962         (.content-view.resource.font .metric.middle):
963         (.content-view.resource.font .metric.xheight):
964         (.content-view.resource.font .metric.bottom):
965
966 2018-06-20  Daniel Bates  <dabates@apple.com>
967
968         Web Inspector: All non-Same-Site cookies are marked as Same-Site Strict in Storage tab
969         https://bugs.webkit.org/show_bug.cgi?id=186867
970         <rdar://problem/41175424>
971
972         Reviewed by Matt Baker.
973
974         Fixes an issue where cookies that do not have a Same-Site policy would be marked up as Same-
975         Site Strict in Web Inspector's cookie storage content view (under the storage tab).
976
977         * UserInterface/Views/CookieStorageContentView.js:
978         (WI.CookieStorageContentView.prototype._rebuildTable): Only compute the display name if
979         we cookie.sameSite is non-null and is not WI.Cookie.SameSiteType.None. Moreover, remove
980         an extraneous call to WI.Cookie.parseSameSiteAttributeValue() as cookie.SameSite represents
981         the already parsed value (one of the WI.Cookie.SameSiteType-scoped values).
982
983 2018-06-18  Brian Burg  <bburg@apple.com>
984
985         Web Inspector: TypeError: Array.prototype.sort passed bad value in NetworkTableContentView _updateSortAndFilteredEntries
986         https://bugs.webkit.org/show_bug.cgi?id=186787
987         <rdar://problem/41175680>
988
989         Reviewed by Timothy Hatcher.
990
991         * UserInterface/Views/NetworkTableContentView.js:
992         (WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):
993
994 2018-06-13  Nikita Vasilyev  <nvasilyev@apple.com>
995
996         Web Inspector: open source Dark Mode
997         https://bugs.webkit.org/show_bug.cgi?id=186606
998
999         Reviewed by Timothy Hatcher.
1000
1001         The dark mode is currently only available on macOS Mojave via prefers-dark-interface CSS media query.
1002
1003         * UserInterface/Main.html:
1004         * UserInterface/Views/DarkMode.css: Added.
1005         (@media (prefers-dark-interface)):
1006         (:root):
1007         (body.window-inactive):
1008         (body.window-inactive *):
1009         (#main):
1010         (.tree-outline.dom li.selected .selection-area):
1011         (.tab-bar > .item > .icon):
1012         (.go-to-arrow):
1013         (.resource-link,):
1014         (.expand-list-button):
1015         (:matches(img, canvas).show-grid):
1016         (.formatted-object,):
1017         (.formatted-null,):
1018         (.editing):
1019         (.editing, .editing *):
1020         (.text-editor > .CodeMirror .execution-line):
1021         (.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
1022         (.details-section > .header):
1023         (.details-section > .header > label):
1024         (.details-section .details-section,):
1025         (.details-section .details-section:not(.collapsed) > .header):
1026         (.details-section > .content > .group > .row.simple > .label):
1027         (.details-section > .content > .group:nth-child(even)):
1028         (.details-section > .content > .group > .row:matches(.empty, .text)):
1029         (.data-grid th):
1030         (.data-grid td .subtitle):
1031         (.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):
1032         (body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
1033         (.data-grid tr.editable .cell-content > input):
1034         (.data-grid td.spanning):
1035         (.object-tree,):
1036         (.object-preview .name):
1037         (.object-preview > .size):
1038         (.tab-bar):
1039         (.tab-bar > .item):
1040         (.tab-bar > .item > .title):
1041         (.tab-bar > .item:not(.disabled).selected):
1042         (.tab-bar:not(.animating) > .item:not(.selected):hover):
1043         (.tab-bar > .item > .close):
1044         (body.window-inactive .tab-bar):
1045         (body.window-inactive .tab-bar > .item):
1046         (body.window-inactive .tab-bar > .item.selected):
1047         (body.window-inactive .tab-bar > .item > .title):
1048         (body .toolbar):
1049         (body.window-inactive .toolbar):
1050         (body.latest-mac .toolbar .item.button,):
1051         (body.latest-mac .toolbar .search-bar > input[type="search"]):
1052         (body.latest-mac .toolbar .search-bar > input[type="search"]:focus):
1053         (body.latest-mac .toolbar .search-bar > input[type="search"]::placeholder):
1054         (body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::placeholder):
1055         (body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button):
1056         (body.latest-mac .toolbar .dashboard-container):
1057         (body.latest-mac .toolbar .item.button:active):
1058         (body.latest-mac.window-inactive .toolbar .item.button,):
1059         (.navigation-bar .item.divider):
1060         (.toolbar .item.button):
1061         (.toolbar .item.button:not(.disabled):active):
1062         (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
1063         (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
1064         (.toolbar .dashboard.default > .item > div):
1065         (.toolbar .dashboard.default > .item.enabled > div):
1066         (.toolbar .dashboard.default > .item.enabled:hover):
1067         (.toolbar .dashboard.default > .item.enabled:hover > div):
1068         (.toolbar .dashboard.default > .resourcesCount > img,):
1069         (body.latest-mac .toolbar .dashboard .item.button):
1070         (.dashboard-container .advance-arrow):
1071         (.toolbar .dashboard.debugger):
1072         (.dashboard.debugger .navigation-bar .item.button > .glyph):
1073         (.dashboard.debugger > .location .function-name):
1074         (.dashboard.debugger > .location .go-to-link):
1075         (.dashboard.debugger > .divider):
1076         (.popover .edit-breakpoint-popover-content > label.toggle):
1077         (.popover .edit-breakpoint-popover-content > table > tr > th):
1078         (.breakpoint-action-block-body):
1079         (.breakpoint-action-block-body > .description):
1080         (.breakpoint-action-append-button,):
1081         (.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
1082         (.navigation-bar .item.button):
1083         (.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
1084         (.spreadsheet-css-declaration):
1085         (.spreadsheet-css-declaration .selector:focus,):
1086         (.spreadsheet-css-declaration.locked .origin::after):
1087         (.spreadsheet-css-declaration .origin .go-to-link,):
1088         (.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
1089         (.spreadsheet-style-declaration-editor .property.has-warning):
1090         (.spreadsheet-style-declaration-editor .property.has-warning .warning):
1091         (.spreadsheet-css-declaration .media-label):
1092         (.quick-console):
1093         (.syntax-highlighted,):
1094         (.cm-s-default,):
1095         (.CodeMirror .jump-to-symbol-highlight,):
1096         (.console-prompt):
1097         (.completion-suggestions):
1098         (.completion-suggestions-container > .item):
1099         (.CodeMirror-cursor):
1100         (.CodeMirror .CodeMirror-gutters):
1101         (.cm-s-default .cm-link):
1102         (.cm-s-default .cm-m-xml.cm-attribute,):
1103         (.cm-s-default .cm-meta):
1104         (.cm-s-default .cm-variable-3):
1105         (.cm-s-default .cm-builtin):
1106         (.tree-outline .item .subtitle):
1107         (.object-tree-property .getter,):
1108         (.item.object-tree-property.prototype-property):
1109         (.object-tree-property.prototype-property:hover,):
1110         (.object-tree-property .value.error):
1111         (.tree-outline.dom):
1112         (.tree-outline.dom li.selected + ol.children.expanded):
1113         (.tree-outline.dom .shadow):
1114         (.tree-outline.dom li.parent.shadow + ol.children.expanded,):
1115         (.showing-find-banner .tree-outline.dom .search-highlight):
1116         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
1117         (.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
1118         (.spreadsheet-css-declaration.locked):
1119         (.spreadsheet-css-declaration .selector.style-attribute):
1120         (.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
1121         (.inline-swatch):
1122         (.spreadsheet-style-panel .section-header):
1123         (.spreadsheet-style-panel .section-header .node-link:hover):
1124         (.computed-style-properties.details-section):
1125         (.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)):
1126         (.table,):
1127         (.table > .header > .sortable:active):
1128         (.table > .header > :matches(.sort-ascending, .sort-descending)):
1129         (.table > .header > :matches(.sort-ascending, .sort-descending)::after):
1130         (.scope-bar > li):
1131         (.timeline-overview > .navigation-bar.timelines):
1132         (.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)):
1133         (.timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),):
1134         (.time-icon .icon):
1135         (.data-grid th:matches(.sort-ascending, .sort-descending)):
1136         (.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
1137         (.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
1138         (.content-view.settings .navigation-bar):
1139         (.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
1140         (.new-tab.tab.content-view):
1141         (.filter-bar > input[type="search"]):
1142         (.filter-bar > input[type="search"]::placeholder):
1143         (.filter-bar > input[type="search"]:focus):
1144         (.content-view.resource.image):
1145         (.console-messages):
1146         (.console-item):
1147         (.console-messages:focus .console-item.selected):
1148         (.console-messages:focus .console-item.selected + .console-item):
1149         (.console-session:first-of-type .console-session-header):
1150         (.console-session:not(:first-of-type) .console-session-header):
1151         (.console-messages a):
1152         (.console-messages a:hover):
1153         (.console-messages:focus .console-item.selected::after):
1154         (.console-error-level):
1155         (.console-error-level:not(.filtered-out, .filtered-out-by-search), .console-error-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
1156         (.console-warning-level):
1157         (.console-warning-level:not(.filtered-out, .filtered-out-by-search), .console-warning-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
1158         (.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted):
1159         (.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted.selected):
1160         (.source-code.text-editor > .CodeMirror .error):
1161         (.source-code.text-editor > .CodeMirror .warning):
1162         (.source-code.text-editor > .CodeMirror .issue-widget):
1163         (.source-code.text-editor > .CodeMirror .issue-widget.inline.warning):
1164         (.source-code.text-editor > .CodeMirror .issue-widget.inline.warning > .arrow):
1165         (.source-code.text-editor > .CodeMirror .issue-widget.inline.error):
1166         (.source-code.text-editor > .CodeMirror .issue-widget.inline.error > .arrow):
1167         (.console-message .syntax-highlighted):
1168         (.console-warning-level .console-message-text):
1169         (.console-error-level .console-message-text):
1170         (.console-user-command > .console-message-text):
1171         (.console-message .repeat-count):
1172         (.call-frame .subtitle,):
1173         (.call-frame:hover .subtitle .source-link,):
1174         (.call-frame .separator):
1175         (.quick-console.showing-log):
1176         (.find-banner.console-find-banner > input[type=search]:not(:placeholder-shown)):
1177         (.network-resource-detail):
1178         (.network-resource-detail .item.close > .glyph):
1179         (.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
1180         (.resource-headers .value):
1181         (.network-table .cell.domain > .lock):
1182         (.resource-sizes > .content .label):
1183         (.popover.waterfall-popover):
1184         (.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
1185         (.resource-timing-breakdown > table > tr > td.label,):
1186         (.resource-timing-breakdown > table hr):
1187         (.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
1188         (.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
1189         (.web-socket.content-view .data-grid table.data tr.revealed):
1190         (.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
1191         (.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
1192         (.item.action:not(.initial-state)::before):
1193         (.tree-outline .item.action.visual:not(.selected, .invalid)):
1194         (.item.action:not(.initial-state) > .icon):
1195         (.tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
1196         (.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon,):
1197         (.content-view.canvas > .preview > img,):
1198         (.content-view.canvas-overview):
1199         (.content-view.canvas-overview .content-view.canvas):
1200         (.content-view.canvas-overview .content-view.canvas.is-recording):
1201         (.content-view.canvas-overview .content-view.canvas.is-recording > header):
1202         (.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
1203         (.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
1204         (.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
1205         (.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
1206         (.content-view.canvas:not(.tab)):
1207         (.content-view:not(.tab).recording):
1208         (.content-view:not(.tab).recording > header > .slider-container):
1209         (.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
1210         (.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
1211         (.progress-view > .titles > .title):
1212         (.progress-view > .titles > .subtitle):
1213         (.indeterminate-progress-spinner):
1214         (.content-view.shader-program > .text-editor.shader):
1215         (.content-view.shader-program > .text-editor.shader > .type-title):
1216         (.item.shader-program .status > img):
1217         (.open-resource-dialog):
1218         (.open-resource-dialog > .field > input):
1219         (.open-resource-dialog > .field > input::placeholder):
1220         (.open-resource-dialog > .tree-outline .item.selected):
1221         (.open-resource-dialog > .field::before):
1222
1223 2018-06-09  Dan Bernstein  <mitz@apple.com>
1224
1225         [Xcode] Clean up and modernize some build setting definitions
1226         https://bugs.webkit.org/show_bug.cgi?id=186463
1227
1228         Reviewed by Sam Weinig.
1229
1230         * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
1231         * Configurations/DebugRelease.xcconfig: Ditto.
1232         * Configurations/Version.xcconfig: Ditto.
1233
1234 2018-06-05  Matt Baker  <mattbaker@apple.com>
1235
1236         Web Inspector: Tab picker is briefly visible when TabBar initially shown
1237         https://bugs.webkit.org/show_bug.cgi?id=186317
1238
1239         Reviewed by Joseph Pecoraro.
1240
1241         * UserInterface/Views/TabBar.js:
1242         (WI.TabBar): Picker should be initially hidden.
1243
1244 2018-06-05  Nikita Vasilyev  <nvasilyev@apple.com>
1245
1246         Web Inspector: Text in "Add New Class" in auto-capitalizes
1247         https://bugs.webkit.org/show_bug.cgi?id=186311
1248
1249         Reviewed by Matt Baker.
1250
1251         Disable spellcheck to prevent auto-capitalization.
1252
1253         * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
1254         (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
1255
1256 2018-06-04  Matt Baker  <mattbaker@apple.com>
1257
1258         Web Inspector: Cannot copy a link address in Elements tab
1259         https://bugs.webkit.org/show_bug.cgi?id=186281
1260         <rdar://problem/39193355>
1261
1262         Reviewed by Brian Burg.
1263
1264         * UserInterface/Views/ContextMenuUtilities.js:
1265         (WI.appendContextMenuItemsForURL):
1266
1267 2018-05-30  Daniel Bates  <dabates@apple.com>
1268
1269         Web Inspector: Annotate Same-Site cookies
1270         https://bugs.webkit.org/show_bug.cgi?id=184897
1271         <rdar://problem/35178209>
1272
1273         Reviewed by Brian Burg.
1274
1275         Add a new column for the value of the Same-Site cookie attribute to the resource cookie content
1276         view (shown for a resource under the Network tab) and cookie storage content view (shown under
1277         the Storage tab).
1278
1279         The SameSite column in the resource cookie content view reflects the parsing of the Same-Site
1280         attribute from the HTTP response by Web Inspector. This parsing is materially consistent with
1281         the parsing of the SameSite atttribute in CFNetwork. The Same-Site column in the cookie storage
1282         content view reflects the Same-Site cookie policy associated with the cookies provided by the
1283         network stack, if supported. This column will be blank on systems whose network stack does not
1284         support Same-Site cookies (e.g libsoup).
1285
1286         * Localizations/en.lproj/localizedStrings.js:
1287         * UserInterface/Controllers/HARBuilder.js:
1288         (WI.HARBuilder.cookies):
1289         * UserInterface/Models/Cookie.js:
1290         (WI.Cookie):
1291         (WI.Cookie.displayNameForSameSiteType):
1292         (WI.Cookie.parseSameSiteAttributeValue):
1293         (WI.Cookie.parseSetCookieResponseHeader):
1294         * UserInterface/Views/CookieStorageContentView.js:
1295         (WI.CookieStorageContentView.prototype._rebuildTable):
1296         (WI.CookieStorageContentView.prototype._sortDataGrid):
1297         * UserInterface/Views/ResourceCookiesContentView.js:
1298         (WI.ResourceCookiesContentView.prototype.tablePopulateCell):
1299         (WI.ResourceCookiesContentView.prototype._generateSortComparator):
1300         (WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
1301
1302 2018-05-25  Matt Baker  <mattbaker@apple.com>
1303
1304         Web Inspector: Popover dismissed while attempting to move cursor inside
1305         https://bugs.webkit.org/show_bug.cgi?id=185741
1306         <rdar://problem/40340938>
1307
1308         Reviewed by Joseph Pecoraro.
1309
1310         Hovering a token within the bounds of the current popover should not
1311         show a new popover. This prevents the popover from being dismissed when
1312         the cursor passes over a token under the transparent portion of the
1313         popover frame.
1314
1315         * UserInterface/Views/SourceCodeTextEditor.js:
1316         (WI.SourceCodeTextEditor.prototype._showPopover):
1317
1318 2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
1319
1320         Unreviewed, rolling out r232052.
1321
1322         Breaks internal builds.
1323
1324         Reverted changeset:
1325
1326         "Use more C++17"
1327         https://bugs.webkit.org/show_bug.cgi?id=185176
1328         https://trac.webkit.org/changeset/232052
1329
1330 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
1331
1332         Use more C++17
1333         https://bugs.webkit.org/show_bug.cgi?id=185176
1334
1335         Reviewed by JF Bastien.
1336
1337         * Configurations/Base.xcconfig:
1338
1339 2018-05-18  Devin Rousso  <webkit@devinrousso.com>
1340
1341         Web Inspector: Canvas: put `hasVisualEffect` behind an experimental setting
1342         https://bugs.webkit.org/show_bug.cgi?id=185758
1343
1344         Reviewed by Matt Baker.
1345
1346         * Localizations/en.lproj/localizedStrings.js:
1347
1348         * UserInterface/Base/Setting.js:
1349
1350         * UserInterface/Models/RecordingAction.js:
1351         (WI.RecordingAction.prototype.process):
1352
1353         * UserInterface/Views/RecordingActionTreeElement.js:
1354         (WI.RecordingActionTreeElement.prototype.onattach):
1355
1356         * UserInterface/Views/SettingsTabContentView.js:
1357         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
1358
1359 2018-05-16  Devin Rousso  <webkit@devinrousso.com>
1360
1361         Web Inspector: create a navigation item for toggling the overlay rulers/guides
1362         https://bugs.webkit.org/show_bug.cgi?id=185644
1363
1364         Reviewed by Matt Baker.
1365
1366         * Localizations/en.lproj/localizedStrings.js:
1367         * UserInterface/Base/Setting.js:
1368         * UserInterface/Views/DOMTreeContentView.js:
1369         (WI.DOMTreeContentView):
1370         (WI.DOMTreeContentView.prototype.get navigationItems):
1371         (WI.DOMTreeContentView.prototype.closed):
1372         (WI.DOMTreeContentView.prototype._showRulersChanged): Added.
1373         (WI.DOMTreeContentView.prototype._toggleShowRulers): Added.
1374
1375 2018-05-14  Nikita Vasilyev  <nvasilyev@apple.com>
1376
1377         Web Inspector: Canvas: Remove unused --value-visual-highlight CSS variable
1378         https://bugs.webkit.org/show_bug.cgi?id=185636
1379
1380         Reviewed by Matt Baker.
1381
1382         * UserInterface/Views/Variables.css:
1383         (:root):
1384
1385 2018-05-14  Devin Rousso  <webkit@devinrousso.com>
1386
1387         Web Inspector: Canvas tab: don't automatically select a recording when viewing a canvas
1388         https://bugs.webkit.org/show_bug.cgi?id=182950
1389
1390         Reviewed by Matt Baker.
1391
1392         * UserInterface/Views/CanvasSidebarPanel.js:
1393         (WI.CanvasSidebarPanel):
1394         (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
1395         (WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
1396         (WI.CanvasSidebarPanel.prototype._canvasChanged):
1397         (WI.CanvasSidebarPanel.prototype._recordingChanged):
1398         (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
1399         Add a "dummy" ScopeBarItem to the recording ScopeBar that is selected whenever a TreeElement
1400         that doesn't correspond to a Recording is selected. This way, the Recording ScopeBar will
1401         become deselected, and the list of actions will disappear. Clicking on the Recording ScopeBar
1402         will show the previously selected Recording.
1403
1404 2018-05-08  Matt Baker  <mattbaker@apple.com>
1405
1406         Web Inspector: Console drawer resizing is broken when console prompt has >1 line of code
1407         https://bugs.webkit.org/show_bug.cgi?id=185369
1408         <rdar://problem/40013202>
1409
1410         Reviewed by Devin Rousso.
1411
1412         Mouse offset calculation should account for the height of the quick console.
1413         The only reason resizing worked with the single-line quick console is that
1414         the offset calculation included the resizer height, which is very close
1415         to that of the single-line quick console (27px and 30px respectively).
1416
1417         * UserInterface/Views/ConsoleDrawer.js:
1418
1419 2018-05-04  Devin Rousso  <webkit@devinrousso.com>
1420
1421         Web Inspector: simplify the WI.Collection interface
1422         https://bugs.webkit.org/show_bug.cgi?id=185187
1423
1424         Reviewed by Brian Burg.
1425
1426         * UserInterface/Models/Collection.js:
1427         (WI.Collection.prototype.get size): Added.
1428         (WI.Collection.prototype.has): Added.
1429         (WI.Collection.prototype.toJSON):
1430         (WI.Collection.prototype.[Symbol.iterator]): Added.
1431         (WI.Collection.prototype.get items): Deleted.
1432         (WI.Collection.prototype.toArray): Deleted.
1433
1434         * UserInterface/Controllers/CanvasManager.js:
1435         (WI.CanvasManager.prototype._removeCanvas):
1436         * UserInterface/Controllers/DOMDebuggerManager.js:
1437         (WebInspector.DOMDebuggerManager.prototype.get domBreakpoints):
1438         * UserInterface/Models/Frame.js:
1439         (WI.Frame.prototype.removeAllChildFrames):
1440         (WI.Frame.prototype.resourceForURL):
1441         (WI.Frame.prototype.removeAllResources):
1442         * UserInterface/Models/Script.js:
1443         (WI.Script):
1444         * UserInterface/Views/CanvasContentView.js:
1445         (WI.CanvasContentView.prototype.initialLayout):
1446         * UserInterface/Views/CanvasOverviewContentView.js:
1447         (WI.CanvasOverviewContentView.prototype._updateNavigationItems):
1448         * UserInterface/Views/CanvasSidebarPanel.js:
1449         (WI.CanvasSidebarPanel.prototype._recordingRemoved):
1450         (WI.CanvasSidebarPanel.prototype._canvasChanged):
1451         (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
1452         * UserInterface/Views/CanvasTabContentView.js:
1453         (WI.CanvasTabContentView.prototype.attached):
1454         (WI.CanvasTabContentView.prototype._addCanvas):
1455         (WI.CanvasTabContentView.prototype._removeCanvas):
1456         * UserInterface/Views/CanvasTreeElement.js:
1457         (WI.CanvasTreeElement.prototype.onpopulate):
1458         * UserInterface/Views/CollectionContentView.js:
1459         (WI.CollectionContentView.prototype.initialLayout):
1460         (WI.CollectionContentView.prototype.attached):
1461         * UserInterface/Views/CookieStorageContentView.js:
1462         (WI.CookieStorageContentView.prototype._filterCookies):
1463         * UserInterface/Views/DebuggerSidebarPanel.js:
1464         (WI.DebuggerSidebarPanel.prototype._addResourcesRecursivelyForFrame):
1465         * UserInterface/Views/FolderizedTreeElement.js:
1466         (WI.FolderizedTreeElement.prototype.updateParentStatus):
1467         (WI.FolderizedTreeElement.prototype._shouldGroupIntoFolders):
1468         * UserInterface/Views/FrameTreeElement.js:
1469         (WI.FrameTreeElement.prototype.onpopulate):
1470         * UserInterface/Views/NavigationSidebarPanel.js:
1471         (WI.NavigationSidebarPanel.prototype.get contentTreeOutlines):
1472         * UserInterface/Views/NetworkTableContentView.js:
1473         (WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
1474         * UserInterface/Views/OpenResourceDialog.js:
1475         (WI.OpenResourceDialog.prototype._addResourcesForFrame):
1476         (WI.OpenResourceDialog.prototype._addResourcesForTarget):
1477         * UserInterface/Views/TreeOutlineGroup.js:
1478         (WI.TreeOutlineGroup.prototype.get selectedTreeElement):
1479         (WI.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
1480         * UserInterface/Views/WorkerTreeElement.js:
1481         (WI.WorkerTreeElement.prototype.onpopulate):
1482
1483 2018-05-04  Nikita Vasilyev  <nvasilyev@apple.com>
1484
1485         Web Inspector: Styles: Newly added unsupported properties sometimes don't have warnings
1486         https://bugs.webkit.org/show_bug.cgi?id=183097
1487         <rdar://problem/37843816>
1488
1489         Reviewed by Matt Baker.
1490
1491         Update status of properties warnings every time focus moves.
1492
1493         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
1494         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
1495         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
1496         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
1497         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updatePropertiesStatus):
1498         * UserInterface/Views/SpreadsheetStyleProperty.js:
1499         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
1500
1501 2018-05-04  Devin Rousso  <webkit@devinrousso.com>
1502
1503         Web Inspector: Styles Redesign: ensure that tabbing through the last section wraps back to the first
1504         https://bugs.webkit.org/show_bug.cgi?id=181973
1505
1506         Reviewed by Matt Baker.
1507
1508         Unified delegate functions to start editing previous/next rules into a single function for
1509         simplicity.
1510
1511         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
1512         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
1513
1514         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
1515         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
1516         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
1517         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorStartEditingAdjacentRule):
1518         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule): Deleted.
1519
1520         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
1521         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.focusFirstSection):
1522         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.focusLastSection):
1523         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationSectionStartEditingAdjacentRule):
1524         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule): Deleted.
1525         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule): Deleted.
1526
1527         * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
1528         (WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusLastPseudoClassCheckbox):
1529         (WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusFilterBar):
1530         (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
1531         (WI.GeneralStyleDetailsSidebarPanel.prototype._handleForcedPseudoClassCheckboxKeydown):
1532         (WI.GeneralStyleDetailsSidebarPanel.prototype._forcedPseudoClassCheckboxChanged):
1533         (WI.GeneralStyleDetailsSidebarPanel.prototype._handleFilterBarInputFieldKeyDown):
1534
1535         Drive-by fix: provide tabbing support for the Computed styles panel.
1536
1537         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
1538         (WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey.switchRule):
1539         (WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey.switchRule):
1540
1541         * UserInterface/Views/ComputedStyleDetailsPanel.js:
1542         (WI.ComputedStyleDetailsPanel.prototype.focusFirstSection):
1543         (WI.ComputedStyleDetailsPanel.prototype.focusLastSection):
1544         (WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorStartEditingAdjacentRule):
1545
1546 2018-05-04  Devin Rousso  <webkit@devinrousso.com>
1547
1548         Web Inspector: Canvas tab: Determine isFunction by looking at the prototype
1549         https://bugs.webkit.org/show_bug.cgi?id=184990
1550
1551         Reviewed by Brian Burg.
1552
1553         * UserInterface/Models/RecordingAction.js:
1554         (WI.RecordingAction.isFunctionForType):
1555         (WI.RecordingAction._prototypeForType):
1556         (WI.RecordingAction.prototype.async.swizzle):
1557
1558 2018-05-01  Devin Rousso  <webkit@devinrousso.com>
1559
1560         Web Inspector: Canvas tab: determine hasVisibleEffect for all actions immediately after recording is added
1561         https://bugs.webkit.org/show_bug.cgi?id=182995
1562
1563         Reviewed by Matt Baker.
1564
1565         Previously, we'd swizzle the entirety of the `WI.Recording` in one, which would usually
1566         freeze the UI, especially for larger recordings. This patch uses `WI.YieldableTask` to split
1567         the work and allow the rest of the UI to still be usable while `WI.Recording` are processing.
1568         Additionally, since we no longer have to worry about hangs, we can do more work upfront,
1569         such as calculating `hasVisibleEffect` and the current state of 2D canvases.
1570
1571         These changes require that all uses of `WI.Recording` call `process()` before attempting to
1572         use any `frames`/`actions`/`initialState`, as they will have their original payload values
1573         and will have not been swizzled or applied.
1574
1575         * Localizations/en.lproj/localizedStrings.js:
1576
1577         * UserInterface/Models/Recording.js:
1578         (WI.Recording):
1579         (WI.Recording.prototype.process):
1580         (WI.Recording.prototype.createContext): Added.
1581         (WI.Recording.prototype.async yieldableTaskWillProcessItem): Added.
1582         (WI.Recording.prototype.async yieldableTaskDidFinish): Added.
1583
1584         * UserInterface/Models/RecordingAction.js:
1585         (WI.RecordingAction):
1586         (WI.RecordingAction.prototype.process): Added.
1587         (WI.RecordingAction.prototype.async swizzle): Added.
1588         (WI.RecordingAction.prototype.apply):
1589         (WI.RecordingAction.prototype.toJSON):
1590         (WI.RecordingAction.prototype.set state): Deleted.
1591         (WI.RecordingAction.prototype.swizzle): Deleted.
1592         (WI.RecordingAction.prototype.apply.getContent): Deleted.
1593         (WI.RecordingAction.prototype.async _swizzle): Deleted.
1594         * UserInterface/Models/RecordingInitialStateAction.js:
1595         (WI.RecordingInitialStateAction):
1596
1597         * UserInterface/Views/CanvasSidebarPanel.js:
1598         (WI.CanvasSidebarPanel):
1599         (WI.CanvasSidebarPanel.prototype.set action):
1600         (WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
1601         (WI.CanvasSidebarPanel.prototype._recordingChanged):
1602
1603         * UserInterface/Views/CanvasSidebarPanel.css:
1604         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner):
1605
1606         * UserInterface/Views/RecordingActionTreeElement.js:
1607         (WI.RecordingActionTreeElement):
1608         (WI.RecordingActionTreeElement.prototype.onattach):
1609         (WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged): Deleted.
1610
1611         * UserInterface/Views/RecordingContentView.js:
1612         (WI.RecordingContentView):
1613         (WI.RecordingContentView.prototype.get navigationItems):
1614         (WI.RecordingContentView.prototype.updateActionIndex):
1615         (WI.RecordingContentView.prototype.initialLayout):
1616         (WI.RecordingContentView.prototype._generateContentCanvas2D): Added.
1617         (WI.RecordingContentView.prototype._generateContentCanvasWebGL): Added.
1618         (WI.RecordingContentView.prototype._updateCanvasPath):
1619         (WI.RecordingContentView.prototype._updateProcessProgress): Added.
1620         (WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Added.
1621         (WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Added.
1622         (WI.RecordingContentView.supportsCanvasPathDebugging): Deleted.
1623         (WI.RecordingContentView.prototype.async _generateContentCanvas2D): Deleted.
1624         (WI.RecordingContentView.prototype.async _generateContentCanvasWebGL): Deleted.
1625
1626         * UserInterface/Views/RecordingContentView.css:
1627         (.content-view:not(.tab).recording > .preview-container):
1628
1629         * UserInterface/Base/ImageUtilities.js:
1630         (WI.ImageUtilities.supportsCanvasPathDebugging):
1631
1632 2018-04-26  Jer Noble  <jer.noble@apple.com>
1633
1634         Unreviewed build fix; fix WebInspectorUI copy resources step after r231063.
1635
1636         * Configurations/Base.xcconfig:
1637
1638 2018-04-26  Jer Noble  <jer.noble@apple.com>
1639
1640         WK_COCOA_TOUCH all the things.
1641         https://bugs.webkit.org/show_bug.cgi?id=185006
1642
1643         Reviewed by Tim Horton.
1644
1645         * Configurations/WebInspectorUIFramework.xcconfig:
1646
1647 2018-04-21  Nikita Vasilyev  <nvasilyev@apple.com>
1648
1649         REGRESSION(r214076): Web Inspector: Timelines load and DOMContentLoaded markers aren't visible
1650         https://bugs.webkit.org/show_bug.cgi?id=184858
1651
1652         Reviewed by Brian Burg.
1653
1654         r214076 changed the color of all markers to light gray.
1655
1656         * UserInterface/Views/TimelineRuler.css:
1657         (.timeline-ruler > .markers > .marker):
1658         (body[dir=ltr] .timeline-ruler > .markers > .marker):
1659         (body[dir=rtl] .timeline-ruler > .markers > .marker):
1660         (.timeline-ruler > .markers > .marker.current-time):
1661         (.timeline-ruler > .markers > .marker.load-event):
1662         (.timeline-ruler > .markers > .marker.dom-content-event):
1663         (.timeline-ruler > .markers > .marker.timestamp):
1664         (body[dir=ltr] .timeline-ruler > .markers > .marker.current-time): Deleted.
1665         (body[dir=rtl] .timeline-ruler > .markers > .marker.current-time): Deleted.
1666
1667 2018-04-19  Chris Dumez  <cdumez@apple.com>
1668
1669         Rename JSDOMWindowProxy to JSWindowProxy
1670         https://bugs.webkit.org/show_bug.cgi?id=184797
1671
1672         Reviewed by Sam Weinig.
1673
1674         Rename JSDOMWindowProxy to JSWindowProxy for consistency with WindowProxy.
1675
1676         * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
1677         (HeapSnapshot.prototype._isNodeGlobalObject):
1678
1679 2018-04-19  David Kilzer  <ddkilzer@apple.com>
1680
1681         Enable Objective-C weak references
1682         <https://webkit.org/b/184789>
1683         <rdar://problem/39571716>
1684
1685         Reviewed by Dan Bernstein.
1686
1687         * Configurations/Base.xcconfig:
1688         (CLANG_ENABLE_OBJC_WEAK): Enable.
1689
1690 2018-04-16  Nikita Vasilyev  <nvasilyev@apple.com>
1691
1692         Web Inspector: Can't select and copy text from Network tab popover
1693         https://bugs.webkit.org/show_bug.cgi?id=184606
1694
1695         Reviewed by Matt Baker.
1696
1697         * UserInterface/Views/ResourceTimingBreakdownView.css:
1698         (.waterfall-popover .resource-timing-breakdown):
1699
1700 2018-04-12  Nikita Vasilyev  <nvasilyev@apple.com>
1701
1702         Web Inspector: Refactoring: move popover styles from JS to CSS
1703         https://bugs.webkit.org/show_bug.cgi?id=184558
1704
1705         Reviewed by Brian Burg.
1706
1707         Introduce several CSS variables to customize popover appearance in CSS
1708         and not JavaScript.
1709
1710         * UserInterface/Views/NetworkTableContentView.js:
1711         (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
1712         (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
1713         * UserInterface/Views/Popover.css:
1714         (.popover):
1715         * UserInterface/Views/Popover.js:
1716         (WI.Popover):
1717         (WI.Popover.prototype._drawBackground):
1718         Replace `var` with `let`.
1719
1720         (WI.Popover.prototype.get backgroundStyle): Deleted.
1721         (WI.Popover.prototype.set backgroundStyle): Deleted.
1722         * UserInterface/Views/ResourceTimingBreakdownView.css:
1723         (.popover.waterfall-popover):
1724         (.waterfall-popover-content .resource-timing-breakdown):
1725         (.waterfall-popover .resource-timing-breakdown): Deleted.
1726
1727         * UserInterface/Views/NetworkTableContentView.js:
1728         (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
1729         (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
1730         * UserInterface/Views/Popover.css:
1731         (.popover):
1732         * UserInterface/Views/Popover.js:
1733         (WI.Popover):
1734         (WI.Popover.prototype._drawBackground):
1735         * UserInterface/Views/ResourceTimingBreakdownView.css:
1736         (.popover.waterfall-popover):
1737         (.waterfall-popover-content .resource-timing-breakdown):
1738
1739 2018-04-07  Nikita Vasilyev  <nvasilyev@apple.com>
1740
1741         Web Inspector: Errors glyph doesn't fully change to blue when active
1742         https://bugs.webkit.org/show_bug.cgi?id=184389
1743
1744         Reviewed by Joseph Pecoraro.
1745
1746         The dot of the exclamation mark was always black.
1747
1748         * UserInterface/Images/Errors.svg:
1749
1750 2018-04-03  Aaron Chu  <aaron_chu@apple.com>
1751
1752         AX: Add Experimental setting for Accessibility Audit
1753         https://bugs.webkit.org/show_bug.cgi?id=183646
1754         <rdar://problem/38478583>
1755
1756         Reviewed by Brian Burg.
1757
1758         Added experimental feature flag for Accessibility Audit work.
1759
1760         * Localizations/en.lproj/localizedStrings.js:
1761         * UserInterface/Base/Setting.js:
1762         * UserInterface/Views/SettingsTabContentView.js:
1763         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
1764
1765 2018-04-01  Matt Baker  <mattbaker@apple.com>
1766
1767         Web Inspector: Remove dead TabBrowser/TabContentView code
1768         https://bugs.webkit.org/show_bug.cgi?id=184104
1769
1770         Reviewed by Devin Rousso.
1771
1772         * UserInterface/Base/Main.js:
1773         (WI._tryToRestorePendingTabs):
1774         * UserInterface/Views/NewTabContentView.js:
1775         (WI.NewTabContentView.prototype.shown):
1776         (WI.NewTabContentView.prototype.hidden):
1777         * UserInterface/Views/TabBrowser.js:
1778         (WI.TabBrowser.prototype.addTabForContentView):
1779         (WI.TabBrowser.prototype.showTabForContentView):
1780         (WI.TabBrowser._tabBarItemRemoved):
1781         * UserInterface/Views/TabContentView.js:
1782         (WI.TabContentView.prototype.get parentTabBrowser): Deleted.
1783         (WI.TabContentView.prototype.set parentTabBrowser): Deleted.
1784
1785 2018-03-30  Devin Rousso  <webkit@devinrousso.com>
1786
1787         Web Inspector: tint all pixels drawn by shader program when hovering ShaderProgramTreeElement
1788         https://bugs.webkit.org/show_bug.cgi?id=175223
1789
1790         Reviewed by Matt Baker.
1791
1792         * UserInterface/Models/ShaderProgram.js:
1793         (WI.ShaderProgram):
1794         (WI.ShaderProgram.prototype.showHighlight):
1795         (WI.ShaderProgram.prototype.hideHighlight):
1796
1797         * UserInterface/Views/ShaderProgramTreeElement.js:
1798         (WI.ShaderProgramTreeElement.prototype.onattach):
1799         (WI.ShaderProgramTreeElement.prototype._handleMouseOver):
1800         (WI.ShaderProgramTreeElement.prototype._handleMouseOut):
1801         Whenever a ShaderProgramTreeElement is hovered, highlight the corresponding shader program
1802         by tinting the pixels it draws via a blend.
1803
1804 2018-03-27  Timothy Hatcher  <timothy@apple.com>
1805
1806         Web Inspector: Modernize some utility functions
1807         https://bugs.webkit.org/show_bug.cgi?id=184047
1808
1809         Reviewed by Matt Baker.
1810
1811         * UserInterface/Base/Utilities.js:
1812         (Node.prototype.enclosingNodeOrSelfWithClass): Use parentElement instead of parentNode, so we don't need to check for document.
1813         (Node.prototype.enclosingNodeOrSelfWithNodeNameInArray): Ditto. Also just toUpperCase input, since nodeName is already upper case.
1814         (String.prototype.escapeCharacters): Use Set and string iteration instead of indexOf and charAt.
1815
1816 2018-03-27  Nikita Vasilyev  <nvasilyev@apple.com>
1817
1818         Web Inspector: Command-Shift-left/right arrow keys should not switch tabs when focused on color picker text fields
1819         https://bugs.webkit.org/show_bug.cgi?id=184028
1820
1821         Reviewed by Timothy Hatcher.
1822
1823         * UserInterface/Views/EditingSupport.js:
1824         (WI.isEventTargetAnEditableField):
1825         Detect <input type="number"> as an editable text field.
1826
1827 2018-03-23  Nikita Vasilyev  <nvasilyev@apple.com>
1828
1829         Web Inspector: Styles: don't show checkboxes for invalid properties
1830         https://bugs.webkit.org/show_bug.cgi?id=183951
1831         <rdar://problem/38807602>
1832
1833         Reviewed by Matt Baker.
1834
1835         Since toggling of invalid properties isn't supported by the backend, don't show checkboxes for invalid properties.
1836
1837         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
1838         (.spreadsheet-css-declaration:matches(:hover, :focus) .property:not(:matches(.invalid-name, .invalid-value)) .property-toggle,):
1839         (.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,): Deleted.
1840         Don't show checkboxes for invalid properties but still show them for duplicate properties.
1841
1842 2018-03-23  Brian Burg  <bburg@apple.com>
1843
1844         Web Inspector: add WebKitAdditions hooks for WebInspectorUI
1845         https://bugs.webkit.org/show_bug.cgi?id=183940
1846         <rdar://problem/38796310>
1847
1848         Reviewed by Timothy Hatcher.
1849
1850         * Scripts/combine-resources.pl:
1851         (debugLog): Added. Leave in the logging I used to debug this.
1852
1853         (concatenateIncludedFilesMatchingPattern):
1854         (stripIncludedFilesMatchingPattern):
1855         (concatenateFiles): Deleted.
1856         This function tried to do too many things. Split it into
1857         two functions, one for stripping includes and one for concatenating
1858         files referenced by includes.
1859
1860         Lastly, add a negative lookahead clause for 'WebKitAdditions' so includes
1861         containing that string are not combined when no input directory is passed
1862         to the script.
1863
1864         * Scripts/copy-user-interface-resources.pl:
1865         WebKitAdditions is computed either from BUILT_PRODUCTS_DIR or SDKROOT,
1866         depending on the build style. Just try them in order and use the first
1867         one that exists. WebInspectorUI files are in their own directory, so
1868         we can assume there are files to process if that directory exists.
1869
1870         Copy Main.html to derived sources before doing any processing on it.
1871         This makes all combining phases have the same --input-html argument.
1872
1873         (debugLog): Added. Leave in the logging I used to debug this.
1874
1875         (combineOrStripResourcesForWebKitAdditions):
1876         (stripResourcesForWebKitAdditions):
1877         (combineResourcesForWebKitAdditions):
1878         Determine if WebKitAdditions exists and whether there are any
1879         resources for WebInspectorUI present that need to be processed.
1880
1881         * UserInterface/Main.html:
1882         Add stub .js and .css WebKitAdditions files. We can add more later
1883         if it makes sense but this is good enough to validate the build machinery.
1884
1885 2018-03-23  Nikita Vasilyev  <nvasilyev@apple.com>
1886
1887         Web Inspector: Styles Redesign: flashing when switching between nodes
1888         https://bugs.webkit.org/show_bug.cgi?id=179291
1889         <rdar://problem/35352660>
1890
1891         Reviewed by Matt Baker.
1892
1893         Flashing was happening because the layout was a two-step process:
1894         1. Append empty sections.
1895         2. Layout everything inside of the section on requestAnimationFrame.
1896
1897         SpreadsheetRulesStyleDetailsPanel was converted to use layout method,
1898         so both steps happen on requestAnimationFrame.
1899
1900         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
1901         (WI.SpreadsheetRulesStyleDetailsPanel):
1902         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
1903         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
1904         The removed lines from the refresh method moved to the layout method without any changes.
1905
1906 2018-03-22  Nikita Vasilyev  <nvasilyev@apple.com>
1907
1908         Uncaught Exception: TypeError: this._textEditor.toggleUnexecutedCodeHighlights().then is not a function
1909         https://bugs.webkit.org/show_bug.cgi?id=181912
1910         <rdar://problem/36700022>
1911
1912         Reviewed by Matt Baker.
1913
1914         The uncaught exception was caused by returning `false` instead of a promise object.
1915         This patch only fixes the exception. Further enhancements should be done in <https://webkit.org/b/183887>.
1916
1917         * UserInterface/Views/SourceCodeTextEditor.js:
1918         (WI.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
1919         (WI.SourceCodeTextEditor.prototype.toggleUnexecutedCodeHighlights):
1920
1921 2018-03-20  Nikita Vasilyev  <nvasilyev@apple.com>
1922
1923         Web Inspector: Styles: Loses focus when editing a property while page is being loaded
1924         https://bugs.webkit.org/show_bug.cgi?id=182619
1925         <rdar://problem/37363185>
1926
1927         Reviewed by Matt Baker.
1928
1929         Adding or removing a stylesheet causes SpreadsheetRulesStyleDetailsPanel to refresh, triggering a layout
1930         of all SpreadsheetCSSStyleDeclarationSection child views. This resets the focus, selection, and
1931         auto-completion state.
1932
1933         This patch prevents SpreadsheetCSSStyleDeclarationSection from performing a layout when a property is being edited.
1934
1935         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
1936         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
1937         Allow re-layout after creating a blank CSS property and pasting CSS code.
1938         - _pendingAddBlankPropertyIndexOffset is a number after pasting CSS rules.
1939         - _propertyPendingStartEditing is a property model after creating a new property.
1940
1941 2018-03-20  Devin Rousso  <webkit@devinrousso.com>
1942
1943         Web Inspector: Session dividers are not added when Console tab is not visible
1944         https://bugs.webkit.org/show_bug.cgi?id=168622
1945
1946         Reviewed by Matt Baker.
1947
1948         Restructure `_pendingMessages` to be a `Map [ConsoleSession, ConsoleMessageView]`. Instead
1949         of rendering to the `_currentConsoleGroup`, we now render to the saved `ConsoleSession`.
1950         Also ensure that `_pendingMessages` is cleared when navigating and "Preserve Log" is off.
1951
1952         * UserInterface/Controllers/JavaScriptLogViewController.js:
1953         (WI.JavaScriptLogViewController):
1954         (WI.JavaScriptLogViewController.prototype.startNewSession):
1955         (WI.JavaScriptLogViewController.prototype.consolePromptHistoryDidChange):
1956         (WI.JavaScriptLogViewController.prototype._appendConsoleMessageView):
1957         (WI.JavaScriptLogViewController.prototype.renderPendingMessages):
1958         (WI.JavaScriptLogViewController.prototype.get prompt): Deleted.
1959         (WI.JavaScriptLogViewController.prototype.get currentConsoleGroup): Deleted.
1960
1961 2018-03-20  Nikita Vasilyev  <nvasilyev@apple.com>
1962
1963         Web Inspector: Can't add a new class by editing class attribute in DOM outline
1964         https://bugs.webkit.org/show_bug.cgi?id=180890
1965
1966         Reviewed by Ryosuke Niwa.
1967
1968         Typing "my-foo my-bar" creates a single "my-foo\xA0my-bar" class name because
1969         contentEditable-based attribute editor sometimes inserts non-breaking space characters (\xA0).
1970
1971         Replace all non-breaking space characters with the regular space characters when
1972         commiting attribute change.
1973
1974         * UserInterface/Views/DOMTreeElement.js:
1975
1976 2018-03-16  Nikita Vasilyev  <nvasilyev@apple.com>
1977
1978         Web Inspector: Elements: "Force Print Media Styles" should not persist across Web Inspector sessions
1979         https://bugs.webkit.org/show_bug.cgi?id=183708
1980         <rdar://problem/36452183>
1981
1982         Reviewed by Matt Baker.
1983
1984         * UserInterface/Base/Main.js:
1985         (WI.loaded):
1986         * UserInterface/Views/DOMTreeContentView.js:
1987         (WI.DOMTreeContentView):
1988         (WI.DOMTreeContentView.prototype._showPrintStylesChanged):
1989         (WI.DOMTreeContentView.prototype._togglePrintStyles):
1990         (WI.DOMTreeContentView.prototype._showPrintStylesSettingChanged): Deleted.
1991         (WI.DOMTreeContentView.prototype._togglePrintStylesSetting): Deleted.
1992
1993 2018-03-14  Devin Rousso  <webkit@devinrousso.com>
1994
1995         Web Inspector: Canvas: a recording initiated by the user should be shown immediately on completion
1996         https://bugs.webkit.org/show_bug.cgi?id=183647
1997         <rdar://problem/38479187>
1998
1999         Reviewed by Matt Baker.
2000
2001         When recordings are initiated via `console.record`, we don't want to automatically show the
2002         recording after it's payload is sent to the frontend. We determine whether a recording came
2003         from the console by comparing the recording's associated canvas with the current value of
2004         `_recordingCanvas`. Previously, when stopping a recording, we would always null the value,
2005         which meant that all non-single-frame recordings (single-frame recordings are stopped by
2006         the agent after the first paint or tick after an action is performed) would be categorized
2007         as coming from the console, since `_recordingCanvas` would be null by the time the frontend
2008         recieved the payload.
2009
2010         This patch changes it so that the nulling of `_recordingCanvas` in `stopRecording` is only
2011         done if the agent command errors. It was already the case that `_recordingCanvas` was nulled
2012         in `stopRecording`, so this patch just prevents it from being nulled too early.
2013
2014         * UserInterface/Controllers/CanvasManager.js:
2015         (WI.CanvasManager.prototype.stopRecording):
2016
2017 2018-03-12  Jon Davis  <jond@apple.com>
2018
2019         Web Inspector: Remove redundant tooltips
2020         https://bugs.webkit.org/show_bug.cgi?id=183099
2021
2022         Reviewed by Matt Baker.
2023
2024         * Localizations/en.lproj/localizedStrings.js:
2025         * UserInterface/Base/Main.js:
2026         (WI.contentLoaded):
2027         Instantiate ConsoleDrawer so the keyboard shortcuts for FindBanner are available.
2028
2029         * UserInterface/Views/BreakpointTreeElement.js:
2030         (WI.BreakpointTreeElement):
2031         Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2032
2033         * UserInterface/Views/ButtonNavigationItem.js:
2034         (WI.ButtonNavigationItem):
2035         Only show tooltips when the button style is an image.
2036
2037         * UserInterface/Views/ConsoleDrawer.js:
2038         (WI.ConsoleDrawer):
2039         (WI.ConsoleDrawer.prototype.toggleButtonShortcutTooltip):
2040         Added helper to set the toggle button keyboard shortcut tooltip.
2041
2042         * UserInterface/Views/DOMBreakpointTreeElement.js:
2043         (WI.DOMBreakpointTreeElement):
2044         Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2045
2046         * UserInterface/Views/DOMNodeTreeElement.js:
2047         (WI.DOMNodeTreeElement):
2048         Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2049
2050         * UserInterface/Views/FindBanner.js:
2051         (WI.FindBanner):
2052         * UserInterface/Views/HierarchicalPathComponent.js:
2053         (WI.HierarchicalPathComponent):
2054         (WI.HierarchicalPathComponent.prototype.get tooltip):
2055         (WI.HierarchicalPathComponent.prototype.set tooltip):
2056         (WI.HierarchicalPathComponent.prototype.get hideTooltip):
2057         (WI.HierarchicalPathComponent.prototype.set hideTooltip):
2058         (WI.HierarchicalPathComponent.prototype._updateElementTitleAndText):
2059         Add tooltip management features to manage tooltips separately of the displayName,
2060         and provide a behavior to hide tooltips while retaining the tooltip data.
2061
2062         * UserInterface/Views/HierarchicalPathNavigationItem.js:
2063         (WI.HierarchicalPathNavigationItem.prototype.updateLayout):
2064         Hide tooltips when fully visible, show tooltips for collapsed items.
2065
2066         * UserInterface/Views/PinnedTabBarItem.js:
2067         (WI.PinnedTabBarItem.prototype.titleDidChange):
2068         Set tooltips for pinned tab bar items.
2069
2070         * UserInterface/Views/QuickConsole.js:
2071         (WI.QuickConsole):
2072         Set the ConsoleDrawer toggle button tooltip after the keyboard shortcut is registered.
2073
2074         * UserInterface/Views/StorageTreeElement.js:
2075         (WI.StorageTreeElement):
2076         Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2077
2078         * UserInterface/Views/TabBarItem.js:
2079         (WI.TabBarItem.prototype.get title):
2080         (WI.TabBarItem.prototype.set title):
2081         (WI.TabBarItem.prototype.titleDidChange):
2082         (WI.TabBarItem):
2083         Add title property management with an overridable titleDidChange handler for
2084         setting tooltips when needed.
2085
2086         * UserInterface/Views/TimelineTreeElement.js:
2087         (WI.TimelineTreeElement):
2088         Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2089
2090         * UserInterface/Views/ToggleButtonNavigationItem.js:
2091         (WI.ToggleButtonNavigationItem.prototype.set defaultToolTip):
2092         Added a setter for manging the default tooltip of a toggle button.
2093
2094         * UserInterface/Views/XHRBreakpointTreeElement.js:
2095         (WI.XHRBreakpointTreeElement):
2096         Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2097
2098 2018-03-09  Nikita Vasilyev  <nvasilyev@apple.com>
2099
2100         Web Inspector: Sources: Open all resources in Sources tab instead of Resources/Debugger
2101         https://bugs.webkit.org/show_bug.cgi?id=183317
2102         <rdar://problem/38108455>
2103
2104         Reviewed by Matt Baker.
2105
2106         * Localizations/en.lproj/localizedStrings.js:
2107         * UserInterface/Base/Main.js:
2108         * UserInterface/Views/ContextMenuUtilities.js:
2109         (WI.appendContextMenuItemsForURL):
2110         Introduce preferredTabType option instead of listing ignoreResourcesTab, ignoreDebuggerTab, ignoreSearchTab, and ignoreNetworkTab.
2111         The only correct outcome of selecting "Reveal in Sources Tab" context menu is to open Sources tab, not any other tab.
2112
2113         * UserInterface/Views/SourceCodeTextEditor.js:
2114         (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
2115         * UserInterface/Views/TabBrowser.js:
2116         (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
2117
2118 2018-03-08  Nikita Vasilyev  <nvasilyev@apple.com>
2119
2120         Web Inspector: Sources: add SourcesTabContentView and SourceSidebarPanel classes
2121         https://bugs.webkit.org/show_bug.cgi?id=183316
2122         <rdar://problem/38107639>
2123
2124         Reviewed by Matt Baker.
2125
2126         Add Sources tab and sidebar panel, which are copies of the corresponding Resources classes.
2127         The Sources tab is shown when it's enabled in the experimental settings. This patch doesn't
2128         remove existing Resources and Debugger tabs.
2129
2130         * UserInterface/Base/Main.js:
2131         (WI.contentLoaded):
2132         * UserInterface/Main.html:
2133         * UserInterface/Views/SourcesSidebarPanel.css: Added.
2134         (.sidebar > .panel.navigation.sources > .content):
2135         (.sidebar > .panel.navigation.sources > .navigation-bar):
2136         * UserInterface/Views/SourcesSidebarPanel.js: Added.
2137         (WI.SourcesSidebarPanel):
2138         (WI.SourcesSidebarPanel.shouldPlaceResourcesAtTopLevel):
2139         (WI.SourcesSidebarPanel.prototype.get minimumWidth):
2140         (WI.SourcesSidebarPanel.prototype.closed):
2141         (WI.SourcesSidebarPanel.prototype.showDefaultContentView):
2142         (WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
2143         (WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
2144         (WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject):
2145         (WI.SourcesSidebarPanel.prototype.initialLayout):
2146         (WI.SourcesSidebarPanel.prototype.hasCustomFilters):
2147         (WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
2148         (WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2149         (WI.SourcesSidebarPanel.prototype._mainResourceDidChange):
2150         (WI.SourcesSidebarPanel.prototype._mainFrameDidChange):
2151         (WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
2152         (WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange):
2153         (WI.SourcesSidebarPanel.prototype._scriptWasAdded):
2154         (WI.SourcesSidebarPanel.prototype._addScript):
2155         (WI.SourcesSidebarPanel.prototype._scriptWasRemoved):
2156         (WI.SourcesSidebarPanel.prototype._scriptsCleared):
2157         (WI.SourcesSidebarPanel.prototype._styleSheetAdded):
2158         (WI.SourcesSidebarPanel.prototype._addTargetWithMainResource):
2159         (WI.SourcesSidebarPanel.prototype._targetRemoved):
2160         (WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
2161         (WI.SourcesSidebarPanel.prototype._compareTreeElements):
2162         (WI.SourcesSidebarPanel.prototype._extraDomainsActivated):
2163         (WI.SourcesSidebarPanel.prototype._scopeBarSelectionDidChange):
2164         * UserInterface/Views/SourcesTabContentView.js: Added.
2165         (WI.SourcesTabContentView):
2166         (WI.SourcesTabContentView.tabInfo):
2167         (WI.SourcesTabContentView.isTabAllowed):
2168         (WI.SourcesTabContentView.prototype.get type):
2169         (WI.SourcesTabContentView.prototype.get supportsSplitContentBrowser):
2170         (WI.SourcesTabContentView.prototype.canShowRepresentedObject):
2171
2172 2018-03-07  Devin Rousso  <webkit@devinrousso.com>
2173
2174         Web Inspector: Canvas tab: ensure that the Recording TreeOutline has a specified height for virtualization
2175         https://bugs.webkit.org/show_bug.cgi?id=183015
2176
2177         Reviewed by Matt Baker.
2178
2179         * UserInterface/Views/CanvasSidebarPanel.js:
2180         (WI.CanvasSidebarPanel):
2181
2182         * UserInterface/Views/CanvasSidebarPanel.css:
2183         (.sidebar > .panel.navigation.canvas > .content):
2184         (.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
2185         (.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content):
2186         (.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
2187         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar): Deleted.
2188         (.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas): Deleted.
2189
2190         * UserInterface/Views/TreeElement.js:
2191         (WI.TreeElement.prototype._detach):
2192
2193 2018-02-26  Devin Rousso  <webkit@devinrousso.com>
2194
2195         Web Inspector: Canvas Tab: Scroll into view / Inspect element if Canvas has DOM node
2196         https://bugs.webkit.org/show_bug.cgi?id=181769
2197
2198         Reviewed by Matt Baker.
2199
2200         * Localizations/en.lproj/localizedStrings.js:
2201
2202         * UserInterface/Images/Markup.svg: Added.
2203
2204         * UserInterface/Views/CanvasContentView.js:
2205         (WI.CanvasContentView):
2206         (WI.CanvasContentView.prototype.initialLayout):
2207         (WI.CanvasContentView.prototype._canvasElementButtonClicked):
2208
2209 2018-02-19  Matt Baker  <mattbaker@apple.com>
2210
2211         Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
2212         https://bugs.webkit.org/show_bug.cgi?id=182597
2213         <rdar://problem/37341564>
2214
2215         Reviewed by Devin Rousso.
2216
2217         Support showing/hiding the navigation sidebar panel based on the current
2218         represented object. Individual TabContentViews can opt-in to this behavior,
2219         by overriding TabContentView.prototype.managesNavigationSidebarPanel.
2220
2221         * UserInterface/Views/CanvasSidebarPanel.js:
2222         (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
2223         * UserInterface/Views/CanvasTabContentView.js:
2224         (WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
2225         Hide the Canvas navigation sidebar when viewing the overview.
2226
2227         * UserInterface/Views/ContentBrowserTabContentView.js:
2228         (WI.ContentBrowserTabContentView):
2229         (WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
2230         (WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
2231         (WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):
2232
2233         * UserInterface/Views/NavigationSidebarPanel.js:
2234         (WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
2235         Provide default implementation that just defers to the TabContentView.
2236         This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
2237         will have a meaningful default to fall back on.
2238
2239         * UserInterface/Views/TabBrowser.js:
2240         (WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
2241         (WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
2242
2243         * UserInterface/Views/TabContentView.js:
2244         (WI.TabContentView.prototype.get managesNavigationSidebarPanel):
2245
2246 2018-02-16  Matt Baker  <mattbaker@apple.com>
2247
2248         Web Inspector: TabBar redesign: remove top-level search field and pin the Search tab
2249         https://bugs.webkit.org/show_bug.cgi?id=182353
2250         <rdar://problem/37088644>
2251
2252         Reviewed by Devin Rousso.
2253
2254         * Localizations/en.lproj/localizedStrings.js:
2255
2256         * UserInterface/Base/Main.js:
2257         (WI.contentLoaded):
2258         Create Search UI based on experimental setting. When the new TabBar is
2259         enabled, the Search tab is a pinned tab. Since it is also saveable, it
2260         needs to be added to the TabBrowser (the browser adds the item to the bar).
2261
2262         When restoring saved tabs, make an additional check to prevent a tab
2263         from being added twice. This can occur now that the Search tab is pinned.
2264
2265         * UserInterface/Images/Search.svg:
2266         Update art to better match Safari/macOS. Slightly increase the radius of
2267         the lens, and shorten the length of the handle.
2268
2269         * UserInterface/Views/GoToLineDialog.css:
2270         (.go-to-line-dialog > div::before):
2271         Update styles for new Search icon.
2272
2273         * UserInterface/Views/LegacyTabBar.js:
2274         (WI.LegacyTabBar.prototype.get saveableTabCount):
2275         Backported new TabBar method which is called by TabBrowser.
2276
2277         * UserInterface/Views/OpenResourceDialog.css:
2278         (.open-resource-dialog > .field::before):
2279         Update styles for new Search icon.
2280
2281         * UserInterface/Views/PinnedTabBarItem.js:
2282         (WI.PinnedTabBarItem.prototype.fromTabInfo):
2283         Match GeneralTabBarItem.fromTabInfo.
2284
2285         * UserInterface/Views/SearchTabContentView.js:
2286         (WI.SearchTabContentView):
2287         (WI.SearchTabContentView.tabInfo):
2288         New image (magnifying glass without border) when new TabBar is enabled.
2289
2290         * UserInterface/Views/SettingsTabContentView.js:
2291         (WI.SettingsTabContentView):
2292
2293         * UserInterface/Views/TabBar.js:
2294         (WI.TabBar):
2295         Move creation of the Settings item out of TabBar. The TabBar should
2296         only be concerned with managing tabs.
2297
2298         (WI.TabBar.prototype.get saveableTabCount):
2299         (WI.TabBar.prototype._handleContextMenu):
2300         (WI.TabBar.prototype.get normalNonEphemeralTabCount): Deleted.
2301         Now that the Search tab is pinned, there aren't any normal tabs that
2302         are also ephemeral. For the LegacyTabBar, both the Search and New Tab
2303         tabs are still in this category.
2304
2305         * UserInterface/Views/TabBrowser.js:
2306         (WI.TabBrowser.prototype.addTabForContentView):
2307         (WI.TabBrowser.prototype.closeTabForContentView):
2308         (WI.TabBrowser.prototype._tabBarItemSelected):
2309         (WI.TabBrowser._tabBarItemRemoved):
2310         Recent tab list should be validated against the list of saveable tabs,
2311         since the Search tab is no longer a normal tab (a GeneralTabBarItem),
2312         but is still persisted across Inspector sessions.
2313
2314 2018-02-16  Matt Baker  <mattbaker@apple.com>
2315
2316         Web Inspector: TabBar redesign: TabBarItem close button is incorrectly positioned
2317         https://bugs.webkit.org/show_bug.cgi?id=182844
2318         <rdar://problem/37586749>
2319
2320         Reviewed by Timothy Hatcher.
2321
2322         * UserInterface/Views/GeneralTabBarItem.js:
2323         (WI.GeneralTabBarItem.prototype.set title):
2324         Insert the title before the last flexible space item.
2325
2326         * UserInterface/Views/TabBar.css:
2327         (.tab-bar > .item):
2328         (.tab-bar > .item > .close):
2329         (.tab-bar > .item > .flex-space):
2330         (.tab-bar > .item.ephemeral > .flex-space:last-child):
2331         (.tab-bar.collapsed > .item):
2332         (.tab-bar.collapsed > .item > .flex-space):
2333         (.tab-bar.collapsed > .item > .close):
2334         (.tab-bar.collapsed > .item:hover > .close):
2335         (.tab-bar.collapsed > .item.ephemeral:hover > .icon):
2336         (.tab-bar > .item:hover > .close): Deleted.
2337         (.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon): Deleted.
2338
2339         * UserInterface/Views/TabBarItem.js:
2340         (WI.TabBarItem):
2341         Restore flexible space items before and after the icon.
2342
2343 2018-02-14  Nikita Vasilyev  <nvasilyev@apple.com>
2344
2345         Web Inspector: Styles: completion popover doesn't hide when switching panels
2346         https://bugs.webkit.org/show_bug.cgi?id=182464
2347         <rdar://problem/37202763>
2348
2349         Reviewed by Timothy Hatcher.
2350
2351         Save the position of the anchor, an element the popover is shown for, and hide the completion popover
2352         when the position changes.
2353
2354         * UserInterface/Views/CompletionSuggestionsView.js:
2355         (WI.CompletionSuggestionsView.prototype.showUntilAnchorMoves):
2356         When the popover is visible, check every 200ms if the anchor moved.
2357
2358         (WI.CompletionSuggestionsView.prototype.hide):
2359         * UserInterface/Views/SpreadsheetTextField.js:
2360         (WI.SpreadsheetTextField.prototype._updateCompletions):
2361         (WI.SpreadsheetTextField.prototype._getCaretRect):
2362         getBoundingClientRect returns {x: 0, y: 0} when it can't determine node's position.
2363         This happens when a node isn't attached to DOM, attached to DOM but not visible, and
2364         a number of odd cases.
2365
2366 2018-02-14  Matt Baker  <mattbaker@apple.com>
2367
2368         Web Inspector: TabBar redesign: only show allowed tabs in the available tabs context menu
2369         https://bugs.webkit.org/show_bug.cgi?id=182721
2370         <rdar://problem/37479019>
2371
2372         Reviewed by Timothy Hatcher.
2373
2374         In addition to only including allowed tabs in the TabBar context menu,
2375         perform a sanity check when setting the selected tab item, since the
2376         serialized selection index could refer to a tab that is no longer allowed.
2377
2378         * UserInterface/Views/LegacyTabBar.js:
2379         (WI.LegacyTabBar.prototype.set selectedTabBarItem):
2380         (WI.LegacyTabBar.prototype._handleContextMenu):
2381
2382         * UserInterface/Views/TabBar.js:
2383         (WI.TabBar.prototype.set selectedTabBarItem):
2384         (WI.TabBar.prototype._handleContextMenu):
2385
2386 2018-02-09  Matt Baker  <mattbaker@apple.com>
2387
2388         Web Inspector: Canvas tab: tree selection abruptly changes when selecting a recording frame
2389         https://bugs.webkit.org/show_bug.cgi?id=182667
2390         <rdar://problem/37412639>
2391
2392         Reviewed by Devin Rousso.
2393
2394         * UserInterface/Views/CanvasSidebarPanel.css:
2395         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar):
2396         (.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
2397         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.recording > .icon):
2398         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):
2399         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .status):
2400         (.sidebar > .panel.navigation.canvas > .content > .navigation-bar): Deleted.
2401         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon): Deleted.
2402         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon): Deleted.
2403         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status): Deleted.
2404         Style changes for the additional DOM element required to virtualize the recording tree outline.
2405
2406         * UserInterface/Views/CanvasSidebarPanel.js:
2407         (WI.CanvasSidebarPanel):
2408         In order to be virtualized, the tree must be the only child of its parent.
2409
2410         (WI.CanvasSidebarPanel.prototype.set action):
2411         Ensure that a frame tree element isn't deselected when the last action
2412         in the frame becomes selected in the RecordingContentView.
2413
2414         (WI.CanvasSidebarPanel.prototype.shown):
2415         Refresh the sidebar, as represented objects may have changed while hidden.
2416
2417         (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
2418         Unset the recording when no valid represented objects are found, to
2419         prevent a stale recording tree from being shown when viewing the overview.
2420
2421         (WI.CanvasSidebarPanel.prototype._canvasChanged):
2422         (WI.CanvasSidebarPanel.prototype._recordingChanged):
2423         (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
2424         Moved toggling of the "has-recordings" style to _canvasChanged, since
2425         the navigation bar should be hidden when no canvas exists.
2426
2427         * UserInterface/Views/CollectionContentView.js:
2428         (WI.CollectionContentView.prototype.addContentViewForItem):
2429         (WI.CollectionContentView.prototype.removeContentViewForItem):
2430         Drive by fixes for child view visible state.
2431
2432         * UserInterface/Views/TreeOutline.css:
2433         (.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner):
2434         Make spinner easier to see against the selection background color.
2435
2436 2018-02-09  Matt Baker  <mattbaker@apple.com>
2437
2438         Web Inspector: Object.shallowEqual always fails when comparing array property values
2439         https://bugs.webkit.org/show_bug.cgi?id=182634
2440         <rdar://problem/37374639>
2441
2442         Reviewed by Devin Rousso.
2443
2444         Object.shallowEqual should use Array.shallowEqual when comparing property
2445         values, since strictly comparing objects/arrays is only true if both
2446         operands reference the same Object.
2447
2448         * UserInterface/Base/Utilities.js:
2449         (value):
2450
2451 2018-02-08  Matt Baker  <mattbaker@apple.com>
2452
2453         Web Inspector: add listing of Canvases/Programs/Recordings to the NavigationSidebar
2454         https://bugs.webkit.org/show_bug.cgi?id=178744
2455         <rdar://problem/35374379>
2456
2457         Reviewed by Devin Rousso.
2458
2459         * Localizations/en.lproj/localizedStrings.js:
2460
2461         * UserInterface/Images/Canvas2D.svg:
2462         * UserInterface/Images/Canvas3D.svg:
2463         * UserInterface/Images/Recording.svg:
2464         Update canvas icons to be monochrome. Simplified the recording icon.
2465
2466         * UserInterface/Main.html:
2467
2468         * UserInterface/Models/RecordingAction.js:
2469         (WI.RecordingAction.prototype.get state):
2470         (WI.RecordingAction.prototype.set state):
2471         Allow (2D) snapshot state to be associated with the action. Used by
2472         RecordingActionDetailsSidebarPanel to retrieve the snapshot state.
2473
2474         * UserInterface/Views/CanvasContentView.css:
2475         (.content-view.canvas:not(.tab)):
2476         (.content-view.canvas:not(.tab) > .progress): Deleted.
2477         (.content-view.canvas:not(.tab) > .progress > .frame-count): Deleted.
2478
2479         * UserInterface/Views/CanvasContentView.js:
2480         (WI.CanvasContentView):
2481         (WI.CanvasContentView.prototype.get navigationItems):
2482         (WI.CanvasContentView.prototype.layout):
2483         (WI.CanvasContentView.prototype.shown):
2484         (WI.CanvasContentView.prototype._recordingStarted):
2485         (WI.CanvasContentView.prototype._recordingProgress):
2486         (WI.CanvasContentView.prototype._recordingStopped):
2487         (WI.CanvasContentView.prototype._updateRecordNavigationItem):
2488         (WI.CanvasContentView.prototype._updateProgressView):
2489         Replace progress UI with a reusable ProgressView class.
2490         When in the overview, clicking the CanvasContentView shows a dedicated
2491         CanvasContentView for inspecting shaders and recordings. This behavior
2492         is controlled by CollectionContentView, so we need to prevent it when
2493         clicking inside the header and footer elements, which contain clickable UI.
2494
2495         * UserInterface/Views/CanvasDetailsSidebarPanel.js:
2496         (WI.CanvasDetailsSidebarPanel.prototype.inspect):
2497
2498         * UserInterface/Views/CanvasOverviewContentView.css:
2499         (.content-view.canvas-overview .content-view.canvas):
2500         (.content-view.canvas-overview .content-view.canvas.is-recording):
2501         (.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
2502         (.content-view.canvas-overview .content-view.canvas > header):
2503         (.content-view.canvas-overview .content-view.canvas.is-recording > header):
2504         (.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
2505         (.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar):
2506         (.content-view.canvas-overview .content-view.canvas.is-recording > .progress-view,):
2507         (.content-view.canvas-overview .content-view.canvas.is-recording > .preview):
2508         (.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)): Deleted.
2509         (.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),): Deleted.
2510         (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar): Deleted.
2511         (.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)): Deleted.
2512         (.content-view.canvas-overview .content-view.canvas > .preview): Deleted.
2513         (.content-view.canvas-overview .content-view.canvas > .progress ~ .preview): Deleted.
2514         Clean up styles, and remove selection styles as canvases are no longer selectable in the overview.
2515
2516         * UserInterface/Views/CanvasOverviewContentView.js:
2517         (WI.CanvasOverviewContentView):
2518         (WI.CanvasOverviewContentView.prototype.get navigationItems):
2519         (WI.CanvasOverviewContentView.prototype.attached):
2520         (WI.CanvasOverviewContentView.prototype.detached):
2521         (WI.CanvasOverviewContentView.prototype.get selectionPathComponents): Deleted.
2522         (WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically): Deleted.
2523         (WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally): Deleted.
2524         (WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged): Deleted.
2525         (WI.CanvasOverviewContentView.prototype._handleUp): Deleted.
2526         (WI.CanvasOverviewContentView.prototype._handleRight): Deleted.
2527         (WI.CanvasOverviewContentView.prototype._handleDown): Deleted.
2528         (WI.CanvasOverviewContentView.prototype._handleLeft): Deleted.
2529         (WI.CanvasOverviewContentView.prototype._handleSpace): Deleted.
2530         (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange): Deleted.
2531         Disable canvas selection. Remove logic for supplemental represented objects,
2532         path components, and selection keyboard shortcuts.
2533
2534         * UserInterface/Views/CanvasSidebarPanel.css: Added.
2535         (.sidebar > .panel.navigation.canvas > .content):
2536         (.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled):
2537         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon):
2538         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.webgl .icon):
2539         (.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
2540         (.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas):
2541         (.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
2542         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon):
2543         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.shader-program > .icon):
2544         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon):
2545         (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status):
2546
2547         * UserInterface/Views/CanvasSidebarPanel.js: Added.
2548         (WI.CanvasSidebarPanel):
2549         (WI.CanvasSidebarPanel.prototype.get canvas):
2550         (WI.CanvasSidebarPanel.prototype.set canvas):
2551         (WI.CanvasSidebarPanel.prototype.set recording):
2552         (WI.CanvasSidebarPanel.prototype.set action):
2553         (WI.CanvasSidebarPanel.prototype.shown):
2554         (WI.CanvasSidebarPanel.prototype.hidden):
2555         (WI.CanvasSidebarPanel.prototype.hasCustomFilters):
2556         (WI.CanvasSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2557         (WI.CanvasSidebarPanel.prototype.initialLayout):
2558         (WI.CanvasSidebarPanel.prototype._recordingAdded):
2559         (WI.CanvasSidebarPanel.prototype._recordingRemoved):
2560         (WI.CanvasSidebarPanel.prototype._scopeBarSelectionChanged):
2561         (WI.CanvasSidebarPanel.prototype._toggleRecording):
2562         (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
2563         (WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
2564         (WI.CanvasSidebarPanel.prototype._canvasChanged):
2565         (WI.CanvasSidebarPanel.prototype._recordingChanged):
2566         (WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
2567         (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
2568         Add new navigation sidebar, split into two sections. The upper section
2569         contains a tree with a single element for the current canvas, and child
2570         elements for any shader programs. The maximum height of this section is 50%
2571         of the sidebar's height. The lower section contains a tree for the selected
2572         recording, and a scope bar for choosing between recordings.
2573
2574         * UserInterface/Views/CanvasTabContentView.css:
2575         (.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
2576         (.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon):
2577         (.content-view.tab.canvas .navigation-bar > .item .canvas.webgl .icon):
2578         (.content-view.tab.canvas .navigation-bar > .item .shader-program > .icon):
2579         (.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon): Deleted.
2580         (.content-view.tab.canvas .navigation-bar > .item .canvas .icon): Deleted.
2581
2582         * UserInterface/Views/CanvasTabContentView.js:
2583         (WI.CanvasTabContentView):
2584         (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
2585         (WI.CanvasTabContentView.prototype.attached):
2586         (WI.CanvasTabContentView.prototype._addCanvas):
2587         (WI.CanvasTabContentView.prototype._removeCanvas):
2588         (WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
2589         (WI.CanvasTabContentView.prototype._recordingAdded):
2590         (WI.CanvasTabContentView.prototype._handleSpace):
2591         (WI.CanvasTabContentView.prototype.showRepresentedObject): Deleted.
2592         (WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged): Deleted.
2593         (WI.CanvasTabContentView.prototype._recordingActionIndexChanged): Deleted.
2594         (WI.CanvasTabContentView.prototype._updateActionIndex): Deleted.
2595         The canvas tab now maintains a tree outline of all canvases, with an
2596         "Overview" element as the root. The Overview element is always the first
2597         item of content browser's hierarchical path.
2598
2599         * UserInterface/Views/CanvasTreeElement.js:
2600         (WI.CanvasTreeElement.createRecordingTreeElement):
2601         (WI.CanvasTreeElement):
2602         (WI.CanvasTreeElement.prototype.onattach):
2603         (WI.CanvasTreeElement.prototype.onpopulate):
2604         (WI.CanvasTreeElement.prototype._updateStatus):
2605         (WI.CanvasTreeElement.prototype.ondetach): Deleted.
2606         Make it possible to not show recordings under the Canvas element.
2607         Create `isRecording` status element (spinner).
2608
2609         * UserInterface/Views/CollectionContentView.js:
2610         (WI.CollectionContentView.prototype.shown):
2611         (WI.CollectionContentView.prototype.hidden):
2612         Child ContentViews need to be updated when the collection's visibility changes.
2613
2614         * UserInterface/Views/ContentView.js:
2615         (WI.ContentView.isViewable):
2616
2617         * UserInterface/Views/ProgressView.css: Added.
2618         (.progress-view):
2619         (.progress-view > .titles):
2620         (.progress-view > .titles > .title):
2621         (.progress-view > .titles > .subtitle):
2622         (.progress-view > .titles > .subtitle::before):
2623         (.progress-view > .indeterminate-progress-spinner):
2624
2625         * UserInterface/Views/ProgressView.js: Added.
2626         (WI.ProgressView):
2627         (WI.ProgressView.prototype.get title):
2628         (WI.ProgressView.prototype.set title):
2629         (WI.ProgressView.prototype.get subtitle):
2630         (WI.ProgressView.prototype.set subtitle):
2631         (WI.ProgressView.prototype.get visible):
2632         (WI.ProgressView.prototype.set visible):
2633         (WI.ProgressView.prototype.initialLayout):
2634         (WI.ProgressView.prototype._updateTitles):
2635         New view class (not a ContentView) for showing a generic progress message,
2636         with a title, subtitle, and progress spinner.
2637
2638         * UserInterface/Views/RecordingContentView.css:
2639         (.content-view:not(.tab).recording > .preview-container):
2640         Remove unnecessary styles.
2641
2642         * UserInterface/Views/RecordingContentView.js:
2643         (WI.RecordingContentView):
2644         (WI.RecordingContentView.prototype.get navigationItems):
2645         (WI.RecordingContentView.prototype.get supplementalRepresentedObjects):
2646         (WI.RecordingContentView.prototype.updateActionIndex):
2647         (WI.RecordingContentView.prototype.get saveData):
2648         (WI.RecordingContentView.prototype._exportRecording):
2649         Relocate the recording export logic and UI.
2650         (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
2651         (WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
2652         (WI.RecordingContentView.prototype._sliderChanged):
2653         Refactor logic for notifying the rest of the UI of changes to the action slider.
2654         The selected action is now exposed as a supplemental represented object, and a
2655         corresponding SupplementalRepresentedObjectsDidChange event.
2656
2657         * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
2658         (WI.RecordingStateDetailsSidebarPanel.prototype.inspect):
2659         (WI.RecordingStateDetailsSidebarPanel.prototype.set action):
2660         (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
2661         (WI.RecordingStateDetailsSidebarPanel):
2662         (WI.RecordingStateDetailsSidebarPanel.prototype.updateAction): Deleted.
2663
2664         * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
2665         (WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
2666         (WI.RecordingTraceDetailsSidebarPanel.prototype.set action):
2667         (WI.RecordingTraceDetailsSidebarPanel):
2668         (WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction): Deleted.
2669         Now that the selected action is exposed to the UI as a supplemental
2670         represented object, details sidebars can be more decoupled from the
2671         canvas tab, and be notified of changes to the selection via `inspect()`.
2672
2673         * UserInterface/Views/ResourceIcons.css:
2674         (.canvas > .icon): Deleted.
2675         (.shader-program .icon): Deleted.
2676
2677 2018-02-08  Nikita Vasilyev  <nvasilyev@apple.com>
2678
2679         Web Inspector: Styles: Typing value and quickly moving focus away may display outdated value in UI
2680         https://bugs.webkit.org/show_bug.cgi?id=182588
2681         <rdar://problem/37332161>
2682
2683         Reviewed by Matt Baker.
2684
2685         CSSProperty models were updated with a 250ms delay. Quickly adding a blank property after modifying
2686         an existing property could result in outdated values being shown.
2687
2688         This patch removes the 250ms delay.
2689
2690         * UserInterface/Views/SpreadsheetStyleProperty.js:
2691         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
2692
2693 2018-02-07  Matt Baker  <mattbaker@apple.com>
2694
2695         Web Inspector: replace isAncestor with Node.contains() in LegacyTabBar
2696         https://bugs.webkit.org/show_bug.cgi?id=182586
2697
2698         Reviewed by Timothy Hatcher.
2699
2700         * UserInterface/Views/LegacyTabBar.js:
2701
2702 2018-02-07  Nikita Vasilyev  <nvasilyev@apple.com>
2703
2704         Web Inspector: Styles: completion popover doesn't hide when switching panels
2705         https://bugs.webkit.org/show_bug.cgi?id=182464
2706         <rdar://problem/37202763>
2707
2708         Reviewed by Timothy Hatcher.
2709
2710         Hide completion popover by triggering blur event on the focused text field.
2711         Removing text fields from the DOM tree would hide the completion popovers as well,
2712         but switching sidebar panels doesn't remove them from the DOM.
2713
2714         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
2715         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.hidden):
2716         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
2717         (WI.SpreadsheetCSSStyleDeclarationSection.prototype.hidden):
2718         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
2719         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.hidden):
2720         * UserInterface/Views/SpreadsheetStyleProperty.js:
2721         (WI.SpreadsheetStyleProperty.prototype.hidden):
2722
2723 2018-02-06  Devin Rousso  <webkit@devinrousso.com>
2724
2725         Web Inspector: Replace isAncestor and isDescendant with native DOM contains method
2726         https://bugs.webkit.org/show_bug.cgi?id=182069
2727
2728         Reviewed by Brian Burg.
2729
2730         * UserInterface/Base/Main.js:
2731         (WI.restoreFocusFromElement):
2732         (WI._mouseDown):
2733         (WI._focusedContentBrowser):
2734         (WI._focusedContentView):
2735         * UserInterface/Base/Utilities.js:
2736         (Node.prototype.traverseNextNode):
2737         (Node.prototype.isAncestor): Deleted.
2738         (Node.prototype.isDescendant): Deleted.
2739         (Node.prototype.isSelfOrAncestor): Deleted.
2740         (Node.prototype.isSelfOrDescendant): Deleted.
2741         * UserInterface/Views/BoxModelDetailsSectionRow.js:
2742         (WI.BoxModelDetailsSectionRow.prototype._handleKeyDown):
2743         * UserInterface/Views/CSSStyleDeclarationSection.js:
2744         (WI.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
2745         * UserInterface/Views/DOMTreeOutline.js:
2746         (WI.DOMTreeOutline.prototype._onmouseout):
2747         * UserInterface/Views/DetailsSection.js:
2748         (WI.DetailsSection.prototype._headerElementClicked):
2749         * UserInterface/Views/EditingSupport.js:
2750         (WI.incrementElementValue):
2751         * UserInterface/Views/LogContentView.js:
2752         (WI.LogContentView.prototype._handleContextMenuEvent):
2753         * UserInterface/Views/ShaderProgramTreeElement.js:
2754         (WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
2755         * UserInterface/Views/SoftContextMenu.js:
2756         (WI.SoftContextMenu.prototype._menuItemMouseOut):
2757         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
2758         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
2759         * UserInterface/Views/TabBar.js:
2760         (WI.TabBar.prototype.insertTabBarItem):
2761
2762 2018-02-06  Devin Rousso  <webkit@devinrousso.com>
2763
2764         Web Inspector: Elements tab should have "Jump to Layer" functionality
2765         https://bugs.webkit.org/show_bug.cgi?id=181800
2766
2767         Reviewed by Joseph Pecoraro.
2768
2769         * Localizations/en.lproj/localizedStrings.js:
2770
2771         * UserInterface/Base/Main.js:
2772         (WI.isShowingElementsTab):
2773         (WI.showLayersTab):
2774         (WI.isShowingLayersTab):
2775
2776         * UserInterface/Views/ContextMenuUtilities.js:
2777         (WI.appendContextMenuItemsForDOMNode):
2778
2779         * UserInterface/Views/LayersTabContentView.js:
2780         (WI.LayersTabContentView.prototype.selectLayerForNode):
2781
2782         * UserInterface/Views/Layers3DContentView.js:
2783         (WI.Layers3DContentView):
2784         (WI.Layers3DContentView.prototype.selectLayerForNode):
2785         (WI.Layers3DContentView.prototype.layout):
2786
2787         * UserInterface/Views/LayerDetailsSidebarPanel.js:
2788         (WI.LayerDetailsSidebarPanel):
2789         (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
2790         (WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):
2791
2792 2018-02-06  Nikita Vasilyev  <nvasilyev@apple.com>
2793
2794         Web Inspector: Rename String.prototype.trimEnd to avoid conflicts with native trimEnd
2795         https://bugs.webkit.org/show_bug.cgi?id=182545
2796
2797         Reviewed by Brian Burg.
2798
2799         Rename:
2800         - trimEnd to truncateEnd
2801         - trimMiddle to truncateMiddle
2802
2803         * UserInterface/Base/Utilities.js:
2804         (String.prototype.trimMiddle): Deleted.
2805         (String.prototype.trimEnd): Deleted.
2806         (String.prototype.truncateMiddle): Added.
2807         (String.prototype.truncateEnd): Added.
2808         Use strict mode. Scrict mode allows `this` to be a primitive (a string, in our case).
2809         In non-strict mode, `this` is always an object. Without the strict mode,
2810         "a".truncateEnd(42) !== "a", because truncateEnd returns a string object.
2811
2812         * UserInterface/Views/DOMTreeElement.js:
2813         (WI.DOMTreeElement.prototype._buildAttributeDOM):
2814         * UserInterface/Views/DOMTreeElementPathComponent.js:
2815         (WI.DOMTreeElementPathComponent):
2816         * UserInterface/Views/SearchResultTreeElement.js:
2817         Remove an obvious comment.
2818
2819         (WI.SearchResultTreeElement.truncateAndHighlightTitle):
2820         * UserInterface/Views/SpreadsheetStyleProperty.js:
2821         (WI.SpreadsheetStyleProperty.prototype._renderValue):
2822
2823 2018-02-05  Nikita Vasilyev  <nvasilyev@apple.com>
2824
2825         Web Inspector: Add an experimental setting to enable Sources tab
2826         https://bugs.webkit.org/show_bug.cgi?id=182461
2827
2828         Reviewed by Brian Burg.
2829
2830         This patch only adds a setting. It doesn't add the Sources tab.
2831
2832         * Localizations/en.lproj/localizedStrings.js:
2833         * UserInterface/Base/Setting.js:
2834         * UserInterface/Views/SettingsTabContentView.js:
2835
2836 2018-02-02  Devin Rousso  <webkit@devinrousso.com>
2837
2838         Web Inspector: Styles Redesign: Pasting multiple properties should create properties instead of a bad property
2839         https://bugs.webkit.org/show_bug.cgi?id=179622
2840         <rdar://problem/35511170>
2841
2842         Reviewed by Matt Baker.
2843
2844         * UserInterface/Views/SpreadsheetStyleProperty.js:
2845         (WI.SpreadsheetStyleProperty.prototype._remove):
2846         (WI.SpreadsheetStyleProperty.prototype._update):
2847         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
2848         (WI.SpreadsheetStyleProperty.prototype._handleNamePaste):
2849         When the user pastes into the name field, parse the text for a list of name-value pairs and
2850         replace the property being edited with the text of those pairs.
2851
2852         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
2853         (WI.SpreadsheetCSSStyleDeclarationEditor):
2854         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
2855         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
2856         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
2857         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyAddBlankPropertySoon):
2858         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
2859         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
2860         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved): Deleted.
2861         Calling `addBlankProperty` will trigger a layout on the next frame, but that might be before
2862         the CSSAgent has had a chance to finish refreshing, so we need a way to defer the creation
2863         of a new property until after we have finished the next layout (which is after the refresh).
2864         Drive-by: fix naming of some delegate functions.
2865
2866         * UserInterface/Models/CSSProperty.js:
2867         (WI.CSSProperty.prototype.replaceWithText):
2868         Provide a way for replacing the property with new text.
2869
2870 2018-02-02  Matt Baker  <mattbaker@apple.com>
2871
2872         Web Inspector: TabBar redesign: remove New Tab button and add experimental feature flag
2873         https://bugs.webkit.org/show_bug.cgi?id=182342
2874         <rdar://problem/37078662>
2875
2876         Reviewed by Devin Rousso.
2877
2878         This patch adds a new experimental setting group, "User Interface", with
2879         a single setting, "Enable New TabBar". When enabled, the New Tab button is
2880         no longer available in the top-level TabBar. The 'open tabs' context menu
2881         no longer allows the last non-ephemeral open tab to be closed (unchecked).
2882
2883         * Localizations/en.lproj/localizedStrings.js:
2884
2885         * UserInterface/Base/Main.js:
2886         (WI.contentLoaded):
2887         (WI._tryToRestorePendingTabs):
2888         Retain legacy behavior behind experimental feature setting.
2889         (WI.isNewTabWithTypeAllowed):
2890
2891         * UserInterface/Base/Setting.js:
2892         * UserInterface/Main.html:
2893
2894         * UserInterface/Views/CanvasTabContentView.js:
2895         (WI.CanvasTabContentView):
2896         * UserInterface/Views/ConsoleTabContentView.js:
2897         (WI.ConsoleTabContentView):
2898         * UserInterface/Views/DebuggerTabContentView.js:
2899         (WI.DebuggerTabContentView):
2900         * UserInterface/Views/ElementsTabContentView.js:
2901         (WI.ElementsTabContentView):
2902
2903         * UserInterface/Views/GeneralTabBarItem.js:
2904         (WI.GeneralTabBarItem):
2905         (WI.GeneralTabBarItem.prototype.fromTabInfo):
2906         (WI.GeneralTabBarItem.prototype.get isEphemeral):
2907         (WI.GeneralTabBarItem.fromTabContentViewConstructor): Deleted.
2908
2909         * UserInterface/Views/LayersTabContentView.js:
2910         (WI.LayersTabContentView):
2911
2912         * UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
2913         (WI.LegacyTabBar):
2914         (WI.LegacyTabBar.prototype.get newTabTabBarItem):
2915         (WI.LegacyTabBar.prototype.updateNewTabTabBarItemState):
2916         (WI.LegacyTabBar.prototype.addTabBarItem):
2917         (WI.LegacyTabBar.prototype.insertTabBarItem.animateTabs):
2918         (WI.LegacyTabBar.prototype.insertTabBarItem.removeStyles):
2919         (WI.LegacyTabBar.prototype.insertTabBarItem):
2920         (WI.LegacyTabBar.prototype.removeTabBarItem.animateTabs):
2921         (WI.LegacyTabBar.prototype.removeTabBarItem.removeStyles):
2922         (WI.LegacyTabBar.prototype.removeTabBarItem):
2923         (WI.LegacyTabBar.prototype.selectPreviousTab):
2924         (WI.LegacyTabBar.prototype.selectNextTab):
2925         (WI.LegacyTabBar.prototype.get selectedTabBarItem):
2926         (WI.LegacyTabBar.prototype.set selectedTabBarItem):
2927         (WI.LegacyTabBar.prototype.get tabBarItems):
2928         (WI.LegacyTabBar.prototype.get normalTabCount):
2929         (WI.LegacyTabBar.prototype.layout.forceItemHidden):
2930         (WI.LegacyTabBar.prototype.layout):
2931         (WI.LegacyTabBar.prototype._tabBarItemsFromLeftToRight):
2932         (WI.LegacyTabBar.prototype._findTabBarItem):
2933         (WI.LegacyTabBar.prototype._hasMoreThanOneNormalTab):
2934         (WI.LegacyTabBar.prototype._openDefaultTab):
2935         (WI.LegacyTabBar.prototype._recordTabBarItemSizesAndPositions):
2936         (WI.LegacyTabBar.prototype._applyTabBarItemSizesAndPositions):
2937         (WI.LegacyTabBar.prototype._clearTabBarItemSizesAndPositions):
2938         (WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose.):
2939         (WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose):
2940         (WI.LegacyTabBar.prototype._handleMouseDown):
2941         (WI.LegacyTabBar.prototype._handleClick):
2942         (WI.LegacyTabBar.prototype._handleMouseMoved):
2943         (WI.LegacyTabBar.prototype._handleMouseUp):
2944         (WI.LegacyTabBar.prototype._handleMouseLeave):
2945         (WI.LegacyTabBar.prototype._handleContextMenu):
2946         (WI.LegacyTabBar.prototype._handleNewTabClick):
2947         (WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu):
2948         (WI.LegacyTabBar.prototype._handleNewTabMouseEnter):
2949
2950         * UserInterface/Views/NetworkTabContentView.js:
2951         (WI.NetworkTabContentView):
2952         * UserInterface/Views/NewTabContentView.js:
2953         (WI.NewTabContentView):
2954         (WI.NewTabContentView.tabInfo):
2955         (WI.NewTabContentView.isEphemeral): Deleted.
2956         * UserInterface/Views/ResourcesTabContentView.js:
2957         (WI.ResourcesTabContentView):
2958         * UserInterface/Views/SearchTabContentView.js:
2959         (WI.SearchTabContentView):
2960         (WI.SearchTabContentView.tabInfo):
2961         (WI.SearchTabContentView.isEphemeral): Deleted.
2962
2963         * UserInterface/Views/SettingsTabContentView.js:
2964         (WI.SettingsTabContentView.tabInfo):
2965         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2966         (WI.SettingsTabContentView.isEphemeral): Deleted.
2967
2968         * UserInterface/Views/StorageTabContentView.js:
2969         (WI.StorageTabContentView):
2970
2971         * UserInterface/Views/TabBar.css:
2972         * UserInterface/Views/TabBar.js:
2973         (WI.TabBar):
2974         (WI.TabBar.prototype.insertTabBarItem):
2975         (WI.TabBar.prototype.removeTabBarItem):
2976         (WI.TabBar.prototype.set selectedTabBarItem):
2977         (WI.TabBar.prototype.get normalNonEphemeralTabCount):
2978         (WI.TabBar.prototype._handleMouseDown):
2979         (WI.TabBar.prototype._handleClick):
2980         (WI.TabBar.prototype._handleMouseMoved):
2981         (WI.TabBar.prototype._handleMouseLeave):
2982         (WI.TabBar.prototype._handleContextMenu):
2983         (WI.TabBar.prototype._handleTabPickerTabContextMenu):
2984         (WI.TabBar.prototype.get newTabTabBarItem): Deleted.
2985         (WI.TabBar.prototype.updateNewTabTabBarItemState): Deleted.
2986         (WI.TabBar.prototype._openDefaultTab): Deleted.
2987         (WI.TabBar.prototype._handleNewTabClick): Deleted.
2988         (WI.TabBar.prototype._handleNewTabMouseEnter): Deleted.
2989         Remove support for the New Tab button and default tab. Without a default
2990         tab, there is nothing to display when no tabs are open, so prevent the
2991         last non-pinned tab from being removed.
2992
2993         * UserInterface/Views/TabBrowser.js:
2994         (WI.TabBrowser._tabBarItemRemoved):
2995         * UserInterface/Views/TabContentView.js:
2996         (WI.TabContentView.isEphemeral): Deleted.
2997         * UserInterface/Views/TimelineTabContentView.js:
2998         (WI.TimelineTabContentView):
2999
3000 2018-01-30  Devin Rousso  <webkit@devinrousso.com>
3001
3002         Web Inspector: Replace Object.shallowMerge with ES2018 spread operator
3003         https://bugs.webkit.org/show_bug.cgi?id=182219
3004
3005         Reviewed by Brian Burg.
3006
3007         * UserInterface/Base/Utilities.js:
3008         (Object.shallowMerge): Deleted.
3009         * UserInterface/Base/DOMUtilities.js:
3010         (WI.linkifyNodeReference):
3011         * UserInterface/Base/Main.js:
3012         (WI.handlePossibleLinkClick):
3013         (WI.openURL):
3014         (WI.showSourceCodeLocation):
3015         (WI.showOriginalUnformattedSourceCodeLocation):
3016         (WI.showOriginalOrFormattedSourceCodeLocation):
3017         (WI.showOriginalOrFormattedSourceCodeTextRange):
3018         (WI.linkifyLocation):
3019         * UserInterface/Views/DOMTreeElement.js:
3020         (WI.DOMTreeElement.prototype._insertAdjacentHTML):
3021         * UserInterface/Views/WebSocketContentView.js:
3022         (WI.WebSocketContentView.prototype._addRow):
3023
3024 2018-01-26  Matt Baker  <mattbaker@apple.com>
3025
3026         Web Inspector: Timelines content browser NavigationBar is squashed at narrow heights
3027         https://bugs.webkit.org/show_bug.cgi?id=182196
3028         <rdar://problem/36929899>
3029
3030         Reviewed by Joseph Pecoraro.
3031
3032         * UserInterface/Views/NavigationBar.css:
3033         (.navigation-bar):
3034
3035 2018-01-26  Matt Baker  <mattbaker@apple.com>
3036
3037         Web Inspector: TabBar redesign: improvements to tab layout and resize behavior
3038         https://bugs.webkit.org/show_bug.cgi?id=181468
3039         <rdar://problem/36395439>
3040
3041         Reviewed by Devin Rousso.
3042
3043         * Localizations/en.lproj/localizedStrings.js:
3044
3045         * UserInterface/Images/TabPicker.svg: Added.
3046         New ">>" icon for the tab picker button.
3047
3048         * UserInterface/Views/CanvasTabContentView.js:
3049         (WI.CanvasTabContentView):
3050         * UserInterface/Views/ConsoleTabContentView.js:
3051         (WI.ConsoleTabContentView):
3052         * UserInterface/Views/DebuggerTabContentView.js:
3053         (WI.DebuggerTabContentView):
3054         * UserInterface/Views/ElementsTabContentView.js:
3055         (WI.ElementsTabContentView):
3056
3057         * UserInterface/Views/GeneralTabBarItem.js:
3058         (WI.GeneralTabBarItem):
3059         (WI.GeneralTabBarItem.fromTabContentViewConstructor):
3060         (WI.GeneralTabBarItem.prototype.get title):
3061         Add missing override for getter/setter pair.
3062         (WI.GeneralTabBarItem.prototype.set title):
3063         (WI.GeneralTabBarItem.prototype._handleContextMenuEvent):
3064         Show the close button on ephemeral tabs only (Search, New Tab).
3065         Replace unused `representedObject` parameter with `isEphemeral`, which
3066         determines whether to show a close button for the tab.
3067
3068         * UserInterface/Views/LayersTabContentView.js:
3069         (WI.LayersTabContentView):
3070
3071         * UserInterface/Views/NavigationBar.js:
3072         Remove unused symbol.
3073
3074         * UserInterface/Views/NetworkTabContentView.js:
3075         (WI.NetworkTabContentView):
3076         * UserInterface/Views/NewTabContentView.js:
3077         (WI.NewTabContentView):
3078
3079         * UserInterface/Views/PinnedTabBarItem.js:
3080         (WI.PinnedTabBarItem):
3081         Remove unused parameter.
3082
3083         * UserInterface/Views/ResourcesTabContentView.js:
3084         (WI.ResourcesTabContentView):
3085         * UserInterface/Views/SearchTabContentView.js:
3086         (WI.SearchTabContentView):
3087         * UserInterface/Views/StorageTabContentView.js:
3088         (WI.StorageTabContentView):
3089
3090         * UserInterface/Views/TabBar.css:
3091         (.tab-bar > .item):
3092         (.tab-bar.calculate-width > .item):
3093         (.tab-bar > .item.pinned.tab-picker):
3094         (.tab-bar > .item > .close):
3095         (.tab-bar > .item > .title):
3096         (.tab-bar:not(.collapsed) > .item > .title):
3097         (.tab-bar.collapsed > .item:not(.pinned) > .icon):
3098         (.tab-bar > .item:hover > .close):
3099         (.tab-bar.collapsed > .item:hover > .close):
3100         (.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon):
3101         (.tab-bar.collapsed > .item.ephemeral:hover > .title):
3102         (body[dir=ltr] .tab-bar > .item > .close): Deleted.
3103         (body[dir=rtl] .tab-bar > .item > .close): Deleted.
3104         (.tab-bar > .item > .flex-space): Deleted.
3105         (.tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
3106         (body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
3107         (body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
3108         (body[dir=ltr] .tab-bar > .item > .title): Deleted.
3109         (body[dir=rtl] .tab-bar > .item > .title): Deleted.
3110         (.tab-bar.collapsed > .item): Deleted.
3111         (.tab-bar.collapsed > .item > .flex-space): Deleted.
3112         (.tab-bar.collapsed > .item > .close): Deleted.
3113         (body[dir=ltr] .tab-bar.collapsed > .item > .close): Deleted.
3114         (body[dir=rtl] .tab-bar.collapsed > .item > .close): Deleted.
3115         (.tab-bar.hide-titles > .item > .title): Deleted.
3116         (.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon,): Deleted.
3117         (.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close,): Deleted.
3118         Clean up tab styles and prevent tabs from shrinking during flex layout.
3119         Added new `calculate-width` class, to disable flex layout when measuring
3120         the minimum width of the TabBar required to fit all tab items.
3121
3122         * UserInterface/Views/TabBar.js:
3123         (WI.TabBar):
3124         (WI.TabBar.prototype.set selectedTabBarItem):
3125         (WI.TabBar.prototype.layout.forceItemHidden):
3126         (WI.TabBar.prototype.layout):
3127         Perform two layout passes, similar to NavigationBar. The first pass disables
3128         flex layout and measures tab items at full size. If the bar isn't wide enough
3129         to show all the tabs, hide their icons and measure again. If there still isn't
3130         room, hide tabs starting from the end of the bar and display the tab picker.
3131
3132         (WI.TabBar.prototype._handleMouseDown):
3133         (WI.TabBar.prototype._handleTabPickerTabContextMenu):
3134
3135         * UserInterface/Views/TabBarItem.js:
3136         (WI.TabBarItem):
3137
3138         * UserInterface/Views/TimelineTabContentView.js:
3139         (WI.TimelineTabContentView):
3140
3141 2018-01-25  Joseph Pecoraro  <pecoraro@apple.com>
3142
3143         Web Inspector: Network Table: Sort indicator is not displayed when sorted column is hidden and re-shown
3144         https://bugs.webkit.org/show_bug.cgi?id=182164
3145         <rdar://problem/36892619>
3146
3147         Reviewed by Brian Burg.
3148
3149         * UserInterface/Views/Table.js:
3150         (WI.Table.prototype.showColumn):
3151         Re-add the sort classes if the column being shown is the active sort column.
3152
3153 2018-01-25  Joseph Pecoraro  <pecoraro@apple.com>
3154
3155         Web Inspector: Network - Cookies view should behave better at narrow widths, all data is hidden
3156         https://bugs.webkit.org/show_bug.cgi?id=182163
3157         <rdar://problem/36893241>
3158
3159         Reviewed by Brian Burg.
3160
3161         * UserInterface/Views/ResourceCookiesContentView.css:
3162         (.resource-cookies .table):
3163         Give these tables a reasonable minimum size so that if the inspector
3164         is narrow, the content view can still be scrolled to see all of
3165         the table data.
3166
3167         * UserInterface/Views/Table.css:
3168         (.table > .header):
3169         Match the data-container and mark overflow as hidden, otherwise
3170         super narrow widths show header content beyond the edge.
3171
3172 2018-01-25  Joseph Pecoraro  <pecoraro@apple.com>
3173
3174         Web Inspector: "Displayed Columns" should not be displayed in context menu if all columns are required columns
3175         https://bugs.webkit.org/show_bug.cgi?id=182162
3176         <rdar://problem/36893758>
3177
3178         Reviewed by Matt Baker.
3179
3180         * UserInterface/Views/Table.js:
3181         (WI.Table.prototype._handleHeaderContextMenu):
3182         Only add the header column when we know there are hideable columns.
3183
3184 2018-01-24  Joseph Pecoraro  <pecoraro@apple.com>
3185
3186         Web Inspector: Simplify update-LegacyInspectorBackendCommands.rb
3187         https://bugs.webkit.org/show_bug.cgi?id=182067
3188
3189         Reviewed by Brian Burg.
3190
3191         * Scripts/update-LegacyInspectorBackendCommands.rb:
3192         Remove stale dependency_json, it has always been empty for a while now.
3193         Switch to framework WebInspectorUI to generate only the backend commands
3194         and not spend time generating a bunch of cpp files.
3195
3196 2018-01-24  Nikita Vasilyev  <nvasilyev@apple.com>
3197
3198         REGRESSION (r226994): Web Inspector: Styles: Suggestions popover floats in top-left corner of Web Inspector after tabbing
3199         https://bugs.webkit.org/show_bug.cgi?id=182027
3200
3201         Reviewed by Matt Baker.
3202
3203         r226994 added a layout of all properties on property removal. Layout caused
3204         a property element to be removed from DOM right before dislaying the suggestion
3205         popover, resulting in the popover being displayed at the top left corner.
3206
3207         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
3208         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
3209         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
3210         Only update property view indices when a property is removed.
3211
3212         * UserInterface/Views/SpreadsheetStyleProperty.js:
3213         (WI.SpreadsheetStyleProperty):
3214         (WI.SpreadsheetStyleProperty.prototype.set index):
3215
3216         * UserInterface/Views/SpreadsheetTextField.js:
3217         (WI.SpreadsheetTextField.prototype._updateCompletions):
3218         Checking this._element.parentNode to see if the element is attached to the DOM tree is unreliable,
3219         since the element may have a non-null parent node that is detached from the DOM tree. To fix that,
3220         we could traverse element's ancestors, but I used a concise isConnected property instead.
3221
3222 2018-01-24  Joseph Pecoraro  <pecoraro@apple.com>
3223
3224         ReferenceError:​ Can't find variable:​ DOMAgent (at ScriptSyntaxTree.js:​178:​22)​
3225         https://bugs.webkit.org/show_bug.cgi?id=182059
3226
3227         Reviewed by Matt Baker.
3228
3229         * UserInterface/Models/ScriptSyntaxTree.js:
3230         (WI.ScriptSyntaxTree.functionReturnDivot):
3231         DOMAgent won't be available in a ServiceWorker or JSContext inspector. So add
3232         a check for DOMAgent, and assume if DOMAgent doesn't exist that we should fall
3233         back to the latest path (non-iOS 9) target.
3234
3235 2018-01-23  Joseph Pecoraro  <pecoraro@apple.com>
3236
3237         Web Inspector: Network's columns shake when scrolling at non-default zoom level
3238         https://bugs.webkit.org/show_bug.cgi?id=181998
3239         <rdar://problem/36449808>
3240
3241         Reviewed by Matt Baker.
3242
3243         * UserInterface/Views/Table.js:
3244         When zoomed the bounding client rect values were fractional, which was
3245         unexpected by this area of code. Floor the values to get a value we expect
3246         to be able to evenly distribute.
3247
3248 2018-01-22  Nikita Vasilyev  <nvasilyev@apple.com>
3249
3250         Web Inspector: Styles Redesign: data corruption when updating values quickly
3251         https://bugs.webkit.org/show_bug.cgi?id=179461
3252         <rdar://problem/35431882>
3253
3254         Reviewed by Joseph Pecoraro.
3255
3256         Data corruption used to happen because CSSStyleDeclaration.prototype.text didn't
3257         update synchronously. Making two or more quick changes resulted in corrupted data.
3258
3259         Imagine we modify a CSS value 3 times:
3260
3261         Front-end:  (1)-(2)---(3)
3262         Back-end:          (1)-----(2)-(3)
3263
3264         The first response from the backend could happen after the 2nd edit. In this patch,
3265         CSSStyleDeclaration is locked when its view is being edited.
3266
3267         To correctly display invalid and overridden properties, the backend is allowed to update
3268         CSSStyleDeclaration and CSSProperty when they're locked if the text from the backend
3269         matches the model's text. This should happen when the backend is caught up with the
3270         front-end changes.
3271
3272         * UserInterface/Models/CSSProperty.js:
3273         (WI.CSSProperty.prototype.update):
3274         * UserInterface/Models/CSSStyleDeclaration.js:
3275         (WI.CSSStyleDeclaration):
3276         (WI.CSSStyleDeclaration.prototype.get locked):
3277         (WI.CSSStyleDeclaration.prototype.set locked):
3278         (WI.CSSStyleDeclaration.prototype.set text):
3279
3280         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
3281         (WI.SpreadsheetCSSStyleDeclarationEditor):
3282         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
3283         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
3284         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get editing):
3285         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set focused):
3286         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set inlineSwatchActive):
3287         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchActivated):
3288         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchDeactivated):
3289         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
3290         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
3291         Lock CSSStyleDeclaration when a CSS property name or value is focused or
3292         an inline widget is active.
3293
3294         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
3295         (WI.SpreadsheetCSSStyleDeclarationSection):
3296         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
3297         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
3298         * UserInterface/Views/SpreadsheetStyleProperty.js:
3299         (WI.SpreadsheetStyleProperty):
3300         (WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
3301         When selector is focused, clicking on the white-space should not add a new blank property.
3302
3303 2018-01-19  Ross Kirsling  <ross.kirsling@sony.com>
3304
3305         Web Inspector: Layers tab should do away with popovers (if possible)
3306         https://bugs.webkit.org/show_bug.cgi?id=181805
3307
3308         Reviewed by Matt Baker.
3309
3310         * Localizations/en.lproj/localizedStrings.js:
3311         Remove superfluous colon from a string.
3312
3313         * UserInterface/Main.html:
3314         * UserInterface/Views/LayerDetailsSidebarPanel.css:
3315         * UserInterface/Views/Layers3DContentView.css: Added.
3316         Remove popover styling from sidebar, add new file with similar styling for canvas overlay.
3317
3318         * UserInterface/Views/LayerDetailsSidebarPanel.js:
3319         (WI.LayerDetailsSidebarPanel):
3320         (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
3321         (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
3322         (WI.LayerDetailsSidebarPanel.prototype._updateLayers):
3323         (WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
3324         (WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Deleted.
3325         (WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Deleted.
3326         (WI.LayerDetailsSidebarPanel.prototype._presentPopover): Deleted.
3327         (WI.LayerDetailsSidebarPanel.prototype._contentForPopover): Deleted.
3328         (WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons.addReason): Deleted.
3329         (WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons): Deleted.
3330         * UserInterface/Views/Layers3DContentView.js:
3331         (WI.Layers3DContentView):
3332         (WI.Layers3DContentView.prototype.shown):
3333         (WI.Layers3DContentView.prototype.selectLayerById):
3334         (WI.Layers3DContentView.prototype._canvasMouseDown):
3335         (WI.Layers3DContentView.prototype._buildLayerInfoElement):
3336         (WI.Layers3DContentView.prototype._updateLayerInfoElement):
3337         (WI.Layers3DContentView.prototype._updateReasonsList):
3338         Remove popover from sidebar table, overlay div with same data arrangement on top of the canvas.
3339         Also reverse the fix from r226671 since the visualization is no longer unusable without the sidebar!
3340
3341 2018-01-19  Matt Baker  <mattbaker@apple.com>
3342
3343         Web Inspector: Canvas Tab: Multiple "waiting for frames" messages displayed
3344         https://bugs.webkit.org/show_bug.cgi?id=181865
3345         <rdar://problem/36664737>
3346
3347         Reviewed by Devin Rousso.