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