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