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