Keyframe animation doesn't 't show up in the Animations timeline
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2020-06-23  Devin Rousso  <drousso@apple.com>
2
3         Keyframe animation doesn't 't show up in the Animations timeline
4         https://bugs.webkit.org/show_bug.cgi?id=213441
5
6         Reviewed by Brian Burg.
7
8         * UserInterface/Models/Animation.js:
9         (WI.Animation):
10         (WI.Animation.prototype._updateEffect):
11         An `interationCount` of `Infinity` is not JSON serializable, so represent it as `-1` instead.
12
13         * UserInterface/Models/MediaTimelineRecord.js:
14         (WI.MediaTimelineRecord):
15         * UserInterface/Views/MediaTimelineDataGridNode.js:
16         (WI.MediaTimelineDataGridNode.prototype.createCellContent):
17         (WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn):
18         The DOM node may not be able to be instrumented if the timeline recording starts before the
19         frontend has had a chance to request the main document, so it's possible for the DOM node
20         to not be set.
21
22 2020-06-22  Devin Rousso  <drousso@apple.com>
23
24         Web Inspector: adjust height of undocked title area to match macOS Big Sur
25         https://bugs.webkit.org/show_bug.cgi?id=213490
26
27         Reviewed by Timothy Hatcher.
28
29         * UserInterface/Views/Variables.css:
30         (body.mac-platform:not(.big-sur):not(.docked)): Added.
31         (body.mac-platform.big-sur:not(.docked)): Added.
32         (body.mac-platform:not(.docked)): Deleted.
33
34         * UserInterface/Base/Platform.js:
35         Add logic for detecting macOS Big Sur (and Catalina).
36
37 2020-06-22  Devin Rousso  <drousso@apple.com>
38
39         Web Inspector: Elements: Node: use a `WI.ContextMenu` instead of a `<select>` for listener filtering
40         https://bugs.webkit.org/show_bug.cgi?id=213492
41
42         Reviewed by Timothy Hatcher.
43
44         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
45         (WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
46         (WI.DOMNodeDetailsSidebarPanel.prototype._populateEventListenersFilterContextMenu): Added.
47         * UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
48         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter > select): Deleted.
49
50         * Localizations/en.lproj/localizedStrings.js:
51
52 2020-06-22  Tim Horton  <timothy_horton@apple.com>
53
54         Update macOS version macros
55         https://bugs.webkit.org/show_bug.cgi?id=213484
56
57         Reviewed by Alexey Proskuryakov.
58
59         * Configurations/DebugRelease.xcconfig:
60         * Configurations/WebKitTargetConditionals.xcconfig:
61
62 2020-06-18  Devin Rousso  <drousso@apple.com>
63
64         Web Inspector: Console: add comments for localized strings in execution context picker
65         https://bugs.webkit.org/show_bug.cgi?id=213280
66
67         Reviewed by Joseph Pecoraro.
68
69         * UserInterface/Views/QuickConsole.js:
70         (WI.QuickConsole.prototype._populateActiveExecutionContextNavigationItemContextMenu):
71
72         * Localizations/en.lproj/localizedStrings.js:
73
74 2020-06-16  Devin Rousso  <drousso@apple.com>
75
76         Web Inspector: Sources: objects in Scope Chain panel flicker when resizing details sidebar
77         https://bugs.webkit.org/show_bug.cgi?id=213234
78         <rdar://problem/64391213>
79
80         Reviewed by David Kilzer.
81
82         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
83         (WI.ScopeChainDetailsSidebarPanel.prototype.layout):
84         Don't regenerate the DOM in `layout` unless the reason is `WI.View.LayoutReason.Dirty`, such
85         as if the current call frame changes or a watch expression is added/updated/removed.
86
87 2020-06-15  Pavel Feldman <pavel.feldman@gmail.com>
88
89         Web Inspector: introduce request interception
90         https://bugs.webkit.org/show_bug.cgi?id=207446
91
92         Reviewed by Devin Rousso.
93
94         This change introduces network request interception to the Network 
95         protocol domain. It adds Network.interceptWithRequest notification that
96         can be continued, modified or fulfilled. NetworkStage enum can now have
97         'request' and 'response' values.
98
99         * UserInterface/Controllers/NetworkManager.js:
100         (WI.NetworkManager.prototype.initializeTarget):
101         (WI.NetworkManager.prototype.addLocalResourceOverride):
102         (WI.NetworkManager.prototype.removeLocalResourceOverride):
103         (WI.NetworkManager.prototype.requestIntercepted):
104         (WI.NetworkManager.prototype.responseIntercepted):
105         (WI.NetworkManager.prototype._handleResourceOverrideDisabledChanged):
106         * UserInterface/Protocol/NetworkObserver.js:
107         (WI.NetworkObserver.prototype.requestIntercepted):
108
109 2020-06-12  Devin Rousso  <drousso@apple.com>
110
111         Web Inspector: modify initial content localized string for Inspector Bootstrap Script
112         https://bugs.webkit.org/show_bug.cgi?id=213134
113
114         Reviewed by Timothy Hatcher.
115
116         * UserInterface/Controllers/NetworkManager.js:
117         (WI.NetworkManager.prototype.async createBootstrapScript):
118
119         * Localizations/en.lproj/localizedStrings.js:
120
121 2020-06-10  Devin Rousso  <drousso@apple.com>
122
123         Web Inspector: text inputs should not spellcheck
124         https://bugs.webkit.org/show_bug.cgi?id=213032
125         <rdar://problem/64195429>
126
127         Reviewed by Brian Burg.
128
129         * UserInterface/Base/Main.js:
130         (WI._handleDeviceSettingsTabBarButtonClicked.showUserAgentInput):
131         * UserInterface/Views/BoxShadowEditor.js:
132         (WI.BoxShadowEditor):
133         * UserInterface/Views/CookiePopover.js:
134         (WI.CookiePopover.prototype.show.createInputRow):
135         * UserInterface/Views/EditableDataGridNode.js:
136         (WI.EditableDataGridNode.prototype.createCellContent):
137         * UserInterface/Views/InputPopover.js:
138         (WI.InputPopover.prototype.show):
139         * UserInterface/Views/ProbeSetDetailsSection.js:
140         (WI.ProbeSetDetailsSection.prototype._addProbeButtonClicked):
141         * UserInterface/Views/SettingsTabContentView.js:
142         (WI.SettingsTabContentView.prototype._createConsoleSettingsView):
143
144 2020-06-10  Devin Rousso  <drousso@apple.com>
145
146         Web Inspector: XHR request with same URL as main resource will hide the main resource request
147         https://bugs.webkit.org/show_bug.cgi?id=212850
148         <rdar://problem/33072149>
149
150         Reviewed by Brian Burg.
151
152         * UserInterface/Controllers/NetworkManager.js:
153         (WI.NetworkManager.prototype._addNewResourceToFrameOrTarget):
154         When creating a new resource, don't re-use the frame's main resource if the URL matches.
155
156 2020-06-09  Devin Rousso  <drousso@apple.com>
157
158         Web Inspector: allow multiple resources for a given URL
159         https://bugs.webkit.org/show_bug.cgi?id=212852
160
161         Reviewed by Brian Burg.
162
163         Previously, when a new resource is added with a URL that matches an existing resource, any
164         `resourceForURL` call with that URL will return the new resource instead of the old one. Now
165         that there is a `Multimap` of URL to resource, it is possible to pick which resource is used
166         instead of always using the newest one.
167
168         * UserInterface/Models/ResourceCollection.js:
169         (WI.ResourceCollection):
170         (WI.ResourceCollection.prototype.resourcesForURL): Added.
171         (WI.ResourceCollection.prototype._associateWithResource):
172         (WI.ResourceCollection.prototype._disassociateWithResource):
173         (WI.ResourceCollection.prototype._resourceURLDidChange):
174         (WI.ResourceCollection.prototype.resourceForURL): Deleted.
175         * UserInterface/Models/Frame.js:
176         (WI.Frame.prototype.resourcesForURL): Added.
177         (WI.Frame.prototype.resourceForURL): Deleted.
178         * UserInterface/Controllers/NetworkManager.js:
179         (WI.NetworkManager.prototype.resourcesForURL): Added.
180         (WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):
181         (WI.NetworkManager.prototype._initiatorSourceCodeLocationFromPayload):
182         (WI.NetworkManager.prototype.resourceForURL): Deleted.
183
184         * UserInterface/Models/Script.js:
185         (WI.Script.prototype._resolveResource):
186         (WI.Script.prototype._resolveResource.isScriptResource): Added.
187         * UserInterface/Controllers/CSSManager.js:
188         (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent):
189         * UserInterface/Base/Utilities.js:
190         (Set.prototype.find): Added.
191         Add utility for finding an item in a `Set` to avoid having to `Array.from`.
192
193         * UserInterface/Base/Main.js:
194         (WI.openURL):
195         (WI.sourceCodeForURL):
196         * UserInterface/Controllers/TimelineManager.js:
197         (WI.TimelineManager.prototype._processRecord):
198         * UserInterface/Models/CallFrame.js:
199         (WI.CallFrame.fromPayload):
200         * UserInterface/Models/ConsoleMessage.js:
201         (WI.ConsoleMessage.prototype.get sourceCodeLocation):
202         * UserInterface/Models/DOMNodeStyles.js:
203         (WI.DOMNodeStyles.prototype.createSourceCodeLocation):
204         * UserInterface/Models/ScriptTimelineRecord.js:
205         (WI.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
206         * UserInterface/Views/ContextMenuUtilities.js:
207         (WI.appendContextMenuItemsForURL):
208         * UserInterface/Views/DOMDetailsSidebarPanel.js:
209         (WI.DOMDetailsSidebarPanel.prototype._mouseWasClicked):
210         * UserInterface/Views/SearchSidebarPanel.js:
211         (WI.SearchSidebarPanel.prototype.performSearch):
212         Use the `firstValue` instead of the implicit `lastValue` to match existing nearby usage of
213         `WI.DebuggerManager.prototype.scriptsForURL`, which explicitly chooses the first script.
214
215 2020-06-04  Tim Horton  <timothy_horton@apple.com>
216
217         Work around broken system version macro
218         https://bugs.webkit.org/show_bug.cgi?id=212726
219
220         Reviewed by Dan Bernstein.
221
222         * Configurations/DebugRelease.xcconfig:
223
224 2020-06-01  Devin Rousso  <drousso@apple.com>
225
226         Web Inspector: Graphics: should use the `id` (name) of the animation if it exists
227         https://bugs.webkit.org/show_bug.cgi?id=212618
228
229         Reviewed by Timothy Hatcher.
230
231         * UserInterface/Protocol/AnimationObserver.js:
232         (WI.AnimationObserver.prototype.nameChanged): Added.
233         * UserInterface/Controllers/AnimationManager.js:
234         (WI.AnimationManager.prototype.nameChanged): Added.
235
236         * UserInterface/Models/Animation.js:
237         (WI.Animation):
238         (WI.Animation.fromPayload):
239         (WI.Animation.prototype.get name): Added.
240         (WI.Animation.prototype.get cssAnimationName): Added.
241         (WI.Animation.prototype.get cssTransitionProperty): Added.
242         (WI.Animation.prototype.get displayName):
243         (WI.Animation.prototype.nameChanged): Added.
244
245         * UserInterface/Views/AnimationContentView.js:
246         (WI.AnimationContentView.prototype.initialLayout):
247         (WI.AnimationContentView.prototype.layout):
248         (WI.AnimationContentView.prototype.attached):
249         (WI.AnimationContentView.prototype.detached):
250         (WI.AnimationContentView.prototype._refreshTitle): Added.
251         (WI.AnimationContentView.prototype._handleNameChanged): Added.
252         * UserInterface/Views/AnimationContentView.css:
253         (.content-view.animation):
254         (.content-view.animation > header > .titles):
255         (.content-view.animation > header > .titles > .title > code): Added.
256         Show the `animation-name`/`transition-property`/count in parenthesis after the `id` (only if
257         it has been specified).
258         Drive-by: ensure that the `<header>` doesn't overflow.
259
260         * UserInterface/Views/AnimationDetailsSidebarPanel.js:
261         (WI.AnimationDetailsSidebarPanel.prototype.set animation):
262         (WI.AnimationDetailsSidebarPanel.prototype.initialLayout):
263         (WI.AnimationDetailsSidebarPanel.prototype._refreshIdentitySection):
264         (WI.AnimationDetailsSidebarPanel.prototype._handleAnimationNameChanged): Added.
265         Only show the "Identifier" row if an `id` is actually set. If there is a CSS
266         `animation-name`/`transition-property`, show it in a separate row.
267
268         * Localizations/en.lproj/localizedStrings.js:
269
270 2020-06-01  Nikita Vasilyev  <nvasilyev@apple.com>
271
272         Web Inspector: Timelines: Edit button has wrong outline
273         https://bugs.webkit.org/show_bug.cgi?id=211105
274         <rdar://problem/62475815>
275
276         Reviewed by Devin Rousso.
277
278         * UserInterface/Views/ButtonNavigationItem.css:
279         (.navigation-bar .item.button.text-only:focus):
280         Add `.text-only` to the selector to make specificity higher than of the button selector.
281
282         * UserInterface/Views/RadioButtonNavigationItem.css:
283         (.navigation-bar .item.radio.button.text-only:focus):
284         Add `.text-only` to the selector to make specificity higher than of the button selector.
285
286         (.navigation-bar .item.radio.button:not(.text-only)): Deleted.
287         (.navigation-bar.collapsed .item.radio.button:not(.text-only)): Deleted.
288         Remove dead code. We only have text-only buttons now.
289
290         * UserInterface/Views/RadioButtonNavigationItem.js:
291         (WI.RadioButtonNavigationItem):
292         (WI.RadioButtonNavigationItem.prototype.get buttonStyle):
293         (WI.RadioButtonNavigationItem.prototype.set buttonStyle):
294
295 2020-05-29  Devin Rousso  <drousso@apple.com>
296
297         Web Inspector: Graphics: text editors in Keyframes section don't populate when sidebar is first shown
298         https://bugs.webkit.org/show_bug.cgi?id=212509
299
300         Reviewed by Timothy Hatcher.
301
302         * UserInterface/Views/AnimationDetailsSidebarPanel.js:
303         (WI.AnimationDetailsSidebarPanel.prototype.shown): Added.
304         Refresh all `CodeMirror` whenever this panel is shown.
305
306         * UserInterface/Views/Sidebar.js:
307         (WI.Sidebar.prototype.removeSidebarPanel):
308         (WI.Sidebar.prototype.selectedSidebarPanel):
309         (WI.Sidebar.prototype.set collapsed):
310         * UserInterface/Views/SidebarPanel.js:
311         (WI.SidebarPanel.prototype.visibilityDidChange): Deleted.
312         Drive-by: remove unused function.
313
314 2020-05-29  Devin Rousso  <drousso@apple.com>
315
316         Web Inspector: add ITML debuggable/target type
317         https://bugs.webkit.org/show_bug.cgi?id=203300
318         <rdar://problem/56545896>
319
320         Reviewed by Joseph Pecoraro and Brian Burg.
321
322         * UserInterface/Base/DebuggableType.js:
323         (WI.DebuggableType.fromString):
324         (WI.DebuggableType.supportedTargetTypes): Added.
325         * UserInterface/Base/TargetType.js:
326         * UserInterface/Protocol/InspectorBackend.js:
327         (InspectorBackendClass.prototype.activateDomain):
328         * UserInterface/Controllers/TargetManager.js:
329         (WI.TargetManager.prototype.createDirectBackendTarget):
330         (WI.TargetManager.prototype._initializePageTarget):
331
332         * UserInterface/Protocol/RemoteObject.js:
333         (WI.RemoteObject.prototype.pushNodeToFrontend):
334         * UserInterface/Controllers/CSSManager.js:
335         (WI.CSSManager.supportsInspectorStyleSheet): Added.
336         * UserInterface/Controllers/DOMManager.js:
337         (WI.DOMManager.prototype.setInspectedNode):
338         * UserInterface/Controllers/LayerTreeManager.js:
339         (WI.LayerTreeManager.supportsVisibleCompositingBorders):
340         * UserInterface/Controllers/NetworkManager.js:
341         (WI.NetworkManager.prototype._loadAndParseSourceMap):
342         * UserInterface/Controllers/TimelineManager.js:
343         (WI.NetworkManager.defaultTimelineTypes):
344         (WI.NetworkManager.availableTimelineTypes):
345         (WI.NetworkManager.prototype.set autoCaptureOnPageLoad):
346         (WI.NetworkManager.prototype.scriptProfilerTrackingCompleted):
347         * UserInterface/Models/CSSCompletions.js:
348         (WI.CSSCompletions.initializeCSSCompletions):
349         * UserInterface/Models/CSSStyleDeclaration.js:
350         (WI.CSSStyleDeclaration.prototype.get selectorEditable):
351         * UserInterface/Models/CSSStyleSheet.js:
352         (WI.CSSStyleSheet.prototype.handleCurrentRevisionContentChange):
353         * UserInterface/Models/DOMNode.js:
354         (WI.DOMNode.prototype._makeUndoableCallback):
355         * UserInterface/Models/SourceMapResource.js:
356         (WI.SourceMapResource.prototype.requestContentFromBackend):
357         * UserInterface/Base/Main.js:
358         (WI._updateDownloadToolbarButton):
359         (WI.undo):
360         (WI.redo):
361         (WI.canArchiveMainFrame):
362         * UserInterface/Views/ComputedStyleDetailsPanel.js:
363         (WI.ComputedStyleDetailsPanel.prototype.refresh):
364         * UserInterface/Views/ContextMenuUtilities.js:
365         (WI.appendContextMenuItemsForDOMNode):
366         * UserInterface/Views/CookieStorageContentView.js:
367         (WI.CookieStorageContentView):
368         (WI.CookieStorageContentView.prototype.get navigationItems):
369         (WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
370         (WI.CookieStorageContentView.prototype._reloadCookies):
371         (WI.CookieStorageContentView.prototype._handleTableKeyDown):
372         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
373         (WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
374         * UserInterface/Views/DOMTreeContentView.js:
375         (WI.DOMTreeContentView):
376         (WI.DOMTreeContentView.prototype._restoreSelectedNodeAfterUpdate):
377         (WI.DOMTreeContentView.prototype._showPrintStylesChanged):
378         * UserInterface/Views/DOMTreeElement.js:
379         (WI.DOMTreeElement.prototype.populateDOMNodeContextMenu):
380         (WI.DOMTreeElement.prototype._startEditingTagName):
381         * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
382         (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
383         * UserInterface/Views/SearchSidebarPanel.js:
384         (WI.SearchSidebarPanel.prototype.performSearch):
385         * UserInterface/Views/SourceCodeTextEditor.js:
386         (WI.SourceCodeTextEditor.prototype.customPerformSearch):
387         * UserInterface/Views/SourcesNavigationSidebarPanel.js:
388         (WI.SourcesNavigationSidebarPanel):
389         (WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu):
390         * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
391         (WI.SpreadsheetCSSStyleDeclarationSection.prototype._populateIconElementContextMenu):
392         * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
393         (WI.SpreadsheetRulesStyleDetailsPanel.prototype.get supportsNewRule):
394         * UserInterface/Views/SpreadsheetStyleProperty.js:
395         (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
396         * UserInterface/Views/TimelineTabContentView.js:
397         (WI.TimelineTabContentView):
398
399         * UserInterface/Controllers/AppControllerBase.js:
400         (WI.AppControllerBase.prototype.get hasExtraDomains): Deleted.
401         * UserInterface/Controllers/AppController.js:
402         (WI.AppController):
403         (WI.AppController.prototype.activateExtraDomains):
404         (WI.AppController.prototype.get hasExtraDomains): Deleted.
405         * UserInterface/Test/TestAppController.js:
406         (WI.TestAppController.prototype.get hasExtraDomains): Deleted.
407
408         * UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
409         * UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
410         * UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
411         * UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
412         * UserInterface/Protocol/Legacy/13.0/InspectorBackendCommands.js:
413         * UserInterface/Protocol/Legacy/13.4/InspectorBackendCommands.js:
414         * Versions/Inspector-iOS-11.0.json:
415         * Versions/Inspector-iOS-11.3.json:
416         * Versions/Inspector-iOS-12.0.json:
417         * Versions/Inspector-iOS-12.2.json:
418         * Versions/Inspector-iOS-13.0.json:
419         * Versions/Inspector-iOS-13.4.json:
420         Update protocol files for older versions of iOS.
421
422         * Localizations/en.lproj/localizedStrings.js:
423
424 2020-05-28  Devin Rousso  <drousso@apple.com>
425
426         Web Inspector: Network: statistics don't update when filtering
427         https://bugs.webkit.org/show_bug.cgi?id=212394
428
429         Reviewed by Timothy Hatcher.
430
431         * UserInterface/Views/NetworkTableContentView.js:
432         (WI.NetworkTableContentView.prototype._updateFilteredEntries):
433         (WI.NetworkTableContentView.prototype._updateStatistics):
434         (WI.NetworkTableContentView.prototype._updateLoadTimeStatistic):
435         If the URL/type filter is active, hide the load time statistic, similar to how it's hidden
436         when viewing imported HARs. Additionally, update the other statistics to show info based on
437         the entries that are still shown.
438
439 2020-05-27  Yoshiaki JITSUKAWA  <yoshiaki.jitsukawa@sony.com>
440
441         [WebInspectorUI] Inconsistent check for WI.ImageUtilities.supportsCanvasPathDebugging
442         https://bugs.webkit.org/show_bug.cgi?id=212450
443
444         Reviewed by Devin Rousso.
445
446         In RecordContentView.js _updateCanvasPath() should not be called if CanvasPathDebugging
447         is not supported otherwise _updateCanvasPath() tries to access _showPathButtonNavigationItem,
448         which is created only if CanvasPathDebugging is supported, but fails and raises an exception.
449         
450         * UserInterface/Views/RecordingContentView.js:
451         Check if WI.ImageUtilities.supportsCanvasPathDebugging() before
452         calling _updateCanvasPath()
453
454 2020-05-27  Devin Rousso  <drousso@apple.com>
455
456         Web Inspector: replace `featureGuard` and `availability` with a combined `condition` that accepts any macro
457         https://bugs.webkit.org/show_bug.cgi?id=210014
458
459         Reviewed by Brian Burg.
460
461         Previously, the generated InspectorBackendCommands.js would include code for things that the
462         backend doesn't actually support. By using actual macros and preprocessing that file, we can
463         ensure that the frontend doesn't incorrectly think that something is supported by the page
464         being inspected:
465          - the `Canvas` commands and events related to shader programs/pipelines should only exist
466            when the corresponding context type exists, namely `ENABLE(WEBGL)` and `ENABLE(WEBGPU)`.
467          - iOS doesn't support showing rulers, so create a variant of `DOM.setInspectModeEnabled`
468            that only exists for `PLATFORM(IOS_FAMILY)` that doesn't have the `showRulers` optional
469            parameter, as well as removing `Page.setShowRulers` entirely.
470          - setting the forced appearance should only be possible if dark mode is supported.
471          - web archives only exist if CF is used.
472
473         * CMakeLists.txt:
474         Add a dependency on the new `InspectorBackendCommands` target.
475
476         * UserInterface/Base/Main.js:
477         (WI._updateDownloadTabBarButton):
478
479 2020-05-26  Devin Rousso  <drousso@apple.com>
480
481         Web Inspector: ⌘G should not override the current query of the find banner if it's visible
482         https://bugs.webkit.org/show_bug.cgi?id=212395
483
484         Reviewed by Simon Fraser.
485
486         * UserInterface/Views/ContentBrowser.js:
487         (WI.ContentBrowser.prototype.async handleFindNextShortcut):
488         (WI.ContentBrowser.prototype.async handleFindPreviousShortcut):
489         * UserInterface/Views/LogContentView.js:
490         (WI.LogContentView.prototype.highlightPreviousSearchMatch):
491         (WI.LogContentView.prototype.highlightNextSearchMatch):
492
493 2020-05-26  Devin Rousso  <drousso@apple.com>
494
495         Web Inspector: Network: Timing: gaps around the "An error occurred trying to load this resource" message
496         https://bugs.webkit.org/show_bug.cgi?id=212384
497
498         Reviewed by Timothy Hatcher.
499
500         * UserInterface/Views/NetworkTableContentView.css:
501         (.content-view.network-table > .message-text-view): Added.
502         (.content-view.network-table > .message-text-view > .message): Added.
503         (.content-view.network .message-text-view): Deleted.
504         (.content-view.network .message-text-view > .message): Deleted.
505         Be more specific with the selector so it doesn't apply as broadly.
506
507 2020-05-22  Devin Rousso  <drousso@apple.com>
508
509         Web Inspector: Storage: don't request the list of IndexedDB database names multiple times for the same security origin
510         https://bugs.webkit.org/show_bug.cgi?id=212253
511         <rdar://problem/62945903>
512
513         Reviewed by Joseph Pecoraro.
514
515         This can happen if additional frames are added that share the same security origin as the
516         main frame. Simply maintain a `Set` of security origins that've already been requested for
517         and ignore any repeat requests.
518
519         * UserInterface/Controllers/IndexedDBManager.js:
520         (WI.IndexedDBManager):
521         (WI.IndexedDBManager.prototype._reset):
522
523 2020-05-20  Nikita Vasilyev  <nvasilyev@apple.com>
524
525         Web Inspector: Left/Right arrow keys should collapse/expand details sections
526         https://bugs.webkit.org/show_bug.cgi?id=212064
527         <rdar://problem/63384091>
528
529         Reviewed by Devin Rousso.
530
531         * UserInterface/Views/DetailsSection.js:
532         (WI.DetailsSection):
533         (WI.DetailsSection.prototype._headerElementClicked):
534         (WI.DetailsSection.prototype._handleHeaderElementKeyDown):
535         Use keydown event instead of keypress because the latter doesn't fire for arrow keys.
536         Drive-by: remove unused `expandedByUser`.
537
538         * UserInterface/Views/ExpandableView.js:
539         (WI.ExpandableView):
540         (WI.ExpandableView.prototype._handleDisclosureButtonKeyDown):
541         Computed panel items should also collapse/expand by pressing Left/Right keys.
542
543 2020-05-20  Nikita Vasilyev  <nvasilyev@apple.com>
544
545         REGRESSION(r260978): Web Inspector: Styles: Pressing Space no longer toggles selected properties
546         https://bugs.webkit.org/show_bug.cgi?id=212121
547
548         Reviewed by Devin Rousso.
549
550         r260978 removed `tabIndex = -1` from the style property element so it wouldn't have a focus outline
551         when in the Computed panel. However, this also made style properties non-focusable in the Styles panel.
552
553         This patch sets `tabIndex = -1` on style property elements when they can be selected (e.g. in the Styles panel).
554         It doesn't set any tabIndex for style property elements in Computed or Changes panels.
555
556         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
557         (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
558         * UserInterface/Views/SpreadsheetStyleProperty.js:
559
560 2020-05-15  Devin Rousso  <drousso@apple.com>
561
562         Web Inspector: Fails to pretty-print a particular CSS file
563         https://bugs.webkit.org/show_bug.cgi?id=211930
564
565         Reviewed by Joseph Pecoraro.
566
567         * UserInterface/Workers/Formatter/CSSFormatter.js:
568         (CSSFormatter.prototype._format):
569         Keep a stack of special sequences (e.g. `"`, `'`, `/*`, etc.), only outputting the text in
570         between the start and end of the sequence when the stack is empty. Ignore all other special
571         sequences when in a comma sequence. Add proper checks for if the star/end is escaped.
572         Drive-by: minor refactor so that the arrow functions are created outside the loop.
573
574 2020-05-13  Devin Rousso  <drousso@apple.com>
575
576         Web Inspector: rename CSS.StyleSheetOrigin.Regular to CSS.StyleSheetOrigin.Author to match the spec
577         https://bugs.webkit.org/show_bug.cgi?id=211827
578
579         Reviewed by Timothy Hatcher.
580
581         * UserInterface/Controllers/CSSManager.js:
582         (WI.CSSManager.protocolStyleSheetOriginToEnum):
583
584 2020-05-11  Devin Rousso  <drousso@apple.com>
585
586         Web Inspector: Network: Timing: gaps around the "Resource does not have timing data" message
587         https://bugs.webkit.org/show_bug.cgi?id=211648
588
589         Reviewed by Timothy Hatcher.
590
591         * UserInterface/Main.html:
592         * UserInterface/Views/ResourceTimingContentView.css: Added.
593         (.resource-details.resource-timing > .message-text-view):
594
595 2020-05-11  Devin Rousso  <drousso@apple.com>
596
597         Web Inspector: Network: Preview: default detached window size not wide enough for navigation items to be visible
598         https://bugs.webkit.org/show_bug.cgi?id=211649
599
600         Reviewed by Timothy Hatcher.
601
602         * UserInterface/Views/NetworkDetailView.js:
603         (WI.NetworkDetailView.prototype.initialLayout):
604         Don't center the panel switcher radio buttons as when they are centered, there's not always
605         enough room for `WI.NavigationItem`s for the currently showing `WI.ContentView`. Aligning
606         the panel switcher radio buttons to the start allows for as much room as possible.
607
608 2020-05-07  Nikita Vasilyev  <nvasilyev@apple.com>
609
610         Web Inspector: Timelines: visible outline after clicking the close X button
611         https://bugs.webkit.org/show_bug.cgi?id=211604
612         <rdar://problem/62998871>
613
614         Reviewed by Timothy Hatcher.
615
616         Never display focus outline for TreeOutline items.
617
618         * UserInterface/Views/TreeOutline.css:
619         (.tree-outline .item):
620         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected):
621
622 2020-05-07  Devin Rousso  <drousso@apple.com>
623
624         Web Inspector: Uncaught Exception: TypeError: null is not an object (evaluating 'mimeType.endsWith')
625         https://bugs.webkit.org/show_bug.cgi?id=211593
626
627         Reviewed by Joseph Pecoraro.
628
629         * UserInterface/Views/ResourceClusterContentView.js:
630         (WI.ResourceClusterContentView.prototype._normalizeMIMETypeForDOM):
631
632 2020-05-07  Devin Rousso  <drousso@apple.com>
633
634         Web Inspector: Sources: Breakpoints status not remembered/restored correctly
635         https://bugs.webkit.org/show_bug.cgi?id=211558
636
637         Reviewed by Joseph Pecoraro.
638
639         * UserInterface/Controllers/DOMDebuggerManager.js:
640         (WI.DOMDebuggerManager.prototype.initializeTarget):
641
642 2020-05-07  Devin Rousso  <drousso@apple.com>
643
644         Web Inspector: Storage: double clicking on a cookie field doesn't start editing it
645         https://bugs.webkit.org/show_bug.cgi?id=211598
646
647         Reviewed by Timothy Hatcher.
648
649         * UserInterface/Views/CookieStorageContentView.js:
650         (WI.CookieStorageContentView):
651         (WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
652         (WI.CookieStorageContentView.prototype.tablePopulateCell):
653         (WI.CookieStorageContentView.prototype._showCookiePopover):
654         (WI.CookieStorageContentView.prototype._handleSetCookieButtonClick):
655         Add a `"dblclick"` event listener to each cell that shows a `WI.CookiePopover` for that cell
656         and automatically select the current value of that field in the `WI.Cookie`. Unify the few
657         different ways to show a `WI.CookiePopover`.
658
659         * UserInterface/Views/CookiePopover.js:
660         (WI.CookiePopover.prototype.show.createRow):
661         Provide a way to programmatically trigger the focusing of an editor once shown.
662
663         * Localizations/en.lproj/localizedStrings.js:
664
665 2020-05-06  Devin Rousso  <drousso@apple.com>
666
667         Web Inspector: Layers: the text at the bottom of the details sidebar can get squished
668         https://bugs.webkit.org/show_bug.cgi?id=211486
669
670         Reviewed by Brian Burg.
671
672         * UserInterface/Views/Sidebar.js:
673         (WI.Sidebar.prototype.get minimumWidth):
674         Ask both the `this._navigationBar` and `this._selectedSidebarPanel` instead of just one.
675
676         * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
677         (WI.GeneralStyleDetailsSidebarPanel.prototype.get minimumWidth): Added.
678         * UserInterface/Views/ComputedStyleDetailsPanel.js:
679         (WI.ComputedStyleDetailsPanel.prototype.get minimumWidth): Addede.
680         * UserInterface/Views/BoxModelDetailsSectionRow.js:
681         (WI.BoxModelDetailsSectionRow):
682         (WI.BoxModelDetailsSectionRow.prototype.get minimumWidth): Added.
683         (WI.BoxModelDetailsSectionRow.prototype._updateMetrics):
684         * UserInterface/Views/BoxModelDetailsSectionRow.css:
685         (.details-section .row.box-model):
686         Keep track of the outermost box and provide a way to report its width.
687
688         * UserInterface/Views/LayerDetailsSidebarPanel.js:
689         (WI.LayerDetailsSidebarPanel):
690         (WI.LayerDetailsSidebarPanel.prototype.get minimumWidth): Added.
691         (WI.LayerDetailsSidebarPanel.prototype._buildBottomBar):
692         (WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
693         * UserInterface/Views/LayerDetailsSidebarPanel.css:
694         (.panel.details.layer .bottom-bar):
695         (.panel.details.layer .bottom-bar > div):
696         Cache the width of the items in the bottom bar and use it in `get minimumWidth`.
697
698 2020-05-05  Devin Rousso  <drousso@apple.com>
699
700         Web Inspector: REGRESSION(r239175): Source Maps: original source not shown when in nested folder
701         https://bugs.webkit.org/show_bug.cgi?id=198276
702
703         Reviewed by Joseph Pecoraro.
704
705         * UserInterface/Views/TreeOutline.js:
706         (WI.TreeOutline.prototype.removeChildren):
707         r239175 made it so that `WI.TreeOutline.prototype.removeChildren` actually modified the
708         `this.children` member property array (which is not a getter), meaning that if a caller had
709         previously saved a reference to it before calling `removeChildren()`, the saved reference
710         would also be modified, preventing it from being of any real use afterwards. At that time,
711         `WI.TreeOutline` maintained an index value for each `WI.TreeElement`, which meant that it
712         was necessary to remove from `this.children` as otherwise `Array.prototype.indexOf` calls
713         would not be accurate. Since then, `WI.TreeOutline` has moved to using `representedObject`,
714         meaning it's no longer necessary to modify `this.children`.
715
716         * UserInterface/Views/SourceCodeTreeElement.js:
717         (WI.SourceCodeTreeElement.prototype.onpopulate):
718         (WI.SourceCodeTreeElement.prototype.onpopulate.combineFolderChain): Deleted.
719         (WI.SourceCodeTreeElement.prototype.onpopulate.findAndCombineFolderChains): Deleted.
720         Drive-by: don't attempt to combine folder chains when "Group by Path" to match the rest of
721                   the look/feel of the navigation sidebar.
722
723         * UserInterface/Models/SourceMapResource.js:
724         (WI.SourceMapResource.prototype.get sourceMapDisplaySubpath):
725         Drive-by: fix "null" being shown as the root subpath folder when using a local server.
726
727 2020-05-05  Devin Rousso  <drousso@apple.com>
728
729         Web Inspector: the divider before the console message icons in the tab bar is shown even if there are no other icons
730         https://bugs.webkit.org/show_bug.cgi?id=211390
731
732         Reviewed by Brian Burg.
733
734         * UserInterface/Base/Main.js:
735         (WI._updateTabBarDividers):
736         (WI._updateTabBarDividers.isHidden): Added.
737         If the various `WI.ButtonNavigationItem` aren't actually created, then the optional chain
738         will return `undefined` instead of the desired `true` when checking whether it is `hidden`.
739         Effectively, a `WI.ButtonNavigationItem` that does not exist should be considered `hidden`.
740
741 2020-05-05  Devin Rousso  <drousso@apple.com>
742
743         Web Inspector: Timelines: Memory: the stacked area graph should not extend beyond the "stopping time" marker
744         https://bugs.webkit.org/show_bug.cgi?id=211327
745
746         Reviewed by Brian Burg.
747
748         * UserInterface/Views/MemoryTimelineOverviewGraph.js:
749         (WI.MemoryTimelineOverviewGraph.prototype.layout):
750         (WI.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
751
752 2020-05-05  Devin Rousso  <drousso@apple.com>
753
754         Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'this.InspectorAgent.initialized')
755         https://bugs.webkit.org/show_bug.cgi?id=211434
756
757         Reviewed by Joseph Pecoraro.
758
759         * UserInterface/Protocol/Target.js:
760         (WI.Target.prototype.initialize):
761         `Worker` targets don't (and are not expected to) have an `Inspector` domain.
762
763 2020-05-04  Devin Rousso  <drousso@apple.com>
764
765         Web Inspector: add a tool for viewing UserInterface/Images files
766         https://bugs.webkit.org/show_bug.cgi?id=211422
767
768         Reviewed by Timothy Hatcher.
769
770         * Tools/Images/index.html: Added.
771         * Tools/Images/index.css: Added.
772         (body):
773         (h1):
774         (textarea):
775         (.flex):
776         (#preview):
777         (#preview > img):
778         (#preview > img.light):
779         (#preview > img.dark):
780         * Tools/Images/index.js: Added.
781         (async loadImage):
782         (async parseSVG):
783         (async loadPNG):
784         (normalizePath):
785         (changeSize):
786         (updateURL):
787
788 2020-05-04  Nikita Vasilyev  <nvasilyev@apple.com>
789
790         Web Inspector: Tabs jiggle on click
791         https://bugs.webkit.org/show_bug.cgi?id=211177
792         <rdar://problem/62590810>
793
794         Reviewed by Devin Rousso.
795
796         Currently, tab dragging starts immediately after mouse down. With this patch,
797         dragging starts only after the mouse cursor moving 12 pixels. This roughly matches
798         macOS Safari tabs.
799
800         * UserInterface/Views/TabBar.js:
801         (WI.TabBar):
802         (WI.TabBar.prototype._handleTabContainerMouseDown):
803         (WI.TabBar.prototype._handleMouseUp):
804         (WI.TabBar.prototype._handleTabContainerMouseLeave):
805
806 2020-05-04  Devin Rousso  <drousso@apple.com>
807
808         Web Inspector: drop support for iOS 9.*
809         https://bugs.webkit.org/show_bug.cgi?id=211314
810
811         Reviewed by Daniel Bates.
812
813         * UserInterface/Controllers/BreakpointPopoverController.js:
814         (WI.BreakpointPopoverController.prototype._createPopoverContent):
815         * UserInterface/Controllers/CSSManager.js:
816         (WI.CSSManager):
817         (WI.CSSManager.prototype.preferredInspectorStyleSheetForFrame):
818         (WI.CSSManager.prototype._mainResourceDidChange):
819         (WI.CSSManager.prototype._fetchInfoForAllStyleSheets):
820         (WI.CSSManager.prototype.fetchStyleSheetsIfNeeded): Deleted.
821         (WI.CSSManager.prototype.preferredInspectorStyleSheetForFrame.documentNodeAvailable): Deleted.
822         (WI.CSSManager.prototype.preferredInspectorStyleSheetForFrame.bodyNodeAvailable): Deleted.
823         (WI.CSSManager.prototype.preferredInspectorStyleSheetForFrame.cssRuleAvailable): Deleted.
824         * UserInterface/Controllers/DebuggerManager.js:
825         (WI.DebuggerManager.prototype._scopeChainNodeFromPayload):
826         * UserInterface/Controllers/LayerTreeManager.js:
827         (WI.LayerTreeManager.prototype.set showPaintRects):
828         * UserInterface/Controllers/TimelineManager.js:
829         (WI.TimelineManager.prototype.initializeTarget):
830         (WI.TimelineManager.defaultTimelineTypes):
831         (WI.TimelineManager.availableTimelineTypes):
832         (WI.TimelineManager.prototype.set autoCaptureOnPageLoad):
833         (WI.TimelineManager.prototype._processRecord):
834         (WI.TimelineManager.prototype._attemptAutoCapturingForFrame):
835         * UserInterface/Models/CSSCompletions.js:
836         (WI.CSSCompletions.initializeCSSCompletions):
837         * UserInterface/Models/DOMNodeStyles.js:
838         (WI.DOMNodeStyles.prototype.refresh):
839         * UserInterface/Models/HeapAllocationsInstrument.js:
840         (WI.HeapAllocationsInstrument):
841         (WI.HeapAllocationsInstrument.supported): Deleted.
842         * UserInterface/Models/MemoryInstrument.js:
843         (WI.MemoryInstrument): Deleted.
844         (WI.MemoryInstrument.supported): Deleted.
845         * UserInterface/Models/NativeFunctionParameters.js:
846         * UserInterface/Models/ScriptInstrument.js:
847         (WI.ScriptInstrument.prototype.startInstrumentation):
848         (WI.ScriptInstrument.prototype.stopInstrumentation):
849         * UserInterface/Models/ScriptSyntaxTree.js:
850         (WI.ScriptSyntaxTree.functionReturnDivot):
851         * UserInterface/Models/ScriptTimelineRecord.js:
852         (WI.ScriptTimelineRecord):
853         (WI.ScriptTimelineRecord.prototype._initializeProfileFromPayload):
854         * UserInterface/Protocol/DebuggerObserver.js:
855         (WI.DebuggerObserver.prototype.scriptParsed):
856         * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js: Removed.
857         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js: Removed.
858         * UserInterface/Views/ScriptClusterTimelineView.js:
859         (WI.ScriptClusterTimelineView):
860         (WI.ScriptClusterTimelineView.createPathComponent):
861         (WI.ScriptClusterTimelineView.prototype.reset):
862         (WI.ScriptClusterTimelineView.prototype.showProfile):
863         (WI.ScriptClusterTimelineView.prototype._canShowProfileView): Deleted.
864         * UserInterface/Views/ScriptDetailsTimelineView.js:
865         (WI.ScriptDetailsTimelineView):
866         * UserInterface/Views/SearchSidebarPanel.js:
867         (WI.SearchSidebarPanel.prototype.performSearch):
868         * UserInterface/Views/TimelineRecordingContentView.js:
869         (WI.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
870         (WI.TimelineRecordingContentView.prototype._recordingTimesUpdated):
871         * Versions/Inspector-iOS-9.0.json: Removed.
872         * Versions/Inspector-iOS-9.3.json: Removed.
873
874 2020-05-04  Devin Rousso  <drousso@apple.com>
875
876         Web Inspector: drop support for iOS 8.*
877         https://bugs.webkit.org/show_bug.cgi?id=211312
878
879         Reviewed by Daniel Bates.
880
881         * UserInterface/Controllers/DOMManager.js:
882         (WI.DOMManager.prototype.highlightSelector):
883         * UserInterface/Controllers/NetworkManager.js:
884         (WI.NetworkManager.prototype.resourceRequestWillBeSent):
885         * UserInterface/Controllers/RuntimeManager.js:
886         (WI.RuntimeManager.prototype.initializeTarget):
887         (WI.RuntimeManager.prototype.evaluateInInspectedWindow):
888         * UserInterface/Controllers/TimelineManager.js:
889         (WI.TimelineManager.defaultTimelineTypes):
890         (WI.TimelineManager.prototype._loadNewRecording):
891         * UserInterface/Models/DOMNodeStyles.js:
892         (WI.DOMNodeStyles.parseSelectorListPayload):
893         * UserInterface/Models/FPSInstrument.js:
894         (WI.FPSInstrument): Deleted.
895         (WI.FPSInstrument.supported): Deleted.
896         * UserInterface/Models/ObjectPreview.js:
897         (WI.ObjectPreview.fromPayload):
898         * UserInterface/Models/ProfileNode.js:
899         (WI.ProfileNode):
900         (WI.ProfileNode.prototype.get startTime):
901         (WI.ProfileNode.prototype.get endTime):
902         (WI.ProfileNode.prototype.computeCallInfoForTimeRange):
903         (WI.ProfileNode.prototype.get calls): Deleted.
904         (WI.ProfileNode.prototype.computeCallInfoForTimeRange.totalTimeInRange): Deleted.
905         * UserInterface/Models/Resource.js:
906         (WI.Resource.prototype.get initiatedResources):
907         (WI.Resource.prototype.get originalRequestWillBeSentTimestamp): Deleted.
908         * UserInterface/Models/ResourceTimingData.js:
909         (WI.ResourceTimingData.fromPayload):
910         * UserInterface/Models/ScriptTimelineRecord.js:
911         (WI.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
912         * UserInterface/Models/TimelineRecording.js:
913         (WI.TimelineRecording):
914         (WI.TimelineRecording.prototype.computeElapsedTime):
915         (WI.TimelineRecording.prototype.setLegacyBaseTimestamp): Deleted.
916         * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js: Removed.
917         * UserInterface/Protocol/RemoteObject.js:
918         (WI.RemoteObject.fromPayload):
919         (WI.RemoteObject.prototype.getDisplayablePropertyDescriptors):
920         * UserInterface/Protocol/Target.js:
921         (WI.Target.prototype.initialize):
922         * UserInterface/Views/ObjectTreePropertyTreeElement.js:
923         (WI.ObjectTreePropertyTreeElement.prototype._updateProperties):
924         (WI.ObjectTreePropertyTreeElement):
925         * UserInterface/Views/ObjectTreeView.js:
926         (WI.ObjectTreeView.prototype._updateProperties):
927         * UserInterface/Views/ScriptTimelineDataGridNode.js:
928         (WI.ScriptTimelineDataGridNode.prototype.get data):
929         * UserInterface/Views/SourceCodeTextEditor.js:
930         (WI.SourceCodeTextEditor.prototype._createTypeTokenAnnotator):
931         (WI.SourceCodeTextEditor.prototype._createBasicBlockAnnotator):
932         * UserInterface/Views/SourcesNavigationSidebarPanel.js:
933         (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):
934         * UserInterface/Views/TimelineOverview.js:
935         (WI.TimelineOverview):
936         * UserInterface/Views/TimelineTabContentView.js:
937         (WI.TimelineTabContentView):
938         (WI.TimelineTabContentView.prototype.closed):
939         (WI.TimelineTabContentView.prototype.restoreFromCookie):
940         * Versions/Inspector-iOS-8.0.json: Removed.
941
942 2020-05-04  Devin Rousso  <drousso@apple.com>
943
944         Web Inspector: drop support for iOS 10.*
945         https://bugs.webkit.org/show_bug.cgi?id=211318
946
947         Reviewed by Daniel Bates.
948
949         * UserInterface/Controllers/DOMDebuggerManager.js:
950         (WI.DOMDebuggerManager.supportsDOMBreakpoints):
951         (WI.DOMDebuggerManager.prototype._updateDOMBreakpoint):
952         * UserInterface/Controllers/DebuggerManager.js:
953         (WI.DebuggerManager.prototype.async initializeTarget):
954         (WI.DebuggerManager.prototype.debuggerDidResume):
955         * UserInterface/Controllers/NetworkManager.js:
956         (WI.NetworkManager.prototype.initializeTarget):
957         (WI.NetworkManager.prototype.webSocketWillSendHandshakeRequest):
958         (WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):
959         (WI.NetworkManager.prototype.markResourceRequestAsServedFromMemoryCache): Deleted.
960         * UserInterface/Controllers/RuntimeManager.js:
961         (WI.RuntimeManager.prototype.initializeTarget):
962         * UserInterface/Models/Resource.js:
963         (WI.Resource.prototype.legacyMarkServedFromMemoryCache): Deleted.
964         (WI.Resource.prototype.legacyMarkServedFromDiskCache): Deleted.
965         * UserInterface/Models/ResourceTimingData.js:
966         (WI.ResourceTimingData.fromPayload):
967         * UserInterface/Models/WebSocketResource.js:
968         (WI.WebSocketResource.prototype.addFrame):
969         * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js: Removed.
970         * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js: Removed.
971         * UserInterface/Protocol/NetworkObserver.js:
972         (WI.NetworkObserver.prototype.requestServedFromCache): Deleted.
973         * UserInterface/Protocol/PageObserver.js:
974         (WI.PageObserver.prototype.frameClearedScheduledNavigation):
975         (WI.PageObserver):
976         (WI.PageObserver.prototype.javascriptDialogOpening): Deleted.
977         (WI.PageObserver.prototype.javascriptDialogClosed): Deleted.
978         (WI.PageObserver.prototype.scriptsEnabled): Deleted.
979         * UserInterface/Views/LogContentView.js:
980         (WI.LogContentView.prototype._garbageCollect):
981         * UserInterface/Views/NetworkTableContentView.js:
982         (WI.NetworkTableContentView):
983         * UserInterface/Views/NetworkTimelineView.js:
984         (WI.NetworkTimelineView):
985         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
986         (WI.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
987         * UserInterface/Views/SourcesNavigationSidebarPanel.js:
988         (WI.SourcesNavigationSidebarPanel):
989         * UserInterface/Views/WebSocketContentView.js:
990         (WI.WebSocketContentView):
991         (WI.WebSocketContentView.prototype._addRow):
992         * Versions/Inspector-iOS-10.0.json: Removed.
993         * Versions/Inspector-iOS-10.3.json: Removed.
994
995         * UserInterface/Protocol/CSSObserver.js:
996         (WI.CSSObserver.prototype.namedFlowCreated):
997         (WI.CSSObserver.prototype.namedFlowRemoved):
998         (WI.CSSObserver.prototype.regionOversetChanged):
999         (WI.CSSObserver.prototype.registeredNamedFlowContentElement):
1000         (WI.CSSObserver.prototype.unregisteredNamedFlowContentElement):
1001         Fix compatibility comments.
1002
1003 2020-05-04  Devin Rousso  <drousso@apple.com>
1004
1005         Web Inspector: Worker: should use the name of the worker if it exists
1006         https://bugs.webkit.org/show_bug.cgi?id=211244
1007
1008         Reviewed by Brian Burg.
1009
1010         * UserInterface/Protocol/WorkerObserver.js:
1011         (WI.WorkerObserver.prototype.workerCreated):
1012         * UserInterface/Controllers/WorkerManager.js:
1013         (WI.WorkerManager.prototype.workerCreated):
1014         * UserInterface/Protocol/WorkerTarget.js:
1015         (WI.WorkerTarget):
1016         (WI.WorkerTarget.prototype.get customName): Added.
1017         (WI.WorkerTarget.prototype.get displayName):
1018         (WI.WorkerTarget.prototype.get displayURL): Added.
1019         Use the `name` from the `WorkerOptions` given to the `Worker` when it's constructed as the
1020         `displayName` of the `WI.WorkerTarget` if able. Also exposed via `get customName`.
1021
1022         * UserInterface/Views/ScriptTreeElement.js:
1023         (WI.ScriptTreeElement):
1024         * UserInterface/Views/WorkerTreeElement.js:
1025         (WI.WorkerTreeElement):
1026         Accept an `options` optional object that can be used to override the `mainTitle`.
1027
1028 2020-05-04  Devin Rousso  <drousso@apple.com>
1029
1030         Web Inspector: provide a way for inspector to turn on/off ITP debug mode and AdClickAttribution debug mode
1031         https://bugs.webkit.org/show_bug.cgi?id=209763
1032
1033         Reviewed by Brian Burg.
1034
1035         * UserInterface/Base/Main.js:
1036         (WI._handleDeviceSettingsTabBarButtonClicked):
1037         Add a new section to the device settings popover:
1038
1039             Enable: [ ] ITP Debug Mode
1040                     [ ] Ad Click Attribution Debug Mode
1041
1042         * Localizations/en.lproj/localizedStrings.js:
1043
1044 2020-05-02  Devin Rousso  <drousso@apple.com>
1045
1046         [CSS Easing 1] implement `jump-*` step positions
1047         https://bugs.webkit.org/show_bug.cgi?id=211271
1048
1049         Reviewed by Dean Jackson.
1050
1051         * UserInterface/Models/CSSKeywordCompletions.js:
1052         (WI.CSSKeywordCompletions.forFunction):
1053         Include the step position keywords when autocompleting the `steps()` CSS function.
1054
1055 2020-04-30  Nikita Vasilyev  <nvasilyev@apple.com>
1056
1057         Web Inspector: Computed: shouldn't display focus outline on click
1058         https://bugs.webkit.org/show_bug.cgi?id=211118
1059         <rdar://problem/62491002>
1060
1061         Reviewed by Devin Rousso.
1062
1063         - CSS property view is no longer focusable.
1064         - Disclosure triangle is now tabbable.
1065
1066         * UserInterface/Views/ComputedStyleSection.css:
1067         (.computed-style-section .computed-property-item):
1068         (.computed-style-section .computed-property-item.expanded):
1069         (.computed-style-section .computed-property-item > .disclosure-button:focus):
1070         * UserInterface/Views/ExpandableView.js:
1071         (WI.ExpandableView):
1072         (WI.ExpandableView.prototype._onDisclosureButtonClick):
1073         (WI.ExpandableView.prototype._update):
1074         Drive-by: add `ariaExpanded` so VoiceOver reads whether it's expanded or collapsed.
1075
1076         * UserInterface/Views/SpreadsheetStyleProperty.js:
1077         Remove tabIndex so we don't show any focus outline around the entire CSS property view.
1078
1079 2020-04-30  Devin Rousso  <drousso@apple.com>
1080
1081         WebKit.WebContent process crashes when web developer tools are opened in Safari
1082         https://bugs.webkit.org/show_bug.cgi?id=210794
1083         <rdar://problem/62214651>
1084
1085         Reviewed by Brian Burg.
1086
1087         * UserInterface/Views/QuickConsole.js:
1088         (WI.QuickConsole.prototype._handleFrameExecutionContextsCleared):
1089         (WI.QuickConsole.prototype._handleTargetRemoved):
1090         If a `Worker` is removed and is not the active execution context, still check to see if the
1091         execution context picker should be hidden, such as if there is only one other execution
1092         context (e.g. the main page execution context). Previously, the execution context picker
1093         would only be hidden in this case if the `Worker` was the active execution context.
1094
1095 2020-04-30  Christopher Reid  <chris.reid@sony.com>
1096
1097         [CMake] Don't copy inspector resources in every incremental build
1098         https://bugs.webkit.org/show_bug.cgi?id=211212
1099
1100         Reviewed by Žan Doberšek.
1101
1102         Moving the copy to a custom_command with a stamp so the copy isn't done each build.
1103
1104         * CMakeLists.txt:
1105
1106 2020-04-29  Devin Rousso  <drousso@apple.com>
1107
1108         Web Inspector: don't immediately attempt to perform a search whenever the find string changes
1109         https://bugs.webkit.org/show_bug.cgi?id=211164
1110
1111         Reviewed by Timothy Hatcher.
1112
1113         * UserInterface/Base/Main.js:
1114         (WI.updateFindString):
1115         (WI._populateFind):
1116         * UserInterface/Views/ContentBrowser.js:
1117         (WI.ContentBrowser.prototype.handlePopulateFindShortcut):
1118         (WI.ContentBrowser.prototype.handleFindStringUpdated): Deleted.
1119         Only update the `searchQuery` of the `WI.FindBanner` and `performSearch` when the find
1120         next/previous keyboard shortcut is activated, not when the find string is populated/updated,
1121         unless the update came from the populate find keyboard shortcut.
1122
1123         * UserInterface/Views/LogContentView.js:
1124         (WI.LogContentView.prototype.handlePopulateFindShortcut):
1125         (WI.LogContentView.prototype.handleFindNextShortcut):
1126         (WI.LogContentView.prototype.handleFindPreviousShortcut):
1127         (WI.LogContentView.prototype.highlightPreviousSearchMatch):
1128         (WI.LogContentView.prototype.highlightNextSearchMatch):
1129         (WI.LogContentView.prototype.handleFindStringUpdated): Deleted.
1130         Ensure that the logic for performing a search if the `searchQuery` of the `WI.FindBanner`
1131         doesn't match the current `WI.findString` is also performed when in the split console.
1132
1133 2020-04-28  Nikita Vasilyev  <nvasilyev@apple.com>
1134
1135         Web Inspector: Debug: "Outline focused element" should also outline elements with tabIndex=0
1136         https://bugs.webkit.org/show_bug.cgi?id=211109
1137
1138         Reviewed by Devin Rousso.
1139
1140         * UserInterface/Debug/Bootstrap.css:
1141         (body.focus-debug [tabindex="0"]):
1142         (body.focus-debug *:focus):
1143
1144 2020-04-28  Devin Rousso  <drousso@apple.com>
1145
1146         Web Inspector: find dialog does not populate search string from system find pasteboard
1147         https://bugs.webkit.org/show_bug.cgi?id=113588
1148         <rdar://problem/19281466>
1149
1150         Reviewed by Brian Burg.
1151
1152         * UserInterface/Protocol/InspectorFrontendAPI.js:
1153         (InspectorFrontendAPI.updateFindString): Added.
1154         * UserInterface/Base/Main.js:
1155         (WI.contentLoaded):
1156         (WI.updateFindString): Added.
1157         (WI._populateFind):
1158         (WI._findNext):
1159         (WI._findPrevious):
1160         * UserInterface/Views/ContentBrowser.js:
1161         (WI.ContentBrowser.prototype.handleFindStringUpdated): Added.
1162         (WI.ContentBrowser.prototype.handlePopulateFindShortcut):
1163         (WI.ContentBrowser.prototype.handleFindNextShortcut):
1164         (WI.ContentBrowser.prototype.handleFindPreviousShortcut):
1165         * UserInterface/Views/LogContentView.js:
1166         (WI.LogContentView.prototype.handleFindStringUpdated): Added.
1167         (WI.LogContentView.prototype.handlePopulateFindShortcut):
1168         (WI.LogContentView.prototype.handleFindNextShortcut):
1169         (WI.LogContentView.prototype.handleFindPreviousShortcut):
1170         When the find string gets updated, tell the active view. The `findNextKeyboardShortcut` and
1171         `findPreviousKeyboardShortcut` will also update the related `WI.FindBanner` when invoked if
1172         the current search query does not match the find string.
1173
1174         * UserInterface/Test/Test.js:
1175         (WI.updateFindString): Added.
1176
1177 2020-04-28  Christopher Reid  <chris.reid@sony.com>
1178
1179         [Win] Bundle Inspector Resources in Release builds
1180         https://bugs.webkit.org/show_bug.cgi?id=210942
1181
1182         Reviewed by Fujii Hironori.
1183
1184         Add CMake files for copying inspector resources
1185
1186         * CMakeLists.txt: Added.
1187         * PlatformGTK.cmake: Added.
1188         * PlatformWin.cmake: Added.
1189
1190 2020-04-28  Nikita Vasilyev  <nvasilyev@apple.com>
1191
1192         Web Inspector: Elements: Classes toggle button has wrong outline on focus
1193         https://bugs.webkit.org/show_bug.cgi?id=211104
1194         <rdar://problem/62475340>
1195
1196         Reviewed by Devin Rousso.
1197
1198         * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
1199         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:focus):
1200         * UserInterface/Views/Variables.css:
1201         (:root):
1202
1203 2020-04-27  Nikita Vasilyev  <nvasilyev@apple.com>
1204
1205         REGRESSION (r258730): Web Inspector: Sidebar tabs have incorrect tabIndex
1206         https://bugs.webkit.org/show_bug.cgi?id=211072
1207         <rdar://problem/62445067>
1208
1209         Reviewed by Brian Burg.
1210
1211         Only selected radio button should be focusable. This matches native macOS radio buttons.
1212
1213         * UserInterface/Views/RadioButtonNavigationItem.js:
1214         (WI.RadioButtonNavigationItem.prototype.get tabbable):
1215         This getter was incorrectly returning -1 or 0 instead of a boolean value.
1216
1217 2020-04-27  Diego Pino Garcia  <dpino@igalia.com>
1218
1219         Unreviewed, reverting r260672.
1220
1221         [GTK] WebInspector tests are timing out after r260672
1222
1223         Reverted changeset:
1224
1225         "[Win] Bundle Inspector Resources in Release builds"
1226         https://bugs.webkit.org/show_bug.cgi?id=210942
1227         https://trac.webkit.org/changeset/260672
1228
1229 2020-04-27  Diego Pino Garcia  <dpino@igalia.com>
1230
1231         Unreviewed, reverting r260728.
1232
1233         Build fix after r260672, no needed since r260672 is also being reverted.
1234
1235         Reverted changeset:
1236
1237         "[Win] Fix windows build with MSBuild after 260672"
1238         https://bugs.webkit.org/show_bug.cgi?id=211047
1239         https://trac.webkit.org/changeset/260728
1240
1241 2020-04-27  Diego Pino Garcia  <dpino@igalia.com>
1242
1243         Unreviewed, reverting r260696.
1244
1245         Build fix after r260672, no needed since r260672 is also being reverted.
1246
1247         Reverted changeset:
1248
1249         "REGRESSION(210942): [GTK][WPE] Unreviewed, EWS build bots
1250         fail in compile-webkit step"
1251         https://bugs.webkit.org/show_bug.cgi?id=211014
1252         https://trac.webkit.org/changeset/260696
1253
1254 2020-04-26  Christopher Reid  <chris.reid@sony.com>
1255
1256         [Win] Fix windows build with MSBuild after 260672
1257         https://bugs.webkit.org/show_bug.cgi?id=211047
1258
1259         Unreviewed build fix.
1260
1261         * CMakeLists.txt:
1262
1263 2020-04-25  Darin Adler  <darin@apple.com>
1264
1265         [Cocoa] Deal with another round of Xcode upgrade checks
1266         https://bugs.webkit.org/show_bug.cgi?id=211027
1267
1268         Reviewed by Alexey Proskuryakov.
1269
1270         * WebInspectorUI.xcodeproj/project.pbxproj: Bump the upgrade check version.
1271         Add a harmless base localization; this project contains nothing localized.
1272
1273 2020-04-25  Diego Pino Garcia  <dpino@igalia.com>
1274
1275         REGRESSION(210942): [GTK][WPE] Unreviewed, EWS build bots fail in compile-webkit step
1276         https://bugs.webkit.org/show_bug.cgi?id=211014
1277
1278         * CMakeLists.txt: Remove creation of file 'inspector-resources.stamp'.
1279
1280 2020-04-24  Christopher Reid  <chris.reid@sony.com>
1281
1282         [Win] Bundle Inspector Resources in Release builds
1283         https://bugs.webkit.org/show_bug.cgi?id=210942
1284
1285         Reviewed by Fujii Hironori.
1286
1287         Add CMake files for copying inspector resources
1288
1289         * CMakeLists.txt: Added.
1290         * PlatformGTK.cmake: Added.
1291         * PlatformWin.cmake: Added.
1292
1293 2020-04-23  Devin Rousso  <drousso@apple.com>
1294
1295         Web Inspector: REGRESSION(r257759): Network: waterfall popover is missing bars
1296         https://bugs.webkit.org/show_bug.cgi?id=210947
1297
1298         Reviewed by Brian Burg.
1299
1300         `WI.ResourceTimingBreakdownView` is also used inside of a `WI.Popover`, meaning that the
1301         waterfall graph won't be a child of the `.network-table`. Add a `.network` class to all
1302         instances of `.waterfall` so that the selector can be more specific.
1303
1304         * UserInterface/Views/NetworkTableContentView.js:
1305         (WI.NetworkTableContentView.prototype._populateWaterfallGraph):
1306         * UserInterface/Views/NetworkTableContentView.css:
1307         (.waterfall.network .block): Added.
1308         (body[dir=ltr] .waterfall.network .block): Added.
1309         (body[dir=rtl] .waterfall.network .block): Added.
1310         (.waterfall.network .block + .block): Added.
1311         (.waterfall.network .block:matches(.mouse-tracking, .filler) + .block:not(.mouse-tracking, .filler), .waterfall.network .block:not(.request, .response) + :matches(.request, .response)): Added.
1312         (.waterfall.network .block:last-child): Added.
1313         (.waterfall.network .block.request,): Added.
1314         (.waterfall.network .block.mouse-tracking): Added.
1315         (.waterfall.network .block.filler): Added.
1316         (.waterfall.network .block.redirect): Added.
1317         (.waterfall.network .block.queue): Added.
1318         (.waterfall.network .block.dns): Added.
1319         (.waterfall.network .block.connect): Added.
1320         (.waterfall.network .block.secure): Added.
1321         (.waterfall.network .block.request): Added.
1322         (.waterfall.network .block.response): Added.
1323         (.network-table .waterfall .block): Deleted.
1324         (body[dir=ltr] .network-table .waterfall .block): Deleted.
1325         (body[dir=rtl] .network-table .waterfall .block): Deleted.
1326         (.network-table .waterfall .block + .block): Deleted.
1327         (.network-table .waterfall .block:matches(.mouse-tracking, .filler) + .block:not(.mouse-tracking, .filler), .network-table .waterfall .block:not(.request, .response) + :matches(.request, .response)): Deleted.
1328         (.network-table .waterfall .block:last-child): Deleted.
1329         (.network-table .waterfall .block.request,): Deleted.
1330         (.network-table .waterfall .block.mouse-tracking): Deleted.
1331         (.network-table .waterfall .block.filler): Deleted.
1332         (.network-table .waterfall .block.redirect): Deleted.
1333         (.network-table .waterfall .block.queue): Deleted.
1334         (.network-table .waterfall .block.dns): Deleted.
1335         (.network-table .waterfall .block.connect): Deleted.
1336         (.network-table .waterfall .block.secure): Deleted.
1337         (.network-table .waterfall .block.request): Deleted.
1338         (.network-table .waterfall .block.response): Deleted.
1339         * UserInterface/Views/ResourceTimingBreakdownView.js:
1340         (WI.ResourceTimingBreakdownView.prototype.initialLayout):
1341
1342 2020-04-23  Devin Rousso  <drousso@apple.com>
1343
1344         Web Insspector: Storage: cannot select multiple local storage entries
1345         https://bugs.webkit.org/show_bug.cgi?id=210876
1346
1347         Reviewed by Brian Burg.
1348
1349         Support multiple selection using `WI.DataGrid`.
1350
1351         * UserInterface/Views/DataGrid.js:
1352         (WI.DataGrid):
1353         (WI.DataGrid.prototype.get allowsMultipleSelection): Added.
1354         (WI.DataGrid.prototype.set allowsMultipleSelection): Added.
1355         (WI.DataGrid.prototype.get selectedNode):
1356         (WI.DataGrid.prototype.set selectedNode):
1357         (WI.DataGrid.prototype.get selectedDataGridNodes): Added.
1358         (WI.DataGrid.prototype._keyDown):
1359         (WI.DataGrid.prototype.selectNodes):
1360         (WI.DataGrid.prototype._mouseDownInDataTable):
1361         (WI.DataGrid.prototype._contextMenuInDataTable):
1362         (WI.DataGrid.prototype.handleCopyEvent):
1363         (WI.DataGrid.prototype._copyRow):
1364         (WI.DataGrid.prototype._copyTable):
1365         (WI.DataGrid.prototype._hasCopyableData):
1366         (WI.DataGrid.prototype.selectDataGridNodeInternal): Added.
1367         (WI.DataGrid.prototype.deselectDataGridNodeInternal): Added.
1368         (WI.DataGrid.prototype._dispatchSelectedNodeChangedEvent): Added.
1369         (WI.DataGrid.prototype.dataGridNodeForSelectionItem): Added.
1370         (WI.DataGrid.prototype.selectionItemForDataGridNode): Added.
1371         (WI.DataGrid.prototype.selectionControllerSelectionDidChange): Added.
1372         (WI.DataGrid.prototype.selectionControllerFirstSelectableItem): Added.
1373         (WI.DataGrid.prototype.selectionControllerLastSelectableItem): Added.
1374         (WI.DataGrid.prototype.selectionControllerPreviousSelectableItem): Added.
1375         (WI.DataGrid.prototype.selectionControllerNextSelectableItem): Added.
1376         * UserInterface/Views/DataGridNode.js:
1377         (WI.DataGridNode.prototype.select):
1378         (WI.DataGridNode.prototype.deselect):
1379         Replace `selectedNode` with a `WI.SelectionController` that behaves like a `WI.TreeOutline`.
1380         Use the `WI.SelectionController.Operation` to ensure that `WI.PlaceholderDataGridNode` are
1381         not selected unless directly chosen (i.e. not during shift selection or ⌘A). Add logic such
1382         that `WI.PlaceholderDataGridNode` are not copied. Prefer `_rows` instead of `children` as
1383         the latter is not sorted/filtered.
1384
1385         * UserInterface/Controllers/SelectionController.js:
1386         (WI.SelectionController.createTreeComparator): Added.
1387         (WI.SelectionController.createListComparator): Added.
1388         Create `static` helper functions for common comparators.
1389
1390         (WI.SelectionController.prototype.deselectItem):
1391         (WI.SelectionController.prototype.selectAll):
1392         (WI.SelectionController.prototype.removeSelectedItems):
1393         (WI.SelectionController.prototype.handleItemMouseDown):
1394         (WI.SelectionController.prototype._selectItemsFromArrowKey):
1395         (WI.SelectionController.prototype._firstSelectableItem):
1396         (WI.SelectionController.prototype._lastSelectableItem):
1397         (WI.SelectionController.prototype._previousSelectableItem):
1398         (WI.SelectionController.prototype._nextSelectableItem):
1399         (WI.SelectionController.prototype._addRange):
1400         (WI.SelectionController.prototype._deleteRange):
1401         Introduce a `WI.SelectionController.Operation` which is used to tell the `_delegate` about
1402         why it's being asked for information.
1403
1404         * UserInterface/Views/DOMStorageContentView.js:
1405         (WI.DOMStorageContentView):
1406         (WI.DOMStorageContentView.prototype._deleteCallback):
1407         Support multiple selection, including deleting multiple rows at once.
1408
1409         * UserInterface/Views/Table.js:
1410         (WI.Table):
1411         * UserInterface/Views/TreeOutline.js:
1412         (WI.TreeOutline):
1413         (WI.TreeOutline.prototype.selectionControllerNumberOfItems): Deleted.
1414         Removed unused `selectionControllerNumberOfItems`.
1415
1416         * UserInterface/Views/ProfileView.js:
1417         (WI.ProfileView):
1418         (WI.ProfileView.prototype._dataGridNodeSelected):
1419         Maintain a `_selectedDataGridNode` so that `oldSelectedNode` doesn't have to be included
1420         when dispatching `WI.DataGrid.Event.SelectedNodeChanged`.
1421
1422 2020-04-23  Devin Rousso  <drousso@apple.com>
1423
1424         Web Inspector: REGRESSION: Elements: Styles: color functions are missing swatches
1425         https://bugs.webkit.org/show_bug.cgi?id=210930
1426
1427         Reviewed by Brian Burg.
1428
1429         * UserInterface/Views/SpreadsheetStyleProperty.js:
1430         (WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens):
1431         (WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
1432         (WI.SpreadsheetStyleProperty.prototype._addColorTokens):
1433         (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):
1434         (WI.SpreadsheetStyleProperty.prototype._addBoxShadowTokens):
1435         (WI.SpreadsheetStyleProperty.prototype._addVariableTokens):
1436         Only attempt to `WI.Color.fromString` when at a ")" that is not part of another function.
1437         Drive-by: add variable tokens after variable text is resolved, as otherwise the variable is
1438                   replaced with a `WI.InlineSwatch`, which replaces the original text, preventing it
1439                   from being used for looking up the variable name.
1440
1441 2020-04-23  Devin Rousso  <drousso@apple.com>
1442
1443         Web Inspector: Uncaught Exception: SyntaxError: Invalid regular expression: missing )
1444         https://bugs.webkit.org/show_bug.cgi?id=210890
1445
1446         Reviewed by Brian Burg.
1447
1448         * UserInterface/Base/SearchUtilities.js:
1449         (WI.SearchUtilities.prototype._regExpForString):
1450         Catch any exceptions from `new RegExp` and return `null` in that case.
1451
1452         * UserInterface/Views/FilterBar.js:
1453         (WI.FilterBar):
1454         (WI.FilterBar.prototype.get invalid): Added.
1455         (WI.FilterBar.prototype.set invalid): Added.
1456         (WI.FilterBar.prototype.clear):
1457         * UserInterface/Views/FilterBar.css:
1458         (:matches(.filter-bar, .search-bar).invalid > input[type="search"]): Added.
1459         * UserInterface/Views/CookieStorageContentView.js:
1460         (WI.CookieStorageContentView.prototype._updateFilteredCookies):
1461         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
1462         (WI.IndexedDatabaseObjectStoreContentView.prototype.dataGridMatchNodeAgainstCustomFilters):
1463         * UserInterface/Views/NavigationSidebarPanel.js:
1464         (WI.NavigationSidebarPanel.prototype.updateFilter):
1465         * UserInterface/Views/NetworkTableContentView.js:
1466         (WI.NetworkTableContentView.prototype._urlFilterDidChange):
1467         * UserInterface/Views/SearchSidebarPanel.js:
1468         (WI.SearchSidebarPanel):
1469         (WI.SearchSidebarPanel.prototype.performSearch):
1470         (WI.SearchSidebarPanel.prototype.performSearch.forEachMatch):
1471         * UserInterface/Views/SearchSidebarPanel.css:
1472         (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]): Added.
1473         Mark the `WI.FilterBar` as invalid if the `filterRegExpForString` is invalid.
1474
1475         * UserInterface/Views/DOMTreeElement.js:
1476         (WI.DOMTreeElement.prototype._highlightSearchResults):
1477         * UserInterface/Views/LogContentView.js:
1478         (WI.LogContentView.prototype.performSearch):
1479         * UserInterface/Views/ResourceHeadersContentView.js:
1480         (WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
1481         * UserInterface/Views/ResourceSecurityContentView.js:
1482         (WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
1483         * UserInterface/Views/SourceCodeTextEditor.js:
1484         (WI.SourceCodeTextEditor.prototype.customPerformSearch):
1485         (WI.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
1486         * UserInterface/Views/TextEditor.js:
1487         (WI.TextEditor.prototype.performSearch):
1488         Ensure that the `WI.FindBanner` shows 0 results if the `searchRegExpForString` is invalid.
1489
1490         * UserInterface/Main.html:
1491         * UserInterface/Views/SearchBar.js: Removed.
1492         * UserInterface/Views/SearchBar.css: Removed.
1493         Removed unused `WI.SearchBar`.
1494
1495 2020-04-22  Devin Rousso  <drousso@apple.com>
1496
1497         Web Inspector: Storage: unable to filter cookies
1498         https://bugs.webkit.org/show_bug.cgi?id=210837
1499
1500         Reviewed by Brian Burg.
1501
1502         * UserInterface/Views/CookieStorageContentView.js:
1503         (WI.CookieStorageContentView):
1504         (WI.CookieStorageContentView.prototype.get navigationItems):
1505         (WI.CookieStorageContentView.prototype.get canFocusFilterBar): Added.
1506         (WI.CookieStorageContentView.prototype.focusFilterBar): Added.
1507         (WI.CookieStorageContentView.prototype.tableIndexForRepresentedObject):
1508         (WI.CookieStorageContentView.prototype.tableRepresentedObjectForIndex):
1509         (WI.CookieStorageContentView.prototype.tableNumberOfRows):
1510         (WI.CookieStorageContentView.prototype.tableSortChanged):
1511         (WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
1512         (WI.CookieStorageContentView.prototype.tableDidRemoveRows):
1513         (WI.CookieStorageContentView.prototype.tablePopulateCell):
1514         (WI.CookieStorageContentView.prototype._getCookiesForHost): Renamed from `_filterCookies`.
1515         (WI.CookieStorageContentView.prototype.async _willDismissCookiePopover):
1516         (WI.CookieStorageContentView.prototype._handleFilterBarFilterDidChange): Added.
1517         (WI.CookieStorageContentView.prototype._handleClearNavigationItemClicked):
1518         (WI.CookieStorageContentView.prototype._reloadCookies):
1519         (WI.CookieStorageContentView.prototype._updateFilteredCookies): Added.
1520         (WI.CookieStorageContentView.prototype._updateEmptyFilterResultsMessage): Added.
1521         (WI.CookieStorageContentView.prototype._cookiesAtIndexes):
1522         (WI.CookieStorageContentView.prototype._filterCookies): Deleted.
1523         * UserInterface/Views/CookieStorageContentView.css:
1524         (.content-view.cookie-storage > .message-text-view): Added.
1525         (.content-view.cookie-storage > .message-text-view > .message): Added.
1526         (.content-view.cookie-storage > .data-grid): Deleted.
1527         Add a filter bar to the navigation bar that checks the regex-ified filter text against the
1528         formatted text of each cell for each cookie. Also hook it up to the global find shortcut.
1529
1530         * UserInterface/Views/NetworkTableContentView.js:
1531         (WI.NetworkTableContentView.prototype.layout):
1532         (WI.NetworkTableContentView.prototype._showEmptyFilterResultsMessage):
1533         (WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
1534         (WI.NetworkTableContentView.prototype._positionEmptyFilterMessage): Deleted.
1535         * UserInterface/Views/NetworkTableContentView.css:
1536         (.content-view.network .message-text-view): Added.
1537         Drive-by: instead of having the "No Filter Results" view only cover the "Name" column, it
1538                   should cover the entire table so as to be as noticable as possible (not to mention
1539                   the table will be empty anyways, so it's not like anything is being hidden).
1540         Drive-by: ensure that the "No Filter Results" view doesn't cover the statistics.
1541
1542 2020-04-21  Devin Rousso  <drousso@apple.com>
1543
1544         Web Inspector: REGRESSION(r255396): Graphics: viewing a shader program hides the navigation sidebar
1545         https://bugs.webkit.org/show_bug.cgi?id=210838
1546
1547         Reviewed by Joseph Pecoraro.
1548
1549         * UserInterface/Views/CanvasSidebarPanel.js:
1550         (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
1551         Include `WI.ShaderProgram` in the list of displayable represented objects.
1552
1553         * UserInterface/Base/Main.js:
1554         (WI.tabContentViewClassForRepresentedObject):
1555         * UserInterface/Views/GraphicsTabContentView.js:
1556         (WI.GraphicsTabContentView.prototype.canShowRepresentedObject):
1557         Update the list of represented objects that are displayable by the Graphics Tab.
1558
1559         * UserInterface/Views/GraphicsOverviewContentView.css:
1560         (.content-view.graphics-overview > section > .header):
1561         (.content-view.graphics-overview > section:not(:first-of-type) > .header): Deleted.
1562         Drive-by: add a top border to the first section when overscrolling.
1563
1564         * UserInterface/Views/CanvasOverviewContentView.css:
1565         (.content-view.canvas-overview > .content-view.canvas > .preview > .message-text-view): Added.
1566         Drive-by: ensure that the "No Preview Available" view doesn't overlap the section header.
1567
1568 2020-04-20  Devin Rousso  <drousso@apple.com>
1569
1570         Web Inspector: the filter bar in the navigation sidebar should respect the global search settings
1571         https://bugs.webkit.org/show_bug.cgi?id=210679
1572
1573         Reviewed by Joseph Pecoraro.
1574
1575         * UserInterface/Views/NavigationSidebarPanel.js:
1576         (WI.NavigationSidebarPanel.prototype.updateFilter):
1577
1578 2020-04-20  Devin Rousso  <drousso@apple.com>
1579
1580         Web Inspector: removing a `WI.TreeElement` in a `WI.NavigationSidebar` doesn't check if the `WI.TreeOutline` still matches the current filter
1581         https://bugs.webkit.org/show_bug.cgi?id=210672
1582
1583         Reviewed by Joseph Pecoraro.
1584
1585         * UserInterface/Views/NavigationSidebarPanel.js:
1586         (WI.NavigationSidebarPanel.prototype.createContentTreeOutline):
1587         (WI.NavigationSidebarPanel.prototype.updateFilter):
1588         (WI.NavigationSidebarPanel.prototype._checkForEmptyFilterResults):
1589         (WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
1590         (WI.NavigationSidebarPanel.prototype._handleTreeElementRemoved): Added.
1591
1592 2020-04-17  Devin Rousso  <drousso@apple.com>
1593
1594         Web Inspector: REGRESSION(r242018): using `RegExp.prototype.test` with a global `RegExp` will ignore one potential match after each successful match
1595         https://bugs.webkit.org/show_bug.cgi?id=210671
1596
1597         Reviewed by Timothy Hatcher.
1598
1599         * UserInterface/Base/SearchUtilities.js:
1600         (WI.SearchUtilities.searchRegExpForString):
1601         (WI.SearchUtilities.filterRegExpForString):
1602         (WI.SearchUtilities._regExpForString):
1603         (WI.SearchUtilities.regExpForString): Deleted.
1604         Many uses of `WI.SearchUtilities.regExpForString` use the returned `RegExp` multiple times,
1605         expecting each use to be done in isolation from every other use (e.g. filtering). In these
1606         cases, the global flag `g` should not be set on the `RegExp`, as otherwise it will keep a
1607         state of the last matched index, thereby breaking this isolation. As such, it is necessary
1608         to split `WI.SearchUtilities.regExpForString` into two versions, one for each use case.
1609
1610         * UserInterface/Views/DOMTreeElement.js:
1611         (WI.DOMTreeElement.prototype._highlightSearchResults):
1612         * UserInterface/Views/LogContentView.js:
1613         (WI.LogContentView.prototype.performSearch):
1614         * UserInterface/Views/ResourceHeadersContentView.js:
1615         (WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
1616         * UserInterface/Views/ResourceSecurityContentView.js:
1617         (WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
1618         * UserInterface/Views/SearchSidebarPanel.js:
1619         (WI.SearchSidebarPanel.prototype.performSearch.forEachMatch):
1620         Use `WI.SearchUtilities.searchRegExpForString` as these views expect the search to maintain
1621         its current position throughout the contents of the view.
1622
1623         * UserInterface/Views/DataGrid.js:
1624         (WI.DataGrid.prototype._updateFilter):
1625         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
1626         (WI.IndexedDatabaseObjectStoreContentView.prototype.dataGridMatchNodeAgainstCustomFilters):
1627         * UserInterface/Views/NetworkTableContentView.js:
1628         (WI.NetworkTableContentView.prototype._urlFilterDidChange):
1629         * UserInterface/Views/SourceCodeTextEditor.js:
1630         (WI.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
1631         * UserInterface/Views/TextEditor.js:
1632         (WI.TextEditor.prototype.performSearch):
1633         Use `WI.SearchUtilities.filterRegExpForString` as these views expect each search to be done
1634         in isolation from every other search (e.g. filtering).
1635
1636 2020-04-17  Devin Rousso  <drousso@apple.com>
1637
1638         Implement Promise.any and AggregateError
1639         https://bugs.webkit.org/show_bug.cgi?id=202566
1640
1641         Reviewed by Yusuke Suzuki.
1642
1643         * UserInterface/Models/IssueMessage.js:
1644         Mark `AggregateError` as a `WI.IssueMessage.Type.SemanticIssue`.
1645
1646 2020-04-17  Alexey Shvayka  <shvaikalesh@gmail.com>
1647
1648         MediaQueryList should extend EventTarget
1649         https://bugs.webkit.org/show_bug.cgi?id=203288
1650
1651         Reviewed by Darin Adler.
1652
1653         * UserInterface/Models/NativeFunctionParameters.js:
1654
1655 2020-04-14  Devin Rousso  <drousso@apple.com>
1656
1657         Web Inspector: Debugger: add a Step next that steps by expression
1658         https://bugs.webkit.org/show_bug.cgi?id=210324
1659
1660         Reviewed by Timothy Hatcher.
1661
1662         Step next is a hybrid of Step over and Step into which continues execution to the next pause
1663         opportunity within the current (or ancestor) call frame. It is especially useful when trying
1664         to debug minified code, such as trying to continue to `c()` in `a() && b() && c();`, where
1665         Step over would continue to the next statement (i.e. after the `;`) and Step in would
1666         continue to the first line inside `a()` (and would require a Step out to get back).
1667
1668         * UserInterface/Controllers/DebuggerManager.js:
1669         (WI.DebuggerManager.prototype.stepNext): Added.
1670
1671         * UserInterface/Base/Main.js:
1672         (WI.contentLoaded):
1673         (WI.debuggerStepNext): Added.
1674         * UserInterface/Views/SourcesNavigationSidebarPanel.js:
1675         (WI.SourcesNavigationSidebarPanel):
1676         (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
1677         (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
1678
1679         * Localizations/en.lproj/localizedStrings.js:
1680         * UserInterface/Images/StepNext.svg: Added.
1681
1682 2020-04-14  Nikita Vasilyev  <nvasilyev@apple.com>
1683
1684         Web Inspector: Don't show tooltips for tabs
1685         https://bugs.webkit.org/show_bug.cgi?id=210464
1686
1687         Reviewed by Devin Rousso.
1688
1689         Don't show tooltips when they match the name of the tab. We no longer truncate tab names
1690         so the tooltip is redundant.
1691
1692         Only show tooltips for settings and search (pinned tabs).
1693
1694         * UserInterface/Views/TabBarItem.js:
1695         (WI.TabBarItem):
1696         (WI.TabBarItem.prototype.set title):
1697
1698 2020-04-14  Devin Rousso  <drousso@apple.com>
1699
1700         Web Inspector: Elements: Computed: de-indent items in the Variables section so that wrapped content doesn't line up with the `--`
1701         https://bugs.webkit.org/show_bug.cgi?id=210384
1702
1703         Reviewed by Timothy Hatcher.
1704
1705         * UserInterface/Views/ComputedStyleDetailsPanel.css:
1706         (.sidebar > .panel.details.css-style > .content > .computed .property):
1707
1708 2020-04-14  Devin Rousso  <drousso@apple.com>
1709
1710         Web Inspector: Console: treat long strings as non-simple so they aren't truncated
1711         https://bugs.webkit.org/show_bug.cgi?id=210511
1712         <rdar://problem/49570592>
1713
1714         Reviewed by Joseph Pecoraro.
1715
1716         Treat strings longer than 140 characters (`WI.FormattedValue.MaxPreviewStringLength`) as not
1717         simple so that `WI.ConsoleMessageView` makes itself expandable, which will show the full
1718         length string when expanded (the truncated string is still shown when collapsed).
1719
1720         * UserInterface/Views/FormattedValue.js:
1721         (WI.FormattedValue.isSimpleString): Added.
1722         (WI.FormattedValue.hasSimpleDisplay):
1723         * UserInterface/Views/ConsoleMessageView.js:
1724         (WI.ConsoleMessageView.prototype._shouldConsiderObjectLossless):
1725
1726 2020-04-12  Darin Adler  <darin@apple.com>
1727
1728         Fix a few mispellings of descendant and propagation
1729         https://bugs.webkit.org/show_bug.cgi?id=210409
1730
1731         Reviewed by Mark Lam.
1732
1733         * UserInterface/Views/TreeOutline.js:
1734         (WI.TreeOutline.prototype._rememberTreeElement):
1735         (WI.TreeOutline.prototype._forgetTreeElement):
1736         (WI.TreeOutline.prototype.selectionControllerNumberOfItems):
1737
1738 2020-04-11  Devin Rousso  <drousso@apple.com>
1739
1740         Web Inspector: CSS: variables should have a go-to arrow to quickly jump to the definition
1741         https://bugs.webkit.org/show_bug.cgi?id=195775
1742         <rdar://problem/48905785>
1743
1744         Reviewed by Timothy Hatcher.
1745
1746         Often when debugging/editing styles that use CSS variables, the desired workflow is to
1747         modify the variable itself, not that specific usage. This is especially helpful when editing
1748         colors saved in CSS variables.
1749
1750         Add an always visible go-to arrow immediately after the variable (e.g. `--XYZ (->)`) that
1751         will jump to the declaration of the variable elsewhere in the style cascade.
1752
1753         * UserInterface/Views/SpreadsheetStyleProperty.js:
1754         (WI.SpreadsheetStyleProperty.prototype._addVariableTokens):
1755         * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
1756         (.spreadsheet-style-declaration-editor .property .select-variable-property): Added.
1757
1758         * UserInterface/Base/Setting.js:
1759         * UserInterface/Views/SettingsTabContentView.js:
1760         (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
1761
1762         * Localizations/en.lproj/localizedStrings.js:
1763
1764 2020-04-09  Devin Rousso  <drousso@apple.com>
1765
1766         Web Inspector: Storage: should be able to set a cookie with no value
1767         https://bugs.webkit.org/show_bug.cgi?id=210237
1768
1769         Reviewed by Timothy Hatcher.
1770
1771         * UserInterface/Views/CookiePopover.js:
1772         (WI.CookiePopover.prototype.get serializedData):
1773         Require an explicitly set `name` instead of falling back to the `placeholder`. Allow the
1774         `value` to be an empty string.
1775
1776         (WI.CookiePopover.prototype.show):
1777         Don't have default placeholder values for `name` or `value` for the reasons above.
1778         Drive-by: if an existing `WI.Cookie` is provided, use its `SameSite` value.
1779
1780         * UserInterface/Views/CookiePopover.css: Added.
1781         (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"]):matches(:invalid, .invalid)): Added.
1782         (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"]).invalid): Deleted.
1783         Instead of changing the text color, change the border color.
1784
1785 2020-04-09  Devin Rousso  <drousso@apple.com>
1786
1787         Web Inspector: Debugger: debug hooks should also be emitted for the first sub-expression in a comma expression
1788         https://bugs.webkit.org/show_bug.cgi?id=210253
1789
1790         Reviewed by Joseph Pecoraro.
1791
1792         * UserInterface/Workers/Formatter/JSFormatter.js:
1793         (JSFormatter.prototype._handleTokenAtNode):
1794         (JSFormatter.prototype._isLikelyToHaveNewline): Deleted.
1795         If an arrow function wraps it's body with `{` and `}`, always add newlines to make setting
1796         breakpoints inside the function body easier.
1797
1798 2020-04-08  Devin Rousso  <drousso@apple.com>
1799
1800         Web Inspector: Debugger: treat comma sub-expressions as separate statements
1801         https://bugs.webkit.org/show_bug.cgi?id=209998
1802
1803         Reviewed by Joseph Pecoraro.
1804
1805         Minifiers sometimes use `,` instead of `;` as a way of compressing multiple statements into
1806         a single statement (e.g. inside an `if` conditional). This makes stepping through minified
1807         code much less useful, as our current stepping logic is based on expressions (not including
1808         step in or step out). In most cases, we do actually want to treat each sub-expression in a
1809         comma expression as a statement so as to emulate the behaviour as if there were `;` instead.
1810
1811         * UserInterface/Workers/Formatter/JSFormatter.js:
1812         (JSFormatter.prototype._isLikelyToHaveNewline):
1813         (JSFormatter.prototype._handleTokenAtNode):
1814         Put each sub-expression in a comma expression on it's own line.
1815
1816 2020-04-08  Devin Rousso  <drousso@apple.com>
1817
1818         Web Inspector: Search: populate the search field with the current selection when using the global search shortcut
1819         https://bugs.webkit.org/show_bug.cgi?id=210207
1820
1821         Reviewed by Timothy Hatcher.
1822
1823         Add a setting to control whether the global search (⇧⌘F) should be populated by the current
1824         selection (if it exists), allowing for a quicker flow for "show me everywhere this exists".
1825
1826         * UserInterface/Base/Setting.js:
1827         * UserInterface/Views/SettingsTabContentView.js:
1828         (WI.SettingsTabContentView.prototype._createGeneralSettingsView):
1829
1830         * UserInterface/Base/Main.js:
1831         (WI._focusSearchField)
1832
1833         * Localizations/en.lproj/localizedStrings.js:
1834
1835 2020-04-08  Devin Rousso  <drousso@apple.com>
1836
1837         Web Inspector: Storage: cannot clear out multiple or all local storage entries
1838         https://bugs.webkit.org/show_bug.cgi?id=209867
1839
1840         Reviewed by Timothy Hatcher.
1841
1842         * UserInterface/Models/DOMStorageObject.js:
1843         (WI.DOMStorageObject.prototype.removeItem):
1844         (WI.DOMStorageObject.prototype.setItem):
1845         (WI.DOMStorageObject.prototype.clear): Added.
1846         (WI.DOMStorageObject.prototype.itemsCleared):
1847         (WI.DOMStorageObject.prototype.itemRemoved):
1848         (WI.DOMStorageObject.prototype.itemAdded):
1849         (WI.DOMStorageObject.prototype.itemUpdated):
1850         Add some assertions.
1851
1852         * UserInterface/Views/DOMStorageContentView.js:
1853         (WI.DOMStorageContentView):
1854         (WI.DOMStorageContentView.prototype.get navigationItems):
1855         (WI.DOMStorageContentView.prototype._handleClearNavigationItemClicked): Added.
1856         Add a "Clear" navigation item that calls the new `DOMStorage.clearDOMStorageItems`.
1857
1858         * UserInterface/Views/DataGrid.js:
1859         (WI.DataGrid.prototype.removeChild):
1860         If the removed item was selected, select the next (or previous if there is no next) item.
1861
1862         * UserInterface/Views/CookieStorageContentView.js:
1863         (WI.CookieStorageContentView):
1864         (WI.CookieStorageContentView.prototype.get navigationItems):
1865         (WI.CookieStorageContentView.prototype._handleClearNavigationItemClicked): Added.
1866         Drive-by: also add a "Clear" navigation item that calls `Page.deleteCookie` for each row.
1867
1868         * UserInterface/Protocol/DOMStorageObserver.js:
1869         (WI.DOMStorageObserver.prototype.domStorageItemUpdated):
1870         * UserInterface/Controllers/DOMStorageManager.js:
1871         (WI.DOMStorageManager.prototype.itemUpdated):
1872         Drive-by: rename `value` to `newValue` to match the protocol.
1873
1874         * Localizations/en.lproj/localizedStrings.js:
1875
1876 2020-04-08  Devin Rousso  <drousso@apple.com>
1877
1878         Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'this._target.NetworkAgent.getResponseBody')
1879         https://bugs.webkit.org/show_bug.cgi?id=210168
1880
1881         Reviewed by Timothy Hatcher.
1882
1883         If a script is loaded by the main page and a `Worker`, the `WI.Script` from the `Worker`
1884         will be associated with the `WI.Resource` from the main page, the call stack in the Sources
1885         Tab will use the `WI.Resource` over the `WI.Script`, but the `WI.Target` for a `Worker` does
1886         not have a `NetworkAgent` or `PageAgent`. As such, inside `WI.Resource`, if the `_target` is
1887         a `WI.TargetType.Worker`, use the `DebuggerAgent`.
1888
1889         * UserInterface/Models/Resource.js:
1890         (WI.Resource.prototype.requestContentFromBackend):
1891
1892         * UserInterface/Main.html:
1893         Drive-by: remove unnecessary `<script>`.
1894
1895 2020-04-08  Devin Rousso  <drousso@apple.com>
1896
1897         Web Inspector: don't reveal the prototype methods when using the "Expand All" context menu item for property-only object trees
1898         https://bugs.webkit.org/show_bug.cgi?id=210123
1899
1900         Reviewed by Timothy Hatcher.
1901
1902         * UserInterface/Views/ObjectTreeView.css:
1903         (.object-tree.properties-only.json-only .object-tree-property.prototype-property, .object-tree.properties-only.json-only .object-tree-property.prototype-property + .children): Added.
1904         (.object-tree.properties-only.json-only .object-tree-property.prototype-property): Deleted.
1905
1906 2020-04-08  Devin Rousso  <drousso@apple.com>
1907
1908         Web Inspector: Sources: support copying selected call frame(s) in the Call Stack
1909         https://bugs.webkit.org/show_bug.cgi?id=210172
1910
1911         Reviewed by Timothy Hatcher.
1912
1913         * UserInterface/Views/SourcesTabContentView.js:
1914         (WI.SourcesTabContentView.prototype.handleCopyEvent): Added.
1915         * UserInterface/Views/SourcesNavigationSidebarPanel.js:
1916         (WI.SourcesNavigationSidebarPanel):
1917         (WI.SourcesNavigationSidebarPanel.prototype.handleCopyEvent): Added.
1918         Copy the function name and source location for each selected call frame. If the selected
1919         call frames span an async boundary, include the async boundary in the form `--- <name> ---`
1920         where name is the reason for the async behavior (e.g. `addEventListener`). If the selected
1921         call frames span multiple threads (e.g. `Worker`), include the thread name and indent all
1922         of the call frames for that thread.
1923
1924         * UserInterface/Views/CallFrameTreeElement.js:
1925         (WI.CallFrameTreeElement):
1926         (WI.CallFrameTreeElement.prototype.get isAsyncBoundaryCallFrame): Added.
1927
1928 2020-04-07  Nikita Vasilyev  <nvasilyev@apple.com>
1929
1930         Web Inspector: focus outline of scope bar is clipped
1931         https://bugs.webkit.org/show_bug.cgi?id=209877
1932         <rdar://problem/61173598>
1933
1934         Reviewed by Timothy Hatcher.
1935
1936         * UserInterface/Views/ScopeBar.css:
1937         (.scope-bar):
1938
1939 2020-04-03  Devin Rousso  <drousso@apple.com>
1940
1941         Web Inspector: Sources: disclosure arrows should be shown if a folder is added to the navigation sidebar
1942         https://bugs.webkit.org/show_bug.cgi?id=209937
1943
1944         Reviewed by Timothy Hatcher.
1945
1946         * UserInterface/Views/SourcesNavigationSidebarPanel.js:
1947         (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject):
1948         (WI.SourcesNavigationSidebarPanel.prototype._addStyleSheet):
1949         (WI.SourcesNavigationSidebarPanel.prototype._addScript):
1950
1951 2020-04-03  David Kilzer  <ddkilzer@apple.com>
1952
1953         [Xcode] Replace ASAN_OTHER_CFLAGS and ASAN_OTHER_CPLUSPLUSFLAGS with $(inherited)
1954         <https://webkit.org/b/209963>
1955         <rdar://problem/61257504>
1956
1957         Reviewed by Alexey Proskuryakov.
1958
1959         * Configurations/Base.xcconfig:
1960         - Remove ASAN_OTHER_CFLAGS, ASAN_OTHER_CPLUSPLUSFLAGS and
1961           ASAN_OTHER_LDFLAGS.
1962
1963 2020-04-02  Devin Rousso  <drousso@apple.com>
1964
1965         Context menu for local storage puts quotes around key and value
1966         https://bugs.webkit.org/show_bug.cgi?id=209868
1967
1968         Reviewed by Joseph Pecoraro.
1969
1970         There are only two `WI.DataGrid` that support editing right now. Both of them use obvious
1971         names for their columns (e.g. "Key", "Name", "Value", etc.), so rather than quote the column
1972         name in the context menu, just display it as is.
1973
1974         * UserInterface/Views/DataGrid.js:
1975         (WI.DataGrid.prototype._contextMenuInDataTable):
1976
1977         * Localizations/en.lproj/localizedStrings.js:
1978
1979 2020-04-02  Nikita Vasilyev  <nvasilyev@apple.com>
1980
1981         Web Inspector: Network tab summary bar jiggles
1982         https://bugs.webkit.org/show_bug.cgi?id=209927
1983
1984         Reviewed by Timothy Hatcher.
1985
1986         * UserInterface/Views/NetworkTableContentView.css:
1987         (.network-table > .statistics > .statistic > .text):
1988
1989 2020-04-01  Nikita Vasilyev  <nvasilyev@apple.com>
1990
1991         Web Inspector: Use ECMAScript Numeric Separators for numbers with 5 or more digits
1992         https://bugs.webkit.org/show_bug.cgi?id=209879
1993
1994         Reviewed by Joseph Pecoraro.
1995
1996         Instead of `1000000` write `1_000_000` so it's easier to read.
1997
1998         * UserInterface/Base/Utilities.js:
1999         * UserInterface/Controllers/JavaScriptLogViewController.js:
2000         * UserInterface/Controllers/TimelineManager.js:
2001         * UserInterface/Models/Gradient.js:
2002         (WI.Gradient.prototype.stringFromStops):
2003         * UserInterface/Models/HeapAllocationsInstrument.js:
2004         (WI.HeapAllocationsInstrument.prototype.startInstrumentation):
2005         * UserInterface/Protocol/Connection.js:
2006         (InspectorBackend.Connection.prototype._dispatchResponse):
2007         * UserInterface/Views/Layers3DContentView.js:
2008         (WI.Layers3DContentView.prototype.initialLayout):
2009         * UserInterface/Views/NetworkTableContentView.js:
2010         (WI.NetworkTableContentView.prototype._updateLoadTimeStatistic):
2011
2012 2020-03-31  Jon Davis  <jond@apple.com>
2013
2014         Added new WebSocket icon
2015         https://bugs.webkit.org/show_bug.cgi?id=209433
2016
2017         Reviewed by Joseph Pecoraro.
2018
2019         Drive-by: remove unused #doc-orig
2020
2021         * UserInterface/Images/DocumentIcons.svg:
2022         * UserInterface/Views/ResourceIcons.css:
2023         (.resource-icon.resource-type-websocket .icon):
2024         (@media (prefers-color-scheme: dark) .resource-icon.resource-type-websocket .icon):
2025
2026 2020-03-30  Nikita Vasilyev  <nvasilyev@apple.com>
2027
2028         Web Inspector: the Dock Side navigation item is automatically focused when Web Inspector is opened detached, preventing any global spacebar shortcuts from working
2029         https://bugs.webkit.org/show_bug.cgi?id=209760
2030
2031         Reviewed by Devin Rousso.
2032
2033         When undocking, Web Inspector focuses on the first visible focusable element. I don't know why.
2034         This patch restores the focus to the previously focused element.
2035
2036         * UserInterface/Base/Main.js:
2037
2038 2020-03-30  Devin Rousso  <drousso@apple.com>
2039
2040         Web Inspector: REGRESSION(r259101): items in the contextmenu of the tab bar don't have any text
2041         https://bugs.webkit.org/show_bug.cgi?id=209793
2042
2043         Reviewed by Timothy Hatcher.
2044
2045         Fix a few places that weren't changed to use `displayName` instead of `title`.
2046
2047         * UserInterface/Base/Main.js:
2048         (WI._tabBrowserSelectedTabContentViewDidChange):
2049         * UserInterface/Views/TabBar.js:
2050         (WI.TabBar.prototype._handleTabContainerMouseDown):
2051         (WI.TabBar.prototype._handleTabContainerContextMenu):
2052
2053 2020-03-30  Devin Rousso  <drousso@apple.com>
2054
2055         Web Inspector: provide a way to log messages from the network process
2056         https://bugs.webkit.org/show_bug.cgi?id=204775
2057
2058         Reviewed by Brian Burg.
2059
2060         ITP can be influenced by multiple pages simultaneously, meaning that sending a console
2061         message to the Web Inspector that's connected to the page that caused a change may not be
2062         useful as developers often don't test in complete isolation. As such, having a way to
2063         broadcast a console message to all Web Inspectors ensures that any changes caused by any
2064         page are always able to be seen, no matter which page is being actively inspected.
2065
2066         * UserInterface/Models/ConsoleMessage.js:
2067         * UserInterface/Models/IssueMessage.js:
2068         (WI.IssueMessage):
2069         Add `ITPDebug` and `AdClickAttribution` message sources.
2070
2071 2020-03-30  Devin Rousso  <drousso@apple.com>
2072
2073         Web Inspector: Timelines: the current time marker should always be on top
2074         https://bugs.webkit.org/show_bug.cgi?id=209758
2075
2076         Reviewed by Timothy Hatcher.
2077
2078         * UserInterface/Views/TimelineRuler.css:
2079         (.timeline-ruler > .markers):
2080         (.timeline-ruler > .markers > .divider):
2081         (.timeline-ruler > .markers > .marker):
2082         (.timeline-ruler > .markers > .marker.current-time):
2083         Move the `z-index` from the `.markers` container to each individual marker element so that
2084         the `.marker.current-time` can override it.
2085
2086         * UserInterface/Views/Variables.css:
2087         (:root):
2088         Add `--timeline-current-time-z-index` that is above `--timeline-record-z-index`.
2089
2090 2020-03-28  Devin Rousso  <drousso@apple.com>
2091
2092         Web Inspector: support editing cookie key/values from inspector
2093         https://bugs.webkit.org/show_bug.cgi?id=31157
2094         <rdar://problem/19281523>
2095
2096         Reviewed by Timothy Hatcher.
2097
2098         * UserInterface/Models/Cookie.js:
2099         (WI.Cookie):
2100         (WI.Cookie.fromPayload):
2101         (WI.Cookie.parseSetCookieResponseHeader):
2102         (WI.Cookie.prototype.get session): Added.
2103         (WI.Cookie.prototype.expirationDate):
2104         (WI.Cookie.prototype.equals): Added.
2105         (WI.Cookie.prototype.toProtocol): Added.
2106         Add `session` value in addition to the existing `expires` value. Create helper methods for
2107         comparing `WI.Cookie` objects and for using the `WI.Cookie` as a `Page.Cookie` type when
2108         invoking protocol commands (right now just `Page.setCookie`).
2109
2110         * UserInterface/Views/CookieStorageContentView.js:
2111         (WI.CookieStorageContentView):
2112         (WI.CookieStorageContentView.prototype.get navigationItems):
2113         (WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
2114         (WI.CookieStorageContentView.prototype.willDismissPopover): Added.
2115         (WI.CookieStorageContentView.prototype.async _willDismissCookiePopover): Added.
2116         (WI.CookieStorageContentView.prototype._handleSetCookieButtonClick): Added.
2117         (WI.CookieStorageContentView.prototype._reloadCookies):
2118         (WI.CookieStorageContentView.prototype._formatCookiePropertyForColumn):
2119         Add a + navigation item that shows a popover for creating a new cookie. When contextmenu
2120         clicking on a table row, add an "Edit" item that shows a popover for creating a new cookie
2121         with the values from the existing cookie, which will "replace" (delete and set) the existing
2122         cookie upon being dismissed.
2123
2124         * UserInterface/Views/ResourceCookiesContentView.js:
2125         (WI.ResourceCookiesContentView.prototype.tablePopulateCell):
2126         If only use the `expires` value if `session` is not set.
2127
2128         * UserInterface/Views/CookiePopover.js: Added.
2129         (WI.CookiePopover):
2130         (WI.CookiePopover.prototype.get serializedData):
2131         (WI.CookiePopover.prototype.show.createRow):
2132         (WI.CookiePopover.prototype.show.createInputRow):
2133         (WI.CookiePopover.prototype.show):
2134         (WI.CookiePopover.prototype._presentOverTargetElement):
2135         (WI.CookiePopover.prototype._defaultExpires):
2136         (WI.CookiePopover.prototype._parseExpires):
2137         (WI.CookiePopover.prototype._handleInputKeyDown):
2138         * UserInterface/Views/CookiePopover.css: Added.
2139         (.popover .cookie-popover-content):
2140         (.popover .cookie-popover-content > table):
2141         (.popover .cookie-popover-content > table > tr > th):
2142         (.popover .cookie-popover-content > table > tr > td):
2143         (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"])):
2144         (.popover .cookie-popover-content > table > tr > td > input:matches([type="text"], [type="datetime-local"]).invalid):
2145         (@media (prefers-color-scheme: dark) .popover .cookie-popover-content > table > tr > th):
2146         Show an  `<input>` (or `<select>`) for each configuration option when creating a cookie.
2147         Hide the `<input>` for `expires` if the `<input type="checkbox">` for `session` is checked.
2148         Indicate when the value in the `<input>` for `expires` is not a valid date.
2149
2150         * UserInterface/Main.html:
2151         * Localizations/en.lproj/localizedStrings.js:
2152
2153 2020-03-28  Devin Rousso  <drousso@apple.com>
2154
2155         Web Inspector: CSS: create visual editor for `box-shadow`
2156         https://bugs.webkit.org/show_bug.cgi?id=208380
2157
2158         Reviewed by Timothy Hatcher.
2159
2160         Recognize `box-shadow` CSS properties in the Styles sidebar, parse the comma-separated list
2161         value for individual box shadows, and create a `WI.InlineSwatch` for each. When clicked,
2162         show a `WI.Popover` with a `WI.BoxShadowEditor`, which contains a table of editors:
2163
2164             Offset X |   <input type="text">   |   [ 2D (X & Y) ]
2165             Offset Y |   <input type="text">   |   [   Slider   ]
2166                Inset | <input type="checkbox"> |
2167                 Blur |   <input type="text">   | <input type="range">
2168               Spread |   <input type="text">   | <input type="range">
2169             [                                                       ]
2170             [                                                       ]
2171             [                   full color picker                   ]
2172             [                                                       ]
2173             [                                                       ]
2174
2175
2176         * UserInterface/Models/BoxShadow.js: Added.
2177         (WI.BoxShadow):
2178         (WI.BoxShadow.fromString):
2179         (WI.BoxShadow.parseNumberComponent):
2180         (WI.BoxShadow.prototype.get offsetX):
2181         (WI.BoxShadow.prototype.get offsetY):
2182         (WI.BoxShadow.prototype.get blurRadius):
2183         (WI.BoxShadow.prototype.get spreadRadius):
2184         (WI.BoxShadow.prototype.get inset):
2185         (WI.BoxShadow.prototype.get color):
2186         (WI.BoxShadow.prototype.copy):
2187         (WI.BoxShadow.prototype.toString):
2188         (WI.BoxShadow.prototype.toString.stringifyNumberComponent):
2189
2190         * UserInterface/Models/CSSCompletions.js:
2191         Add a `Set` of allowed CSS length units.
2192
2193         * UserInterface/Views/BoxShadowEditor.js: Added.
2194         (WI.BoxShadowEditor):
2195         (WI.BoxShadowEditor.createInputRow):
2196         (WI.BoxShadowEditor.createSlider):
2197         (WI.BoxShadowEditor.prototype.get element):
2198         (WI.BoxShadowEditor.prototype.get boxShadow):
2199         (WI.BoxShadowEditor.prototype.set boxShadow):
2200         (WI.BoxShadowEditor.prototype.handleEvent):
2201         (WI.BoxShadowEditor.prototype._updateBoxShadow):
2202         (WI.BoxShadowEditor.prototype._updateBoxShadowOffsetFromSliderMouseEvent):
2203         (WI.BoxShadowEditor.prototype._determineShiftForEvent):
2204         (WI.BoxShadowEditor.prototype._handleOffsetSliderSVGKeyDown):
2205         (WI.BoxShadowEditor.prototype._handleOffsetSliderSVGMouseDown):
2206         (WI.BoxShadowEditor.prototype._handleWindowMouseMove):
2207         (WI.BoxShadowEditor.prototype._handleWindowMouseUp):
2208         (WI.BoxShadowEditor.prototype._handleOffsetXInputInput):
2209         (WI.BoxShadowEditor.prototype._handleOffsetXInputKeyDown):
2210         (WI.BoxShadowEditor.prototype._handleOffsetYInputInput):
2211         (WI.BoxShadowEditor.prototype._handleOffsetYInputKeyDown):
2212         (WI.BoxShadowEditor.prototype._handleBlurRadiusInputInput):
2213         (WI.BoxShadowEditor.prototype._handleBlurRadiusInputKeyDown):
2214         (WI.BoxShadowEditor.prototype._handleBlurRadiusSliderInput):
2215         (WI.BoxShadowEditor.prototype._handleSpreadRadiusInputInput):
2216         (WI.BoxShadowEditor.prototype._handleSpreadRadiusInputKeyDown):
2217         (WI.BoxShadowEditor.prototype._handleSpreadRadiusSliderInput):
2218         (WI.BoxShadowEditor.prototype._handleInsetCheckboxChange):
2219         (WI.BoxShadowEditor.prototype._handleColorChanged):
2220         * UserInterface/Views/BoxShadowEditor.css: Added.
2221         (.box-shadow-editor):
2222         (.box-shadow-editor > table):
2223         (.box-shadow-editor > table > tr > th):
2224         (.box-shadow-editor > table > tr > td):
2225         (.box-shadow-editor > table > tr > td > input[type="text"]):
2226         (.box-shadow-editor > table > tr > td > input[type="range"]):
2227         (.box-shadow-editor > table > tr > td > svg):
2228         (.box-shadow-editor > table > tr > td > svg line.axis):
2229         (.box-shadow-editor > table > tr > td > svg line:not(.axis)):
2230         (.box-shadow-editor > table > tr > td > svg circle):
2231         (@media (prefers-color-scheme: dark) .box-shadow-editor > table > tr > th):
2232
2233         * UserInterface/Views/InlineSwatch.js:
2234         (WI.InlineSwatch):
2235         (WI.InlineSwatch.prototype._fallbackValue):
2236         (WI.InlineSwatch.prototype._valueEditorValueDidChange):
2237         * UserInterface/Views/InlineSwatch.css:
2238         (.inline-swatch):
2239         (.inline-swatch:not(.box-shadow), .inline-swatch.box-shadow:matches(:hover, :active)): Added.
2240         (.inline-swatch:matches(.bezier, .box-shadow, .spring, .variable)): Added.
2241         (.inline-swatch:not(.read-only):matches(.bezier, .box-shadow, .spring, .variable):hover): Added.
2242         (.inline-swatch:not(.read-only):matches(.bezier, .box-shadow, .spring, .variable):active): Added.
2243         (.inline-swatch:matches(.bezier, .box-shadow, .spring, .variable) > span): Added.
2244         (@media (prefers-color-scheme: dark) .inline-swatch.box-shadow > svg): Added.
2245         (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):hover): Deleted.
2246         (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):active): Deleted.
2247         (.inline-swatch:matches(.bezier, .spring, .variable) > span): Deleted.
2248
2249         * UserInterface/Views/SpreadsheetStyleProperty.js:
2250         (WI.SpreadsheetStyleProperty.prototype._replaceSpecialTokens):
2251         (WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
2252         (WI.SpreadsheetStyleProperty.prototype._addColorTokens):
2253         (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):
2254         (WI.SpreadsheetStyleProperty.prototype._addBoxShadowTokens):
2255         (WI.SpreadsheetStyleProperty.prototype._resolveVariables):
2256
2257         * UserInterface/Views/Variables.css:
2258         (:root):
2259         * UserInterface/Views/ColorPicker.css:
2260         (.color-picker):
2261         Move `--color-picker-width` to `:root` so that `WI.BoxShadowEditor` can use it.
2262
2263         * UserInterface/Main.html:
2264         * UserInterface/Test.html:
2265         * Localizations/en.lproj/localizedStrings.js:
2266         * UserInterface/Images/BoxShadow.svg: Added.
2267
2268 2020-03-28  Devin Rousso  <drousso@apple.com>
2269
2270         Web Inspector: REGRESSION(r257759): Network: graph in Timing pane of selected resource is missing bars
2271         https://bugs.webkit.org/show_bug.cgi?id=209525
2272
2273         Reviewed by Timothy Hatcher.
2274
2275         `WI.ResourceTimingBreakdownView` uses the same CSS classes and DOM structure as the parent
2276         `WI.NetworkTableContentView`, relying on the styles defined there for it's own styles.
2277
2278         * UserInterface/Views/NetworkTableContentView.css:
2279         (.network-table > .table li:not(.filler, .selected) .cell:not(.current-session)): Added.
2280         (.network-table .error): Added.
2281         (.network-table .waterfall .block): Added.
2282         (body[dir=ltr] .network-table .waterfall .block): Added.
2283         (body[dir=rtl] .network-table .waterfall .block): Added.
2284         (.network-table .waterfall .block.request,): Added.
2285         (.network-table .waterfall .block.mouse-tracking): Added.
2286         (.network-table .waterfall .block.filler): Added.
2287         (.network-table .waterfall .block.redirect): Added.
2288         (.network-table .waterfall .block.queue): Added.
2289         (.network-table .waterfall .block.dns): Added.
2290         (.network-table .waterfall .block.connect): Added.
2291         (.network-table .waterfall .block.secure): Added.
2292         (.network-table .waterfall .block.request): Added.
2293         (.network-table .waterfall .block.response): Added.
2294         (.network-table > .table li:not(.selected) .cell:not(.current-session)): Deleted.
2295         (.network-table > .table .error): Deleted.
2296         (.network-table > .table .waterfall .block): Deleted.
2297         (body[dir=ltr] .network-table > .table .waterfall .block): Deleted.
2298         (body[dir=rtl] .network-table > .table .waterfall .block): Deleted.
2299         (.network-table > .table .waterfall .block.request,): Deleted.
2300         (.network-table > .table .waterfall .block.mouse-tracking): Deleted.
2301         (.network-table > .table .waterfall .block.filler): Deleted.
2302         (.network-table > .table .waterfall .block.redirect): Deleted.
2303         (.network-table > .table .waterfall .block.queue): Deleted.
2304         (.network-table > .table .waterfall .block.dns): Deleted.
2305         (.network-table > .table .waterfall .block.connect): Deleted.
2306         (.network-table > .table .waterfall .block.secure): Deleted.
2307         (.network-table > .table .waterfall .block.request): Deleted.
2308         (.network-table > .table .waterfall .block.response): Deleted.
2309         Drive-by: the `WI.Table` filler row should not be dimmed.
2310
2311         * UserInterface/Views/ResourceTimingBreakdownView.css:
2312         (.resource-timing-breakdown .waterfall .block):
2313
2314 2020-03-28  Nikita Vasilyev  <nvasilyev@apple.com>
2315
2316         Web Inspector: Network: pressing RightArrow or LeftArrow unexpectedly changes panels
2317         https://bugs.webkit.org/show_bug.cgi?id=209625
2318         <rdar://problem/60940609>
2319
2320         Reviewed by Timothy Hatcher.
2321
2322         * UserInterface/Views/NavigationBar.js:
2323         (WI.NavigationBar.prototype._keyDown):
2324
2325 2020-03-27  Devin Rousso  <drousso@apple.com>
2326
2327         Web Inspector: should also escape the method when Copy as cURL
2328         https://bugs.webkit.org/show_bug.cgi?id=209665
2329         <rdar://problem/58432154>
2330
2331         Reviewed by Joseph Pecoraro.
2332
2333         * UserInterface/Models/Resource.js:
2334         (WI.Resource.prototype.generateCURLCommand):
2335         (WI.Resource.prototype.generateCURLCommand.escapeStringPosix):
2336         The method could be maliciously crafted, so we should also escape it (if needed).
2337
2338 2020-03-26  Devin Rousso  <drousso@apple.com>
2339
2340         Web Inspector: add keyboard shortcut to tooltip of pinned tabs
2341         https://bugs.webkit.org/show_bug.cgi?id=209640
2342
2343         Reviewed by Timothy Hatcher.
2344
2345         * UserInterface/Views/TabBarItem.js:
2346         (WI.TabBarItem):
2347         (WI.TabBarItem.prototype.get displayName): Added.
2348         (WI.TabBarItem.prototype.set displayName): Added.
2349         (WI.TabBarItem.prototype.set title):
2350         (WI.TabBarItem.prototype.titleDidChange): Deleted.
2351         * UserInterface/Views/GeneralTabBarItem.js:
2352         (WI.GeneralTabBarItem.fromTabContentView):
2353         (WI.GeneralTabBarItem.prototype.get displayName): Added.
2354         (WI.GeneralTabBarItem.prototype.set displayName): Added.
2355         (WI.GeneralTabBarItem.prototype.get title): Deleted.
2356         (WI.GeneralTabBarItem.prototype.set title): Deleted.
2357         * UserInterface/Views/PinnedTabBarItem.js:
2358         (WI.PinnedTabBarItem):
2359         (WI.PinnedTabBarItem.fromTabContentView):
2360         (WI.PinnedTabBarItem.titleDidChange): Deleted.
2361         * UserInterface/Views/TabBar.css:
2362         (.tab-bar > .tabs > .item > .name): Added.
2363         (body.window-inactive .tab-bar > .tabs > .item > .name): Added.
2364         (.tab-bar > .tabs > .item > .name > .content): Added.
2365         (.tab-bar > .tabs > .item:not(.selected):hover > .name): Added.
2366         (.tab-bar > .tabs > .item:not(.disabled).selected > .name): Added.
2367         (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .name): Added.
2368         (.tab-bar > .tabs > .item > .title): Deleted.
2369         (body.window-inactive .tab-bar > .tabs > .item > .title): Deleted.
2370         (.tab-bar > .tabs > .item > .title > .content): Deleted.
2371         (.tab-bar > .tabs > .item:not(.selected):hover > .title): Deleted.
2372         (.tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted.
2373         (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted.
2374         Separate the shown name of the tab (`displayName`) from the tooltip text (`title`).
2375
2376         * UserInterface/Views/SearchTabContentView.js:
2377         (WI.SearchTabContentView.tabInfo):
2378         * UserInterface/Views/SettingsTabContentView.js:
2379         (WI.SettingsTabContentView.tabInfo):
2380         Move the current `title` value to `displayName` and add a new `title` value with the
2381         keyboard shortcut in parenthesis.
2382
2383         * UserInterface/Views/AuditTabContentView.js:
2384         (WI.AuditTabContentView.tabInfo):
2385         * UserInterface/Views/ConsoleTabContentView.js:
2386         (WI.ConsoleTabContentView.tabInfo):
2387         * UserInterface/Views/ElementsTabContentView.js:
2388         (WI.ElementsTabContentView.tabInfo):
2389         * UserInterface/Views/GraphicsTabContentView.js:
2390         (WI.GraphicsTabContentView.tabInfo):
2391         * UserInterface/Views/LayersTabContentView.js:
2392         (WI.LayersTabContentView.tabInfo):
2393         * UserInterface/Views/NetworkTabContentView.js:
2394         (WI.NetworkTabContentView.tabInfo):
2395         * UserInterface/Views/SourcesTabContentView.js:
2396         (WI.SourcesTabContentView.tabInfo):
2397         * UserInterface/Views/StorageTabContentView.js:
2398         (WI.StorageTabContentView.tabInfo):
2399         * UserInterface/Views/TimelineTabContentView.js:
2400         (WI.TimelineTabContentView.tabInfo):
2401         Use `displayName` instead of `title` since the name is shown in the UI.
2402
2403         * UserInterface/Base/Main.js:
2404         (WI.contentLoaded):
2405         Make the Settings Tab shortcut public.
2406
2407         * Localizations/en.lproj/localizedStrings.js:
2408
2409 2020-03-26  Nikita Vasilyev  <nvasilyev@apple.com>
2410
2411         Web Inspector: RTL: ArrowLeft and ArrowRight keys select wrong navigation bar items
2412         https://bugs.webkit.org/show_bug.cgi?id=209617
2413
2414         Reviewed by Devin Rousso.
2415
2416         * UserInterface/Views/NavigationBar.js:
2417         (WI.NavigationBar.prototype._keyDown):
2418         Reverse direction for RTL mode.
2419
2420 2020-03-23  Devin Rousso  <drousso@apple.com>
2421
2422         Web Inspector: REGRESSION(r257791): event breakpoint icon should be [E]
2423         https://bugs.webkit.org/show_bug.cgi?id=209434
2424
2425         Reviewed by Timothy Hatcher.
2426
2427         * UserInterface/Images/TypeIcons.svg:
2428
2429         * UserInterface/Views/PathComponentIcons.css:
2430         (.snapshot-list-icon .icon):
2431         (@media (prefers-color-scheme: dark) .snapshot-list-icon .icon):
2432         Drive-by: make a separate "HeapSnapshotList" target so that it won't be affected if "Events"
2433                   is ever changed.
2434
2435 2020-03-23  Devin Rousso  <drousso@apple.com>
2436
2437         REGRESSION(r257759, r258623): Web Inspector: Settings icon sometimes placed below the tab bar
2438         https://bugs.webkit.org/show_bug.cgi?id=208603
2439         <rdar://problem/60108967>
2440
2441         Reviewed by Timothy Hatcher.
2442
2443         * UserInterface/Views/TabBar.js:
2444         (WI.TabBar.prototype.layout):
2445         If the total width of all `WI.GeneralTabBarItem` is not an integer, it needs to be rounded
2446         when compared to the width of the container `WI.TabBar`. This is be necessary because CSS
2447         often rounds to the nearest pixel, meaning that `99.5px` would actually render as `100px`,
2448         whereas `99.4px` would render as `99px`.
2449
2450         * UserInterface/Views/TabBar.css:
2451         (body:not(.docked) .tab-bar > .tabs:not(.calculate-width) > .item:not(.pinned)): Added.
2452         (.tab-bar > .tabs.calculate-width > .item:not(.pinned)): Added.
2453         (body:not(.docked) .tab-bar > .tabs > .item:not(.pinned)): Deleted.
2454         (.tab-bar > .tabs.calculate-width > .item): Deleted.
2455         When undocked, force all `WI.GeneralTabBarItem` to take up as little width as possible when
2456         resizing so that if there isn't enough room for all of them, any that `flex-wrap` won't be
2457         incorrectly perceived as needing a much larger width.
2458
2459         * UserInterface/Debug/Bootstrap.css:
2460         (.tab-bar > .navigation-bar .inspect-inspector):
2461         Ensure that the "inspect inspector" navigation item has an integer pixel width.
2462
2463 2020-03-23  Devin Rousso  <drousso@apple.com>
2464
2465         Web Inspector: Uncaught Exception: TypeError: this._springEditor.removeListeners is not a function. (In 'this._springEditor.removeListeners()', 'this._springEditor.removeListeners' is undefined)
2466         https://bugs.webkit.org/show_bug.cgi?id=209325
2467
2468         Reviewed by Brian Burg.
2469
2470         * UserInterface/Controllers/CodeMirrorSpringEditingController.js:
2471         (WI.CodeMirrorSpringEditingController.prototype.popoverDidDismiss): Deleted.
2472
2473 2020-03-22  Devin Rousso  <drousso@apple.com>
2474
2475         Web Inspector: Uncaught Exception: Right side of assignment cannot be destructured (at QuickConsole.js:358:30)
2476         https://bugs.webkit.org/show_bug.cgi?id=209388
2477
2478         Reviewed by Joseph Pecoraro.
2479
2480         * UserInterface/Views/QuickConsole.js:
2481         (WI.QuickConsole.prototype._handleFramePageExecutionContextChanged):
2482
2483 2020-03-21  Devin Rousso  <drousso@apple.com>
2484
2485         Web Inspector: REGRESSION(r257380, r257759): focusing the inspected page when docked dims most of the interface
2486         https://bugs.webkit.org/show_bug.cgi?id=209366
2487
2488         Reviewed by Timothy Hatcher.
2489
2490         * UserInterface/Views/ButtonNavigationItem.css:
2491         (body.window-inactive .navigation-bar .item.button > img): Added.
2492         (body.window-inactive .navigation-bar .item.button.disabled > img): Added.
2493         (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Deleted.
2494         (body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Deleted.
2495         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
2496         (body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Added.
2497         (body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Deleted.
2498         * UserInterface/Views/TabBar.css:
2499         (body:not(.docked).window-inactive .tab-bar): Added.
2500         (body.docked.window-inactive .tab-bar): Added.
2501         (body.window-inactive .tab-bar > .border): Added.
2502         (body.window-inactive .tab-bar > .navigation-bar > .item.divider): Added.
2503         (body:not(.docked).window-inactive .tab-bar > .tabs > .item): Added.
2504         (body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
2505         (body.docked.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
2506         (body.window-inactive .tab-bar > .tabs > .item > .icon): Added.
2507         (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added.
2508         (body.window-inactive .tab-bar > .tabs > .item > .title): Added.
2509         (body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .title): Added.
2510         (body:not(.docked).window-inactive .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked).window-inactive .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked).window-inactive .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added.
2511         (@media (prefers-color-scheme: dark) body.docked.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
2512         (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar): Added.
2513         (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar > .tabs > .item): Added.
2514         (@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
2515         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
2516         (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
2517         (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Deleted.
2518         (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Deleted.
2519         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Deleted.
2520         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
2521         (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
2522         (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .icon): Deleted.
2523         (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Deleted.
2524         (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .title): Deleted.
2525         (body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted.
2526         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Deleted.
2527         (@media (prefers-color-scheme: dark) body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
2528         (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
2529         (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Deleted.
2530         (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
2531         * UserInterface/Views/TimelineRecordFrame.css:
2532         (body.window-inactive .timeline-record-frame.selected): Added.
2533         (body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Deleted.
2534         * UserInterface/Views/TimelineRuler.css:
2535         (body.window-inactive .timeline-ruler > .header > .divider): Added.
2536         (body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Deleted.
2537         * UserInterface/Views/Variables.css:
2538         (body.window-inactive): Added.
2539         (body.window-inactive *): Added.
2540         (@media (prefers-color-scheme: dark) body.window-inactive): Added.
2541         (@media (prefers-color-scheme: dark) body.window-inactive *): Added.
2542         (body:matches(.window-inactive, .window-docked-inactive)): Deleted.
2543         (body:matches(.window-inactive, .window-docked-inactive) *): Deleted.
2544         (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Deleted.
2545         (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Deleted.
2546         Remove usage of `.window-docked-inactive` as we don't want the UI to change when the focus
2547         switches between the inspected page and the docked Web Inspector area, which happens a lot.
2548
2549         * UserInterface/Views/BreakpointTreeElement.css:
2550         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.breakpoint.selected .status > .status-image.resolved): Added.
2551         (.tree-outline:focus .item.breakpoint.selected .status > .status-image.resolved): Deleted.
2552         * UserInterface/Views/CallFrameTreeElement.css:
2553         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.call-frame.selected .status > .status-image): Added.
2554         (.tree-outline:focus .item.call-frame.selected .status > .status-image): Deleted.
2555         * UserInterface/Views/CanvasSidebarPanel.css:
2556         (body:not(.window-inactive, .window-docked-inactive) .sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus-within .item.processing.selected .subtitle > progress): Added.
2557         (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus .item.processing.selected .subtitle > progress): Deleted.
2558         * UserInterface/Views/DOMTreeContentView.css:
2559         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom-tree:focus-within .tree-outline.dom li:matches(.selected, .hovered) .status-image.breakpoint): Added.
2560         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom-tree:focus-within .tree-outline.dom li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
2561         (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted.
2562         (body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted.
2563         * UserInterface/Views/DOMTreeOutline.css:
2564         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): Added.
2565         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.inspected-node.selected > span::after): Added.
2566         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .pseudo-class-indicator): Added.
2567         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected): Added.
2568         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected *): Added.
2569         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.parent.selected::before): Added.
2570         (body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.parent.expanded.selected::before): Added.
2571         (.tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): Deleted.
2572         (.tree-outline.dom:focus-within li.inspected-node.selected > span::after): Deleted.
2573         (.tree-outline.dom:focus-within li.selected .pseudo-class-indicator): Deleted.
2574         (.tree-outline.dom:focus-within li.selected): Deleted.
2575         (.tree-outline.dom:focus-within li.selected *): Deleted.
2576         (.tree-outline.dom:focus-within li.parent.selected::before): Deleted.
2577         (.tree-outline.dom:focus-within li.parent.expanded.selected::before): Deleted.
2578         * UserInterface/Views/Main.css:
2579         (:focus .selected .go-to-arrow, .selected:focus .go-to-arrow): Added.
2580         (:focus .selected .go-to-arrow:active, .selected .go:focus-to-arrow:active): Added.
2581         (@media (prefers-color-scheme: dark) :focus .selected .go-to-arrow, .selected:focus .go-to-arrow): Added.
2582         (:focus .selected .go-to-arrow): Deleted.
2583         (:focus .selected .go-to-arrow:active): Deleted.
2584         (@media (prefers-color-scheme: dark) :focus .selected .go-to-arrow): Deleted.
2585         * UserInterface/Views/RecordingActionTreeElement.css:
2586         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added.
2587         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected > .titles .parameter.swizzled, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected::before): Added.
2588         (.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Deleted.
2589         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.recording-action.selected > .titles .parameter.swizzled, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.recording-action.selected::before): Deleted.
2590         * UserInterface/Views/ResourceTreeElement.css:
2591         (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open, .tree-outline:not(:focus-within) .item.resource.resource-type-websocket.selected .status .ready-state.open, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open): Added.
2592         (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting, .tree-outline:not(:focus-within) .item.resource.resource-type-websocket.selected .status .ready-state.connecting, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting): Added.
2593         (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open, .tree-outline:not(:focus) .item.resource.resource-type-websocket.selected .status .ready-state.open, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open): Deleted.
2594         (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting, .tree-outline:not(:focus) .item.resource.resource-type-websocket.selected .status .ready-state.connecting, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting): Deleted.
2595         * UserInterface/Views/ScriptDetailsTimelineView.css:
2596         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected .alternate-subtitle): Added.
2597         (.tree-outline:focus .item.selected .alternate-subtitle): Deleted.
2598         * UserInterface/Views/SourceCodeTreeElement.css:
2599         (.tree-outline .item .status > .toggle-script-blackbox, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Added.
2600         (.tree-outline .item .status > .toggle-script-blackbox, .tree-outline:focus .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Deleted.
2601         * UserInterface/Views/ThreadTreeElement.css:
2602         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within > .item.thread.selected .status-button.resume): Added.
2603         (.tree-outline:focus > .item.thread.selected .status-button.resume): Deleted.
2604         * UserInterface/Views/TimelineOverview.css:
2605         (.timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
2606         (body:not(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines:focus-within .item.selected + .item): Added.
2607         (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
2608         (.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
2609         (.timeline-overview > .tree-outline.timelines :focus .item.selected + .item): Deleted.
2610         (@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
2611         * UserInterface/Views/TreeElementStatusButton.css:
2612         (body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected > .status > .status-button): Added.
2613         (:focus .item.selected > .status > .status-button): Deleted.
2614         Fix cases where `:focus` was still being checked from the `WI.TreeOutline` instead of the
2615         individual `WI.TreeElement`. We should be using `:focus-within`, but only if the window or
2616         docked Web Inspector area is also focused.
2617
2618 2020-03-20  Devin Rousso  <drousso@apple.com>
2619
2620         Web Inspector: REGRESSION(r257835): close and undock buttons are shown in remote inspector
2621         https://bugs.webkit.org/show_bug.cgi?id=209346
2622
2623         Reviewed by Timothy Hatcher.
2624
2625         In the case of remote inspection, the frontend is told that docking is not available before
2626         it is even shown (via `InspectorFrontendAPI.setDockingUnavailable`). Additionally, the
2627         backend (`WebKit::RemoteWebInspectorUI`) never tells the frontend what dock side it actually
2628         is (via `InspectorFrontendAPI.setDockSide`), as there would be no point, given that docking
2629         is unavailable, meaning that the frontend must be undocked.
2630
2631         Before r257835, the docking state held by `WI._dockConfiguration` and `WI.docked`, neither
2632         of which would be set as described above. As a result, in `WI._updateDockNavigationItems`
2633         `WI.docked` would be undefined, which is falsy, thereby causing all docking navigation items
2634         to be hidden. After r257835, these were merged into one `WI.dockConfiguration`, which is
2635         compared against `WI.DockConfiguration.Undocked` instead of just being falsy checked,
2636         meaning it would result in `true` which would not hide all of the docking navigation items.
2637
2638         Change the logic of `WI.updateDockingAvailability` such that if the frontend is told that
2639         docking is unavailable, mark the `WI.dockConfiguration` as `WI.DockConfiguration.Undocked`.
2640         This way, the frontend will always have a valid value for `WI.dockConfiguration`.
2641
2642         Additionally, further leverage `InspectorFrontendHost.supportsDockSide` to only create the
2643         docking navigation items that are actually supported by the host.
2644
2645         * UserInterface/Base/Main.js:
2646         (WI.contentLoaded):
2647         (WI.updateDockingAvailability):
2648         (WI.resizeDockedFrameMouseDown):
2649         (WI.dockedConfigurationSupportsSplitContentBrowser):
2650         (WI._updateDockNavigationItems):
2651         (WI._updateTabBarDividers):
2652
2653         * UserInterface/Views/TabBar.js:
2654         (WI.TabBar.get horizontalPadding):
2655         (WI.TabBar.prototype.resetCachedWidths): Added.
2656         When switching dock configurations, we need to reset the cached width of each tab bar item,
2657         as otherwise, a large width cached when undocked can incorrectly be used when docked.
2658
2659         * UserInterface/Views/TabBarItem.js:
2660         (WI.TabBarItem.get horizontalMargin):
2661         Replace negative checks of `WI.dockConfiguration` with positive ones that can't be fooled by
2662         a falsy value.
2663
2664 2020-03-19  Nikita Vasilyev  <nvasilyev@apple.com>
2665
2666         Web Inspector: AXI: disabled buttons shouldn't be focusable
2667         https://bugs.webkit.org/show_bug.cgi?id=208283
2668         <rdar://problem/59832150>
2669
2670         Reviewed by Devin Rousso.
2671
2672         Set tabIndex to "-1" when button becomes disabled.
2673
2674         * UserInterface/Views/ActivateButtonNavigationItem.js:
2675         (WI.ActivateButtonNavigationItem):
2676         * UserInterface/Views/ButtonNavigationItem.js:
2677         `_role` is defined in the parent class now.
2678
2679         (WI.ButtonNavigationItem):
2680         (WI.ButtonNavigationItem.prototype.set enabled):
2681         (WI.ButtonNavigationItem.prototype.get tabbable):
2682         (WI.ButtonNavigationItem.prototype._updateTabIndex):
2683         * UserInterface/Views/RadioButtonNavigationItem.js:
2684         (WI.RadioButtonNavigationItem.prototype.get tabbable):
2685         (WI.RadioButtonNavigationItem):
2686
2687 2020-03-19  Nikita Vasilyev  <nvasilyev@apple.com>
2688
2689         Web Inspector: remove redundant code in TreeOutline.prototype.removeChildAtIndex
2690         https://bugs.webkit.org/show_bug.cgi?id=209301
2691
2692         Reviewed by Joseph Pecoraro.
2693
2694         * UserInterface/Views/TreeOutline.js:
2695         (WI.TreeOutline.prototype.removeChildAtIndex):
2696         Check `suppressSelectSibling` once instead of three times.
2697
2698 2020-03-17  Devin Rousso  <drousso@apple.com>
2699
2700         Web Inspector: the width of `WI.TabBarItem` can change if the detached window is resized
2701         https://bugs.webkit.org/show_bug.cgi?id=209200
2702
2703         Reviewed by Timothy Hatcher.
2704
2705         * UserInterface/Views/TabBar.js:
2706         (WI.TabBar.prototype.layout):
2707         (WI.TabBar.prototype.layout.measureWidth): Renamed from `measureItemWidth`.
2708         When undocked, `WI.TabBarItem` grow to fill any available space. As a result, if a
2709         `WI.TabBarItem` is added or removed, the width of all `WI.TabBarItem` will change.
2710         Wait to measure widths until all `WI.TabBarItem` are un-hidden for the reason above.
2711
2712 2020-03-17  Devin Rousso  <drousso@apple.com>
2713
2714         Web Inspector: Network: we should prefer showing "Preserve Log" over "Group Media Requests"
2715         https://bugs.webkit.org/show_bug.cgi?id=209199
2716
2717         Reviewed by Timothy Hatcher.
2718
2719         * UserInterface/Views/NetworkTableContentView.js:
2720         (WI.NetworkTableContentView):
2721         Change the `WI.NavigationItem.VisibilityPriority` of the various `WI.NavigationItem`:
2722           High:
2723            - URL filter
2724            - resource type filter
2725            - live/HAR view switcher
2726            - disable resource caching toggle
2727           Normal:
2728            - Preserve Log checkbox
2729            - clear button
2730           Low:
2731            - Group Media Requests checkbox
2732            - HAR import/export buttons
2733         This way, items that have alternate ways of being triggered (e.g. keyboard shortcuts) are
2734         hidden first, and vica versa.
2735
2736 2020-03-17  Devin Rousso  <drousso@apple.com>
2737
2738         Web Inspector: Sources: hovering the title of an object preview popup for a DOM node doesn't highlight it
2739         https://bugs.webkit.org/show_bug.cgi?id=209159
2740
2741         Reviewed by Timothy Hatcher.
2742
2743         * UserInterface/Views/SourceCodeTextEditor.js:
2744         (WI.SourceCodeTextEditor.prototype._showPopoverForObject):
2745
2746 2020-03-17  Devin Rousso  <drousso@apple.com>
2747
2748         REGRESSION(r257759): Web Inspector: Settings icon sometimes placed below the tab bar
2749         https://bugs.webkit.org/show_bug.cgi?id=208603
2750         <rdar://problem/60108967>
2751
2752         Reviewed by Brian Burg.
2753
2754         * UserInterface/Views/TabBar.js:
2755         (WI.TabBar.prototype.layout):
2756         Don't take into account the width of the flexible space before or after the normal tab bar
2757         items since they will shrink to fit (the container is using `display: flex;`). Instead, use
2758         determine the available space by subtracting the width of every `WI.PinnedTabBarItem` from
2759         the `realOffsetWidth` of the container, comparing against the sum of the `realOffsetWidth`
2760         of all `WI.GeneralTabBarItem`. If the sum is greater than the available space, successively
2761         mark items from the end (right in LTR, left in RTL) as hidden until the remaining will fit.
2762
2763 2020-03-16  Nikita Vasilyev  <nvasilyev@apple.com>
2764
2765         REGRESSION(r257380): Web Inspector: deleting node causes TreeOutline to lose focus
2766         https://bugs.webkit.org/show_bug.cgi?id=208364
2767         <rdar://problem/59871772>
2768
2769         Reviewed by Devin Rousso.
2770
2771         Maintain keyboard focus within TreeOutline when selection changes.
2772
2773         * UserInterface/Views/TreeElement.js:
2774         (WI.TreeElement.prototype.select):
2775
2776 2020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
2777
2778         Should not use variable-length-array (VLA)
2779         https://bugs.webkit.org/show_bug.cgi?id=209043
2780
2781         Reviewed by Mark Lam.
2782
2783         * Configurations/Base.xcconfig:
2784
2785 2020-03-10  Devin Rousso  <drousso@apple.com>
2786
2787         REGRESSION(r253759): Web Inspector: Audits: results folder doesn't get selected by pressing Arrow Down key
2788         https://bugs.webkit.org/show_bug.cgi?id=208679
2789         <rdar://problem/60108942>
2790
2791         Reviewed by Timothy Hatcher.
2792
2793         * UserInterface/Views/AuditNavigationSidebarPanel.js:
2794         (WI.AuditNavigationSidebarPanel.prototype.initialLayout):
2795         (WI.AuditNavigationSidebarPanel.prototype._handleAuditManagerEditingChanged):
2796         We do actually want to prevent repeat selection, as we may end up attempting to select the
2797         same `WI.TreeElement` twice due to the nature of `WI.SelectionController`, which would call
2798         through to `WI.NavigationSidebarPanel.prototype.showDefaultContentView()` which deselects
2799         any selected `WI.TreeElement`. Reselecting the previously selected `WI.TreeElement` when
2800         exiting edit mode is much more of a special case than any of the ways for moving selection
2801         to a `WI.FolderTreeElement`, so add logic just for that case instead of affecting the entire
2802         `WI.TreeOutline`. When restoring the selection after leaving edit mode, if the currently
2803         selected `WI.TreeElement` was also the previously selected `WI.TreeElement`, deselect and
2804         reselect it so we're "reset" back to a fresh state.
2805
2806 2020-03-06  Nikita Vasilyev  <nvasilyev@apple.com>
2807
2808         Web Inspector: AXI: no way to expand/collapse sidebar sections with Tab navigation
2809         https://bugs.webkit.org/show_bug.cgi?id=208562
2810         <rdar://problem/60028941>
2811
2812         Reviewed by Devin Rousso.
2813
2814         * UserInterface/Views/DetailsSection.css:
2815         (.details-section > .header):
2816         (.details-section > .header::before):
2817         Increase the height of the clickble area so it matches the height
2818         of the header section.
2819
2820         (.details-section .header:focus):
2821         (.details-section .header:focus::before):
2822         Adjust the focus ring around the expand/collapse triangle so it has rounded corners.
2823
2824         * UserInterface/Views/DetailsSection.js:
2825         (WI.DetailsSection):
2826         (WI.DetailsSection.prototype._headerElementClicked):
2827         (WI.DetailsSection.prototype._headerElementMouseDown):
2828         (WI.DetailsSection.prototype._headerElementKeyPress):
2829
2830 2020-03-06  Nikita Vasilyev  <nvasilyev@apple.com>
2831
2832         Web Inspector: AXI: scope bars should be focusable when navigating by pressing Tab
2833         https://bugs.webkit.org/show_bug.cgi?id=208277
2834         <rdar://problem/59828111>
2835
2836         Reviewed by Devin Rousso.
2837
2838         Make resource type filter in the Network tab and message type filter in the Console tab focusable.
2839
2840         * UserInterface/Views/AuditTestGroupContentView.css:
2841         (.content-view.audit-test-group > header > nav):
2842         (.content-view.audit-test-group > header > nav > .scope-bar):
2843         Prevent outline of the focused scope bar item from clipping.
2844
2845         * UserInterface/Views/ScopeBar.css:
2846         (.scope-bar > li:focus):
2847         (.scope-bar > li:focus::after,):
2848         * UserInterface/Views/ScopeBar.js:
2849         (WI.ScopeBar):
2850         (WI.ScopeBar.prototype._handleKeyDown):
2851         Make Arrow Left an Arrow Right keys move focus within the scope bar.
2852         This matches the behavior of macOS radio buttons.
2853
2854         * UserInterface/Views/ScopeBarItem.js:
2855         (WI.ScopeBarItem.prototype.get scopeBar):
2856         (WI.ScopeBarItem.prototype.set scopeBar):
2857         (WI.ScopeBarItem.prototype.toggle):
2858         (WI.ScopeBarItem.prototype._updateSelected):
2859         (WI.ScopeBarItem.prototype._handleMouseDown):
2860
2861         (WI.ScopeBarItem.prototype._handleKeyDown):
2862         Allow to toggle focused scope bar item by pressing Space or Enter.
2863
2864 2020-03-06  Jon Davis  <jond@apple.com>
2865
2866         Fixed missing icons for WI.ThreadTreeElement and selected Heap Snapshots
2867         https://bugs.webkit.org/show_bug.cgi?id=208719
2868
2869         Reviewed by Devin Rousso.
2870
2871         * UserInterface/Images/InstrumentIcons.svg: Removed.
2872         * UserInterface/Images/TypeIcons.svg:
2873         * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.css:
2874         (.timeline-overview-graph.heap-allocations > img.snapshot.selected):
2875         * UserInterface/Views/NetworkTableContentView.css:
2876         (.network-table > .table .cell.dom-node.name .icon):
2877         * UserInterface/Views/SourcesNavigationSidebarPanel.css:
2878         (.sidebar > .panel.navigation.sources > .content > .breakpoints-container .tree-outline .item.event-target-window .icon):
2879         (@media (prefers-color-scheme: dark) .sidebar > .panel.navigation.sources > .content > .breakpoints-container .tree-outline .item.event-target-window .icon):
2880         * UserInterface/Views/ThreadTreeElement.css:
2881         (.tree-outline > .item.thread .icon):
2882         (.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
2883         (@media (prefers-color-scheme: dark) .tree-outline > .item.thread .icon):
2884         (@media (prefers-color-scheme: dark) .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
2885         * UserInterface/Views/TimelineIcons.css:
2886         (.network-icon .icon):
2887         (.script-icon .icon):
2888         (.cpu-icon .icon):
2889         (.memory-icon .icon):
2890         (.heap-allocations-icon .icon):
2891         (.layout-icon .icon):
2892         (.rendering-frame-icon .icon):
2893         (.media-icon .icon):
2894         (@media (prefers-color-scheme: dark) .network-icon .icon):
2895         (@media (prefers-color-scheme: dark) .script-icon .icon):
2896         (@media (prefers-color-scheme: dark) .cpu-icon .icon):
2897         (@media (prefers-color-scheme: dark) .memory-icon .icon):
2898         (@media (prefers-color-scheme: dark) .heap-allocations-icon .icon):
2899         (@media (prefers-color-scheme: dark) .layout-icon .icon):
2900         (@media (prefers-color-scheme: dark) .rendering-frame-icon .icon):
2901         (@media (prefers-color-scheme: dark) .media-icon .icon):
2902
2903 2020-03-05  Nikita Vasilyev  <nvasilyev@apple.com>
2904
2905         Web Inspector: AXI: annotate tab panels
2906         https://bugs.webkit.org/show_bug.cgi?id=208542
2907
2908         Reviewed by Devin Rousso.
2909
2910         * Localizations/en.lproj/localizedStrings.js:
2911         * UserInterface/Base/Main.js:
2912         Remove `role=main` since it was providing very generic and not useful description to VoiceOver.
2913
2914 2020-03-05  Nikita Vasilyev  <nvasilyev@apple.com>
2915
2916         Web Inspector: AXI: can't leave Styles and Computed panels by pressing Tab
2917         https://bugs.webkit.org/show_bug.cgi?id=208549
2918         <rdar://problem/60020149>
2919
2920         Reviewed by Devin Rousso.
2921
2922         Remove focus cycling inside of the Styles and Computed panels.
2923
2924         * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
2925         (WI.GeneralStyleDetailsSidebarPanel.prototype._handleForcedPseudoClassCheckboxKeydown):
2926         (WI.GeneralStyleDetailsSidebarPanel.prototype._handleFilterBarInputFieldKeyDown):
2927
2928 2020-03-04  Devin Rousso  <drousso@apple.com>
2929
2930         Web Inspector: the execution context picker is shown on pages with only one execution context if there are internal execution contexts
2931         https://bugs.webkit.org/show_bug.cgi?id=208502
2932
2933         Reviewed by Timothy Hatcher.
2934
2935         * UserInterface/Views/QuickConsole.js:
2936         (WI.QuickConsole.prototype._updateActiveExecutionContextDisplay):
2937         (WI.QuickConsole.prototype._handleEngineeringShowInternalExecutionContextsSettingChanged):
2938
2939 2020-03-04  Devin Rousso  <drousso@apple.com>
2940
2941         Web Inspector: REGRESSION(?): Elements: unable to edit a tag name more than once
2942         https://bugs.webkit.org/show_bug.cgi?id=208586
2943
2944         Reviewed by Timothy Hatcher.
2945
2946         * UserInterface/Views/DOMTreeElement.js:
2947         (WI.DOMTreeElement.prototype._insertInLastAttributePosition):
2948         When inserting a new attribute, don't wipe out the existing DOM structure, which is required
2949         in order for tag name editing to work (specifically having a `.html-tag-name` node).
2950
2951 2020-03-03  Devin Rousso  <drousso@apple.com>
2952
2953         Web Inspector: re-add `InspectorFrontendHost` support for moving the inspected window
2954         https://bugs.webkit.org/show_bug.cgi?id=208555
2955
2956         Reviewed by Timothy Hatcher.
2957
2958         Partially revert r257759, as the design changed enough such that this code is still useful.
2959
2960         * UserInterface/Base/Main.js:
2961         (WI.loaded):
2962         (WI.updateDockedState):
2963         (WI.resizeDockedFrameMouseDown): Added.
2964         (WI.moveUndockedWindowMouseDown): Added.
2965         (WI.dockedConfigurationSupportsSplitContentBrowser):
2966         (WI._windowFocused):
2967         (WI._windowBlurred):
2968         (WI._updateDockNavigationItems):
2969         (WI._handleDockedResizerMouseDown):
2970         (WI._handleUndockedTitleAreaMouseDown):
2971         (WI._updateTabBarDividers):
2972         (WI.setLayoutDirection):
2973         Don't create tab bar navigation items for the various docking configurations if the platform
2974         doesn't support that particular configuration.
2975
2976         * UserInterface/Views/TabBar.js:
2977         (WI.TabBar):
2978         (WI.TabBar.get horizontalPadding):
2979         (WI.TabBar.prototype._handleMouseDown):
2980         (WI.TabBar.prototype._handleTabContainerMouseDown): Added.
2981         (WI.TabBar.prototype._handleTabContainerClick): Added.
2982         (WI.TabBar.prototype._handleTabContainerMouseLeave): Added.
2983         (WI.TabBar.prototype._handleTabContainerContextMenu): Added.
2984         (WI.TabBar.prototype._handleClick): Deleted.
2985         (WI.TabBar.prototype._handleMouseLeave): Deleted.
2986         (WI.TabBar.prototype._handleContextMenu): Deleted.
2987         * UserInterface/Views/TabBar.css:
2988         (body.docked.bottom .tab-bar > .tabs > .flexible-space):
2989         Dragging on empty space in the tab bar should adjust Web Inspector's bottom docked height.
2990
2991         * UserInterface/Views/TabBarItem.js:
2992         (WI.TabBarItem.get horizontalMargin):
2993
2994 2020-03-03  Devin Rousso  <drousso@apple.com>
2995
2996         Web Inspector: the background of the navigation items in the tab bar doesn't match when unfocusing the window
2997         https://bugs.webkit.org/show_bug.cgi?id=208538
2998
2999         Reviewed by Timothy Hatcher.
3000
3001         * UserInterface/Views/TabBar.css:
3002         (body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:nth-child(n + 3 of :not(.hidden)), body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:nth-child(2 of :not(.hidden)), body[dir=ltr]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:nth-last-child(1 of :not(.hidden))): Added.
3003         (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:nth-last-child(1 of :not(.hidden)), body[dir=rtl]:not(.docked) .tab-bar > .tabs > .item:nth-child(n + 3 of :not(.hidden)), body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:nth-child(2 of :not(.hidden)), body[dir=rtl]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected): Added.
3004         (body[dir=ltr]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=ltr]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected, body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child): Deleted.
3005         (body[dir=ltr]:not(.docked) .tab-bar > .tabs:not(.hide-border-end) > .item:last-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs > .item:not(:first-child), body[dir=rtl]:not(.docked) .tab-bar > .tabs:not(.hide-border-start) > .item:first-child, body[dir=rtl]:not(.docked) .tab-bar > .tabs.dragging-tab > .item.selected): Deleted.
3006         Use `nth-child` and `nth-last-child` instead of `:first-child` and `:last-child` now that
3007         there are `.flexible-space` elements alongside tab bar items.
3008
3009         (@media (prefers-color-scheme: dark) .tab-bar):
3010         (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar): Added.
3011         (@media (prefers-color-scheme: dark) body.docked .tab-bar): Added.
3012         (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Added.
3013         (@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
3014         Ensure completely separate styles for `background-color` and `background-image` when `.docked`
3015         vs when `:not(.docked)` so that they don't "bleed" into eachother.
3016
3017         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar):
3018         (body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar):
3019         (.tab-bar > .navigation-bar > .item.group > .item):
3020         (.tab-bar > .navigation-bar > .item.group > .item:nth-child(1 of :not(.hidden))):
3021         (.tab-bar > .navigation-bar > .item.group > .item:nth-last-child(1 of :not(.hidden))):
3022         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item):
3023         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected):
3024         (.tab-bar > .tabs.static-layout > :matches(.flexible-space, .item)):
3025         (.tab-bar > .tabs.animating.inserting-tab > .item.being-inserted):
3026         (body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected):
3027         (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected):
3028         (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs:not(.animating) > .item:not(.selected, .disabled):hover):
3029         (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item):
3030         (@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected):
3031         Drive-by: remove as many `!important` as possible to make future modification simpler.
3032
3033 2020-03-03  Jon Davis  <jond@apple.com>
3034
3035         Removed old raster icons for object types and resources
3036         https://bugs.webkit.org/show_bug.cgi?id=208458
3037
3038         Reviewed by Devin Rousso.
3039
3040         * UserInterface/Images/ApplicationCache.png: Removed.
3041         * UserInterface/Images/ApplicationCache@2x.png: Removed.
3042         * UserInterface/Images/ApplicationCacheManifest.png: Removed.
3043         * UserInterface/Images/ApplicationCacheManifest@2x.png: Removed.
3044         * UserInterface/Images/Assertion.svg: Removed.
3045         * UserInterface/Images/AuditTestCase.svg: Removed.
3046         * UserInterface/Images/AuditTestCaseResult.svg: Removed.
3047         * UserInterface/Images/AuditTestGroup.svg: Removed.
3048         * UserInterface/Images/AuditTestGroupResult.svg: Removed.
3049         * UserInterface/Images/CPUInstrument.svg: Removed.
3050         * UserInterface/Images/CallTrees.svg: Removed.
3051         * UserInterface/Images/ClippingCSS.png: Removed.
3052         * UserInterface/Images/ClippingCSS@2x.png: Removed.
3053         * UserInterface/Images/ClippingCSSLarge.png: Removed.
3054         * UserInterface/Images/ClippingCSSLarge@2x.png: Removed.
3055         * UserInterface/Images/ClippingGeneric.png: Removed.
3056         * UserInterface/Images/ClippingGeneric@2x.png: Removed.
3057         * UserInterface/Images/ClippingGenericLarge.png: Removed.
3058         * UserInterface/Images/ClippingGenericLarge@2x.png: Removed.
3059         * UserInterface/Images/ClippingJS.png: Removed.
3060         * UserInterface/Images/ClippingJS@2x.png: Removed.
3061         * UserInterface/Images/ClippingJSLarge.png: Removed.
3062         * UserInterface/Images/ClippingJSLarge@2x.png: Removed.
3063         * UserInterface/Images/Cookie.png: Removed.
3064         * UserInterface/Images/Cookie@2x.png: Removed.
3065         * UserInterface/Images/DOMBreakpointAttributeModified.svg: Removed.
3066         * UserInterface/Images/DOMBreakpointNodeRemoved.svg: Removed.
3067         * UserInterface/Images/DOMBreakpointSubtreeModified.svg: Removed.
3068         * UserInterface/Images/DOMCharacterData.svg: Removed.
3069         * UserInterface/Images/DOMComment.svg: Removed.
3070         * UserInterface/Images/DOMDocument.svg: Removed.
3071         * UserInterface/Images/DOMDocumentType.svg: Removed.
3072         * UserInterface/Images/DOMElement.svg: Removed.
3073         * UserInterface/Images/DOMNode.svg: Removed.
3074         * UserInterface/Images/DOMTextNode.svg: Removed.
3075         * UserInterface/Images/Database.png: Removed.
3076         * UserInterface/Images/Database@2x.png: Removed.
3077         * UserInterface/Images/DatabaseTable.png: Removed.
3078         * UserInterface/Images/DatabaseTable@2x.png: Removed.
3079         * UserInterface/Images/DebuggerStatement.svg: Removed.
3080         * UserInterface/Images/DocumentCSS.png: Removed.
3081         * UserInterface/Images/DocumentCSS@2x.png: Removed.
3082         * UserInterface/Images/DocumentCSSLarge.png: Removed.
3083         * UserInterface/Images/DocumentCSSLarge@2x.png: Removed.
3084         * UserInterface/Images/DocumentFont.png: Removed.
3085         * UserInterface/Images/DocumentFont@2x.png: Removed.
3086         * UserInterface/Images/DocumentFontLarge.png: Removed.
3087         * UserInterface/Images/DocumentFontLarge@2x.png: Removed.
3088         * UserInterface/Images/DocumentGL.png: Removed.
3089         * UserInterface/Images/DocumentGL@2x.png: Removed.
3090         * UserInterface/Images/DocumentGeneric.png: Removed.
3091         * UserInterface/Images/DocumentGeneric@2x.png: Removed.
3092         * UserInterface/Images/DocumentGenericLarge.png: Removed.
3093         * UserInterface/Images/DocumentGenericLarge@2x.png: Removed.
3094         * UserInterface/Images/DocumentImage.png: Removed.
3095         * UserInterface/Images/DocumentImage@2x.png: Removed.
3096         * UserInterface/Images/DocumentImageLarge.png: Removed.
3097         * UserInterface/Images/DocumentImageLarge@2x.png: Removed.
3098         * UserInterface/Images/DocumentJS.png: Removed.
3099         * UserInterface/Images/DocumentJS@2x.png: Removed.
3100         * UserInterface/Images/DocumentJSLarge.png: Removed.
3101         * UserInterface/Images/DocumentJSLarge@2x.png: Removed.
3102         * UserInterface/Images/DocumentMarkup.png: Removed.
3103         * UserInterface/Images/DocumentMarkup@2x.png: Removed.
3104         * UserInterface/Images/DocumentMarkupLarge.png: Removed.
3105         * UserInterface/Images/DocumentMarkupLarge@2x.png: Removed.
3106         * UserInterface/Images/EventBreakpointAnimationFrame.svg: Removed.
3107         * UserInterface/Images/EventBreakpointInterval.svg: Removed.
3108         * UserInterface/Images/EventBreakpointListener.svg: Removed.
3109         * UserInterface/Images/EventBreakpointTimeout.svg: Removed.
3110         * UserInterface/Images/EventListener.svg: Removed.
3111         * UserInterface/Images/Events.svg: Removed.
3112         * UserInterface/Images/Exception.svg: Removed.
3113         * UserInterface/Images/FolderGeneric.png: Removed.
3114         * UserInterface/Images/FolderGeneric@2x.png: Removed.
3115         * UserInterface/Images/Function.svg: Removed.
3116         * UserInterface/Images/HeapAllocationsInstrument.svg: Removed.
3117         * UserInterface/Images/HeapSnapshot.svg: Removed.
3118         * UserInterface/Images/HeapSnapshotDiff.svg: Removed.
3119         * UserInterface/Images/HeapSnapshotInstances.svg: Removed.
3120         * UserInterface/Images/HeapSnapshotObjectGraph.svg: Removed.
3121         * UserInterface/Images/HeapSnapshotSelected.svg: Removed.
3122         * UserInterface/Images/HeapSnapshotSummary.svg: Removed.
3123         * UserInterface/Images/LayoutInstrument.svg: Removed.
3124         * UserInterface/Images/LocalStorage.png: Removed.
3125         * UserInterface/Images/LocalStorage@2x.png: Removed.
3126         * UserInterface/Images/MediaInstrument.svg: Removed.
3127         * UserInterface/Images/MemoryInstrument.svg: Removed.
3128         * UserInterface/Images/Microtask.svg: Removed.
3129         * UserInterface/Images/Native.svg: Removed.
3130         * UserInterface/Images/NetworkInstrument.svg: Removed.
3131         * UserInterface/Images/Object.svg: Removed.
3132         * UserInterface/Images/PausedBreakpoint.svg: Removed.
3133         * UserInterface/Images/Program.svg: Removed.
3134         * UserInterface/Images/PseudoElement.svg: Removed.
3135         * UserInterface/Images/Range.svg: Removed.
3136         * UserInterface/Images/RangeLarge.svg: Removed.
3137         * UserInterface/Images/Reflection.svg: Removed.
3138         * UserInterface/Images/RenderingFrame.svg: Removed.
3139         * UserInterface/Images/RenderingFramesInstrument.svg: Removed.
3140         * UserInterface/Images/Request.svg: Removed.
3141         * UserInterface/Images/Response.svg: Removed.
3142         * UserInterface/Images/ScriptsInstrument.svg: Removed.
3143         * UserInterface/Images/SessionStorage.png: Removed.
3144         * UserInterface/Images/SessionStorage@2x.png: Removed.
3145         * UserInterface/Images/Source.svg: Removed.
3146         * UserInterface/Images/StyleRuleInheritedElement.svg: Removed.
3147         * UserInterface/Images/TailDeletedFunction.svg: Removed.
3148         * UserInterface/Images/Thread.svg: Removed.
3149         * UserInterface/Images/TimelineRecordAPI.svg: Removed.
3150         * UserInterface/Images/TimelineRecordAnimationFrame.svg: Removed.
3151         * UserInterface/Images/TimelineRecordCSSAnimation.svg: Removed.
3152         * UserInterface/Images/TimelineRecordCSSTransition.svg: Removed.
3153         * UserInterface/Images/TimelineRecordComposite.svg: Removed.
3154         * UserInterface/Images/TimelineRecordConsoleProfile.svg: Removed.
3155         * UserInterface/Images/TimelineRecordEvent.svg: Removed.
3156         * UserInterface/Images/TimelineRecordGarbageCollection.svg: Removed.
3157         * UserInterface/Images/TimelineRecordLayout.svg: Removed.
3158         * UserInterface/Images/TimelineRecordMediaElement.svg: Removed.
3159         * UserInterface/Images/TimelineRecordPaint.svg: Removed.
3160         * UserInterface/Images/TimelineRecordProbeSampled.svg: Removed.
3161         * UserInterface/Images/TimelineRecordScriptEvaluated.svg: Removed.
3162         * UserInterface/Images/TimelineRecordStyle.svg: Removed.
3163         * UserInterface/Images/TimelineRecordTimer.svg: Removed.
3164         * UserInterface/Images/TypeBigInt.svg: Removed.
3165         * UserInterface/Images/TypeBoolean.svg: Removed.
3166         * UserInterface/Images/TypeNull.svg: Removed.
3167         * UserInterface/Images/TypeNumber.svg: Removed.
3168         * UserInterface/Images/TypeObject.svg: Removed.
3169         * UserInterface/Images/TypeRegex.svg: Removed.
3170         * UserInterface/Images/TypeString.svg: Removed.
3171         * UserInterface/Images/TypeSymbol.svg: Removed.
3172         * UserInterface/Images/TypeUndefined.svg: Removed.
3173         * UserInterface/Images/URLBreakpoint.svg: Removed.
3174         * UserInterface/Images/WebSocket.png: Removed.
3175         * UserInterface/Images/WebSocket@2x.png: Removed.
3176         * UserInterface/Images/WebSocketLarge.png: Removed.
3177         * UserInterface/Images/WebSocketLarge@2x.png: Removed.
3178         * UserInterface/Images/WorkerScript.png: Removed.
3179         * UserInterface/Images/WorkerScript@2x.png: Removed.
3180         * UserInterface/Images/WorkerScriptLarge.png: Removed.
3181         * UserInterface/Images/WorkerScriptLarge@2x.png: Removed.
3182
3183 2020-03-02  Devin Rousso  <drousso@apple.com>
3184
3185         Web Inspector: visual artifacts in the corner of selected tabs when docked in dark mode
3186         https://bugs.webkit.org/show_bug.cgi?id=208498
3187
3188         Reviewed by Timothy Hatcher.
3189
3190         * UserInterface/Views/TabBar.css:
3191         (@media (prefers-color-scheme: dark) body:not(.docked) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
3192         (@media (prefers-color-scheme: dark) body.docked .tab-bar > .tabs > .item:not(.disabled).selected): Added.
3193         (@media (prefers-color-scheme: dark) body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Added.
3194         (@media (prefers-color-scheme: dark) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
3195         The `background-color` set by `body.docked .tab-bar > .tabs > .item:not(.disabled).selected`
3196         in light mode was also being applied in dark mode. When docked, don't use `background-image`
3197         and instead exclusively use `background-color` so nothing is still applied.
3198
3199 2020-03-02  Devin Rousso  <drousso@apple.com>
3200
3201         Web Inspector: Items in the toolbar take up to much vertical space
3202         https://bugs.webkit.org/show_bug.cgi?id=204627
3203         <rdar://problem/59091905>
3204
3205         Reviewed by Timothy Hatcher.
3206
3207         Merge the toolbar are and tab bar to waste less vertical space.
3208
3209         Existing toolbar buttons have been moved to a space before the tab bar, and are only shown
3210         when needed (e.g. only show the reload button when remotely inspecting).
3211
3212         If there are any console warnings/errors, an icon for each type of message is shown between
3213         the left buttons and the tabs, and each button's opacity is animated whenever a new message
3214         is added.
3215
3216         Whenever the debugger pauses, change the tab bar icon of the Sources Tab to an image that
3217         includes paused iconography to help convey the debugger's state no matter which tab is
3218         currently selected, just like the debugger dashboard.
3219
3220         The dashboard network information has been moved to the Network Tab (described below).
3221
3222         When undocked, the tab bar and all the content below it are pushed down by 22px to make room
3223         for the system close/minimize/maximize buttons and the window title.
3224
3225         * UserInterface/Base/Main.js:
3226         (WI.loaded):
3227         (WI._handleSettingsKeyboardShortcut):
3228         (WI._tryToRestorePendingTabs):
3229         (WI.isNewTabWithTypeAllowed):
3230         (WI._openDefaultTab): Deleted.
3231         (WI.showNewTabTab): Deleted.
3232         * UserInterface/Views/Main.css:
3233         (#undocked-title-area): Added.
3234         (body.docked #undocked-title-area): Added.
3235         (body.window-inactive #undocked-title-area): Added.
3236         (#main):
3237         (@keyframes tab-bar-console-item-pulse): Added.
3238         (.tab-bar > .navigation-bar :matches(.console-warnings, .console-errors):not(.disabled).pulsing): Added.
3239         (@media (prefers-color-scheme: dark) #undocked-title-area): Added.
3240         (@media (prefers-color-scheme: dark) body.window-inactive #undocked-title-area): Added.
3241         (body.docked.bottom): Deleted.
3242         (body.docked.bottom #toolbar): Deleted.
3243         (body.docked.bottom #toolbar .item:not(.flexible-space)): Deleted.
3244
3245         * UserInterface/Views/TabBar.js:
3246         (WI.TabBar):
3247         (WI.TabBar.get horizontalPadding): Added.
3248         (WI.TabBar.prototype.addNavigationItemBefore): Added.
3249         (WI.TabBar.prototype.addNavigationItemAfter): Added.
3250         (WI.TabBar.prototype.insertTabBarItem):
3251         (WI.TabBar.prototype.insertTabBarItem.animateTabs):
3252         (WI.TabBar.prototype.insertTabBarItem.removeStyles):
3253         (WI.TabBar.prototype.removeTabBarItem):
3254         (WI.TabBar.prototype.removeTabBarItem.animateTabs):
3255         (WI.TabBar.prototype.removeTabBarItem.removeStyles):
3256         (WI.TabBar.prototype.set selectedTabBarItem):
3257         (WI.TabBar.prototype.get tabCount): Added.
3258         (WI.TabBar.prototype.layout):
3259         (WI.TabBar.prototype.layout.measureItemWidth):
3260         (WI.TabBar.prototype.layout.recalculateItemWidths):
3261         (WI.TabBar.prototype.didLayoutSubtree): Added.
3262         (WI.TabBar.prototype._recordTabBarItemSizesAndPositions):
3263         (WI.TabBar.prototype._recordTabBarItemSizesAndPositions.add): Added.
3264         (WI.TabBar.prototype._applyTabBarItemSizesAndPositions):
3265         (WI.TabBar.prototype._finishExpandingTabsAfterClose):
3266         (WI.TabBar.prototype._finishExpandingTabsAfterClose.animateTabs):
3267         (WI.TabBar.prototype._finishExpandingTabsAfterClose.removeStyles):