Web Inspector: TimelineOverview clicks do not always behave as expected
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
index ec28485..76a67e4 100644 (file)
+2019-03-06  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: TimelineOverview clicks do not always behave as expected
+        https://bugs.webkit.org/show_bug.cgi?id=195319
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/TimelineRuler.js:
+        (WI.TimelineRuler.prototype._shouldIgnoreMicroMovement):
+        (WI.TimelineRuler.prototype._handleMouseDown):
+        (WI.TimelineRuler.prototype._handleMouseMove):
+        Ignore moves that haven't gone more than 4px. Once the threshold is
+        passed allow all moves. This improves the click behavior since
+        previously click would never re-dispatch if there was any movement.
+
+2019-03-06  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage Timeline - Statistics and Sources sections
+        https://bugs.webkit.org/show_bug.cgi?id=195202
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        New strings.
+
+        * UserInterface/Base/Utilities.js:
+        (Map.prototype.getOrInitialize):
+        Helper to get and if not found initialize with a value.
+
+        * UserInterface/Views/CPUTimelineView.css:
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table > tr > th):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table > tr > td.number):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table > tr > td.label):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .show-more):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .filter):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .filter:hover):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .active):
+        (.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .active + .active):
+        (@media (prefers-color-scheme: dark)):
+        Colors for the statistics sections.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView):
+        (WI.CPUTimelineView.prototype.reset):
+        (WI.CPUTimelineView.prototype.clear):
+        (WI.CPUTimelineView.prototype._clearStatistics):
+        (WI.CPUTimelineView.prototype._clearSources):
+        Updates for additional sections.
+        Include a cache of the statisiticsData so we can relayout parts of the UI and
+        avoid an entire UI update.
+
+        (WI.CPUTimelineView.prototype.initialLayout):
+        (WI.CPUTimelineView.prototype._layoutBreakdownChart):
+        (WI.CPUTimelineView.prototype._layoutStatisticsAndSources):
+        (WI.CPUTimelineView.prototype._layoutStatisticsSection.createEllipsisElement):
+        (WI.CPUTimelineView.prototype._layoutStatisticsSection):
+        (WI.CPUTimelineView.prototype._layoutSourcesSection.firstNonNativeCallFrame):
+        (WI.CPUTimelineView.prototype._layoutSourcesSection.keyForSourceCodeLocation):
+        (WI.CPUTimelineView.prototype._layoutSourcesSection.labelForLocation):
+        (WI.CPUTimelineView.prototype._layoutSourcesSection.createEllipsisElement):
+        (WI.CPUTimelineView.prototype._layoutSourcesSection):
+        Extract layouts into helper methods to avoid an enormous layout method.
+
+        (WI.CPUTimelineView.prototype._computeSamplingData.incrementTypeCount):
+        (WI.CPUTimelineView.prototype._computeSamplingData):
+        Compute additional data when going through script events.
+
+        (WI.CPUTimelineView.prototype._resetSourcesFilters):
+        (WI.CPUTimelineView.prototype._addSourcesFilter):
+        (WI.CPUTimelineView.prototype._removeSourcesFilter):
+        (WI.CPUTimelineView.prototype._updateSourcesFilters):
+        Helpers for updating the source filters.
+
+        (WI.CPUTimelineView.prototype._createTableRow):
+        (WI.CPUTimelineView.prototype._insertTableRow):
+        Helpers for creating rows in the statistics / sources tables.
+
+2019-03-06  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Simplify chart <rect>s with x/y attributes instead of transform(x, y)
+        https://bugs.webkit.org/show_bug.cgi?id=195352
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/ColumnChart.js:
+        (WI.ColumnChart.prototype.layout):
+        (WI.ColumnChart):
+        * UserInterface/Views/RangeChart.js:
+        (WI.RangeChart.prototype.layout):
+        (WI.RangeChart):
+        * UserInterface/Views/StackedColumnChart.js:
+        (WI.StackedColumnChart.prototype.layout):
+        (WI.StackedColumnChart):
+
+2019-03-06  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: CSS Changes: only show changes for the given node
+        https://bugs.webkit.org/show_bug.cgi?id=194608
+        <rdar://problem/48050206>
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Views/ChangesDetailsSidebarPanel.js:
+        (WI.ChangesDetailsSidebarPanel.prototype.inspect):
+        (WI.ChangesDetailsSidebarPanel.prototype.supportsDOMNode):
+        (WI.ChangesDetailsSidebarPanel.prototype.layout):
+        Make this panel a subclass of `WI.DOMDetailsSidebarPanel` so it has access to the selected
+        DOM node in the Elements tab.
+
+        * UserInterface/Base/Setting.js:
+        * UserInterface/Views/SettingsTabContentView.js:
+        (WI.SettingsTabContentView.prototype._createGeneralSettingsView):
+        Create new general setting for controlling this change.
+
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-03-06  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: color swatches aren't shown for valid inputs with leading/trailing whitespace
+        https://bugs.webkit.org/show_bug.cgi?id=195298
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Views/RecordingActionTreeElement.js:
+        (WI.RecordingActionTreeElement._generateDOM):
+        (WI.RecordingActionTreeElement._createSwatchForColorParameters):
+        Trim the color string since it can be an arbitrary string, seeing as it is captured before
+        the <canvas> has a chance to parse/fix it.
+
+2019-03-05  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: recordsInTimeRange sometimes does not get the expected record when includeRecordBeforeStart
+        https://bugs.webkit.org/show_bug.cgi?id=195317
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Models/Timeline.js:
+        (WI.Timeline.prototype.recordsOverlappingTimeRange):
+
+2019-03-05  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: remove event listeners once a recording is ready
+        https://bugs.webkit.org/show_bug.cgi?id=195324
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Models/Recording.js:
+        (WI.Recording):
+        (WI.Recording.prototype.async swizzle):
+        (WI.Recording.prototype.async _process):
+
+        * UserInterface/Views/RecordingActionTreeElement.js:
+        (WI.RecordingActionTreeElement):
+        (WI.RecordingActionTreeElement.prototype._handleValidityChanged):
+
+        * UserInterface/Views/CanvasSidebarPanel.js:
+        (WI.CanvasSidebarPanel.prototype.set recording):
+        (WI.CanvasSidebarPanel.prototype._handleRecordingProcessedAction):
+
+        * UserInterface/Views/RecordingContentView.js:
+        (WI.RecordingContentView.prototype.initialLayout):
+        (WI.RecordingContentView.prototype._handleRecordingProcessedAction):
+
+2019-03-05  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Attempting to select records in the bottom 16px of the timeline overview graph fails
+        https://bugs.webkit.org/show_bug.cgi?id=195318
+
+        Reviewed by Devin Rousso.
+
+        The bottom few pixels of the overview are reserved for the scroll-container
+        which may show a scrollbar if the overview needs to scroll. When the scrollbars
+        are not visible we can allow pointer events to click through the invisible
+        scroll-container and allow record selection.
+
+        * UserInterface/Views/TimelineOverview.css:
+        (.timeline-overview:not(.has-scrollbar) > .scroll-container):
+        * UserInterface/Views/TimelineOverview.js:
+        (WI.TimelineOverview.prototype._handleScrollEvent):
+        (WI.TimelineOverview.prototype._handleWheelEvent):
+        (WI.TimelineOverview._handleGestureStart):
+
+2019-03-05  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: iPod user agent UIString should have a lowercase "T"
+        https://bugs.webkit.org/show_bug.cgi?id=195312
+        <rdar://problem/48586853>
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Base/Main.js:
+        (WI._handleDeviceSettingsToolbarButtonClicked):
+
+2019-03-05  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage Timeline - Adjust sizes in timeline overview
+        https://bugs.webkit.org/show_bug.cgi?id=195313
+
+        Reviewed by Devin Rousso.
+
+        Reduce the height slightly to save some precious vertical space.
+        Also increase the size of the minimum bar height so that it doesn't
+        look like there are no events when there is low CPU.
+
+        * UserInterface/Views/CPUTimelineOverviewGraph.css:
+        (body .sidebar > .panel.navigation.timeline > .timelines-content li.item.cpu,):
+        * UserInterface/Views/CPUTimelineOverviewGraph.js:
+        (WI.CPUTimelineOverviewGraph.prototype.get height):
+        Reduce the CPU overview graph height to 60px.
+
+        (WI.CPUTimelineOverviewGraph.prototype.layout):
+        Increase the minimum size of a column bar to 4px.
+
+2019-03-04  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Reload actions from second level inspector should properly reload the inspected inspector
+        https://bugs.webkit.org/show_bug.cgi?id=195306
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Base/Main.js:
+        Provide a better reload for a Nth level inspector.
+
+        * UserInterface/Debug/Bootstrap.js:
+        (WI.runBootstrapOperations):
+        Simplify, should not need to check for InspectorFrontendHost.
+
+2019-03-04  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: MediaSource logging not initialized properly
+        https://bugs.webkit.org/show_bug.cgi?id=195307
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Controllers/ConsoleManager.js:
+        (WI.ConsoleManager.prototype.initializeLogChannels):
+        Typo caused undefined to be included and trigger assertions.
+
+2019-03-04  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: CSS: class input isn't fully centered
+        https://bugs.webkit.org/show_bug.cgi?id=195297
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
+        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
+        (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input): Deleted.
+        (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input): Deleted.
+
+2019-03-04  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Audit: show the version number in the UI
+        https://bugs.webkit.org/show_bug.cgi?id=195292
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/AuditNavigationSidebarPanel.js:
+        (WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
+        (WI.AuditNavigationSidebarPanel.prototype._updateNoAuditsPlaceholder):
+        Fix the logic for showing a placeholder when editing or with only disabled tests.
+
+        * UserInterface/Views/AuditNavigationSidebarPanel.css:
+        (.sidebar > .panel.navigation.audit > .content > .message-text-view): Added.
+        (.audit-version): Added.
+        Don't obstruct the "Edit" button when showing a placeholder.
+
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-03-04  Joseph Pecoraro  <pecoraro@apple.com>
+
+        ITMLKit Inspector: Data Bindings / Associated Data for nodes
+        https://bugs.webkit.org/show_bug.cgi?id=195290
+        <rdar://problem/48304019>
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        New title and empty message strings.
+
+        * UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
+        (.sidebar > .panel.dom-node-details .details-section.dom-node-associated-data > .content .row):
+        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
+        (WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
+        (WI.DOMNodeDetailsSidebarPanel.prototype.layout):
+        (WI.DOMNodeDetailsSidebarPanel.prototype._refreshDataBindings):
+        (WI.DOMNodeDetailsSidebarPanel.prototype._refreshAssociatedData):
+        (WI.DOMNodeDetailsSidebarPanel.prototype._attributesChanged):
+        New Node sections only enabled for ITMLKit `WI.sharedApp.hasExtraDomains`.
+
+        * UserInterface/Views/ObjectTreeView.js:
+        (WI.ObjectTreeView):
+        Provide a way, like TreeElement/View to access the ObjectTreeView from an element.
+
+2019-03-04  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: protocol error on first open
+        https://bugs.webkit.org/show_bug.cgi?id=195059
+        <rdar://problem/48407871>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Controllers/CanvasManager.js:
+        (WI.CanvasManager.prototype.initializeTarget):
+        (WI.CanvasManager.prototype.static supportsRecordingAutoCapture):
+        (WI.CanvasManager.prototype.setRecordingAutoCaptureFrameCount):
+        If targets aren't available, wait until they are and then set the auto-capture frame count.
+
+2019-03-04  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Toggling Timeline "Stop when page loads" to on should stop (immediately or soon) any active recording if already past the load event
+        https://bugs.webkit.org/show_bug.cgi?id=195239
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Controllers/TimelineManager.js:
+        (WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):
+
+2019-03-02  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Unexpectedly frequent flashing of DOM node attributes
+        https://bugs.webkit.org/show_bug.cgi?id=148049
+        <rdar://problem/22296830>
+
+        Reviewed by Joseph Pecoraro.
+
+        Save a timestamp of when the CSS animation began, so that if the attribute's node is replaced,
+        we can "resume" the CSS animation at the same point with the attribute's new node.
+
+        * UserInterface/Views/DOMTreeElement.js:
+        (WI.DOMTreeElement):
+        (WI.DOMTreeElement.prototype.attributeDidChange):
+        (WI.DOMTreeElement.prototype._buildAttributeDOM):
+        (WI.DOMTreeElement.prototype._createModifiedAnimation):
+        (WI.DOMTreeElement.prototype._markNodeChanged): Deleted.
+        (WI.DOMTreeElement.prototype._nodeChangedAnimationEnd): Deleted.
+        (WI.DOMTreeElement.prototype._fireDidChange): Deleted.
+
+2019-03-02  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Debugger: DOM, URL, and Event breakpoints don't grey out when all breakpoints are disabled
+        https://bugs.webkit.org/show_bug.cgi?id=195170
+        <rdar://problem/48478193>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/DOMBreakpointTreeElement.js:
+        (WI.DOMBreakpointTreeElement):
+        (WI.DOMBreakpointTreeElement.prototype.onattach):
+        (WI.DOMBreakpointTreeElement.prototype.ondetach):
+        (WI.DOMBreakpointTreeElement.prototype._updateStatus):
+        * UserInterface/Views/EventBreakpointTreeElement.js:
+        (WI.EventBreakpointTreeElement):
+        (WI.EventBreakpointTreeElement.prototype.onattach):
+        (WI.EventBreakpointTreeElement.prototype.ondetach):
+        (WI.EventBreakpointTreeElement.prototype._updateStatus):
+        * UserInterface/Views/URLBreakpointTreeElement.js:
+        (WI.URLBreakpointTreeElement):
+        (WI.URLBreakpointTreeElement.prototype.onattach):
+        (WI.URLBreakpointTreeElement.prototype.ondetach):
+        (WI.URLBreakpointTreeElement.prototype._updateStatus):
+        Remove the `"resolved"` class when the global "breakpoints enabled" state is changed.
+
+        * UserInterface/Controllers/DOMDebuggerManager.js:
+        (WI.DOMDebuggerManager):
+        (WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): Added.
+        (WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): Added.
+        (WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged): Added.
+        (WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
+        (WI.DOMDebuggerManager.prototype._updateURLBreakpoint):
+        (WI.DOMDebuggerManager.prototype._resolveEventBreakpoint):
+        (WI.DOMDebuggerManager.prototype._resolveURLBreakpoint):
+        (WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Deleted.
+        (WI.DOMDebuggerManager.prototype._updateURLBreakpoint.breakpointUpdated): Deleted.
+        * UserInterface/Models/DOMBreakpoint.js:
+        (WI.DOMBreakpoint):
+        (WI.DOMBreakpoint.deserialize): Added.
+        (WI.DOMBreakpoint.prototype.set disabled):
+        (WI.DOMBreakpoint.prototype.set domNodeIdentifier):
+        * UserInterface/Models/EventBreakpoint.js:
+        (WI.EventBreakpoint.deserialize): Added.
+        (WI.EventBreakpoint.prototype.set disabled):
+        (WI.EventBreakpoint.fromPayload): Deleted.
+        * UserInterface/Models/URLBreakpoint.js:
+        (WI.URLBreakpoint.deserialize): Added.
+        (WI.URLBreakpoint.prototype.set disabled):
+        * UserInterface/Views/DOMTreeContentView.js:
+        (WI.DOMTreeContentView):
+        (WI.DOMTreeContentView.prototype._handleDOMBreakpointDisabledStateChanged): Added.
+        (WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeChanged): Added.
+        * UserInterface/Views/DebuggerSidebarPanel.js:
+        (WI.DebuggerSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
+        * UserInterface/Views/SourcesNavigationSidebarPanel.js:
+        (WI.SourcesNavigationSidebarPanel):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
+        Drive-by: rename all events with the name `*DidChange` to `*Changed`.
+        Drive-by: create static `deserialize` helper functions.
+
+2019-03-02  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Sources: breakpoints should be disabled when an audit is running
+        https://bugs.webkit.org/show_bug.cgi?id=195105
+        <rdar://problem/48441373>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/SourcesNavigationSidebarPanel.js:
+        (WI.SourcesNavigationSidebarPanel):
+        (WI.SourcesNavigationSidebarPanel.prototype.closed):
+        (WI.SourcesNavigationSidebarPanel.prototype._updateTemporarilyDisabledBreakpointsButtons): Added.
+        (WI.SourcesNavigationSidebarPanel.prototype._updateBreakpointsDisabledBanner):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleAuditManagerTestScheduled): Added.
+        (WI.SourcesNavigationSidebarPanel.prototype._handleAuditManagerTestCompleted): Added.
+        * UserInterface/Views/SourcesNavigationSidebarPanel.css:
+        (.sidebar > .panel.navigation.sources > .content > .warning-banner + .warning-banner): Added.
+
+        * UserInterface/Views/DebuggerSidebarPanel.js:
+        (WI.DebuggerSidebarPanel):
+
+2019-03-02  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Debugger: don't enable breakpoints when source location changes
+        https://bugs.webkit.org/show_bug.cgi?id=195081
+        <rdar://problem/48422701>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Controllers/DebuggerManager.js:
+        (WI.DebuggerManager.prototype._breakpointDisplayLocationDidChange):
+        (WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):
+
+2019-03-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage - Energy Impact Section
+        https://bugs.webkit.org/show_bug.cgi?id=195151
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Main.html:
+        New strings and resources.
+
+        * UserInterface/Views/CPUTimelineView.css:
+        (.timeline-view.cpu > .content .subtitle > .info):
+        (@media (prefers-color-scheme: dark)):
+        (.energy-info-popover-content):
+        (.timeline-view.cpu > .content > .overview > .divider):
+        (body[dir=ltr] .timeline-view.cpu > .content > .overview > .divider):
+        (body[dir=rtl] .timeline-view.cpu > .content > .overview > .divider):
+        (.timeline-view.cpu :matches(.area-chart, .stacked-area-chart) svg > path):
+        (.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.low):
+        (.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.medium):
+        (.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.high):
+        (.timeline-view.cpu .gauge-chart:not(.empty) > svg > polygon.needle):
+        (.timeline-view.cpu .energy):
+        (.timeline-view.cpu .energy .energy-impact):
+        (.timeline-view.cpu .energy .energy-impact.low):
+        (.timeline-view.cpu .energy .energy-impact.medium):
+        (.timeline-view.cpu .energy .energy-impact.high):
+        (.timeline-view.cpu .energy .energy-impact-number):
+        Styling the chart and text for the different energy impact levels.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView.prototype.get lowEnergyValue):
+        (WI.CPUTimelineView.prototype.get highEnergyValue):
+        (WI.CPUTimelineView.prototype.initialLayout):
+        (WI.CPUTimelineView.prototype.layout):
+        (WI.CPUTimelineView.prototype._layoutEnergyChart.mapWithBias):
+        (WI.CPUTimelineView.prototype._layoutEnergyChart.valuesForGauge):
+        (WI.CPUTimelineView.prototype._layoutEnergyChart):
+        (WI.CPUTimelineView.prototype._clearEnergyImpactText):
+        New gauge chart and associated popover.
+        We do a bit of biasing of the data for each of the sections
+        in the gauge chart. Each section biases toward the cap of the
+        section so that:
+          - we encourage lower power usage (sub 3%)
+          - the gauge needle quickly moves past the low value of a range
+
+        * UserInterface/Views/GaugeChart.css: Added.
+        (.gauge-chart):
+        (body[dir=rtl] .gauge-chart):
+        (.gauge-chart > svg > path,):
+        (.gauge-chart > svg > polygon.needle):
+        (.gauge-chart.empty > svg > polygon.needle):
+        (@media (prefers-color-scheme: dark)):
+        * UserInterface/Views/GaugeChart.js: Added.
+        (WI.GaugeChart.prototype.get size):
+        (WI.GaugeChart.prototype.get segments):
+        (WI.GaugeChart.prototype.get value):
+        (WI.GaugeChart.prototype.set value):
+        (WI.GaugeChart.prototype.clear):
+        (WI.GaugeChart.prototype.initialLayout):
+        (WI.GaugeChart.prototype.layout):
+        (WI.GaugeChart.prototype._validateSegments):
+        (WI.GaugeChart.prototype._createSegmentPathData):
+        GaugeChart with variable number of sections and a
+        current value needle. It has a bit of customization
+        when drawing the arc at the start of each segment.
+
+        * UserInterface/Views/Variables.css:
+        (:root):
+        (@media (prefers-color-scheme: dark)):
+        New CPU colors for the different energy impact levels.
+
+2019-03-01  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Data grid border colors don't match accent colors
+        https://bugs.webkit.org/show_bug.cgi?id=195232
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/DataGrid.css:
+        (.data-grid:focus tr.selected td:not(:last-child)):
+        (body[dir=ltr] .data-grid:focus tr.selected td:not(:last-child)):
+        (body[dir=rtl] .data-grid:focus tr.selected td:not(:last-child)):
+
+2019-02-28  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Timelines: don't show the auto-stop UI when not inspecting a page
+        https://bugs.webkit.org/show_bug.cgi?id=195192
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView):
+        (WI.TimelineRecordingContentView.prototype.get navigationItems):
+
+2019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage: Worker thread that dies might stay at a high value forever
+        https://bugs.webkit.org/show_bug.cgi?id=195148
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (CPUTimelineView.prototype.layout):
+        Handle workers dieing or at least zeroing out between records.
+
+2019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage Timeline - Make Threads section expandable / collapsable
+        https://bugs.webkit.org/show_bug.cgi?id=195085
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Base/Setting.js:
+        New setting to save the Threads expanded/collapsed state.
+
+        * UserInterface/Views/CPUTimelineView.css:
+        (.timeline-view.cpu > .content > .details > .subtitle):
+        (.timeline-view.cpu > .content > .details > details > .subtitle.threads):
+        (.timeline-view.cpu > .content > .details > .subtitle): Deleted.
+        (.timeline-view.cpu > .content > .details > .subtitle.threads): Deleted.
+        Ensure subtitle styles apply now that one of the subtitles is inside
+        of a <details> / <summary> element.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView.prototype.initialLayout):
+        Make the Threads group a <details> / <summary> expandable / collapsed element.
+
+        * UserInterface/Views/Main.css:
+        (summary):
+        (summary::-webkit-details-marker):
+        Default styles for <summary>.
+
+2019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: View.removeSubview not removing the element properly when not parented
+        https://bugs.webkit.org/show_bug.cgi?id=195146
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/View.js:
+        (WI.View.prototype.removeSubview):
+        Since the element may not be a direct child, just use Element.prototype.remove.
+
+2019-02-28  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: Debugger: disabled breakpoint color is too dark
+        https://bugs.webkit.org/show_bug.cgi?id=195103
+        <rdar://problem/48440678>
+
+        Reviewed by Devin Rousso.
+
+        Increase the disabled breakpoint contrast, as well as the contrast between
+        disabled and auto-continue breakpoints. Disabled breakpoints stand out by
+        being somewhat brighter and less saturated. Using the same strategy for
+        auto-continue breakpoints is too subtle to provide sufficient contrast.
+
+        We can adopt the technique used by Xcode, and overlay a white triangle
+        marker on the breakpoint arrow to indicate an auto-continue breakpoint.
+
+        * UserInterface/Views/BreakpointTreeElement.css:
+        (.item.breakpoint .status > .status-image):
+        (.item.breakpoint.selected .status > .status-image.resolved):
+        Add white outline to make selected breakpoint button stand out.
+        (.item.breakpoint .status > .status-image.auto-continue::after):
+        (.item.breakpoint .status > .status-image.disabled):
+        (.item.breakpoint .status > .status-image.auto-continue): Deleted.
+
+
+        * UserInterface/Views/DOMTreeContentView.css:
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled):
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled,): Deleted.
+
+        * UserInterface/Views/TextEditor.css:
+        (.text-editor > .CodeMirror .has-breakpoint .CodeMirror-linenumber::before):
+        (.text-editor > .CodeMirror .breakpoint-auto-continue:not(.execution-line.primary) .CodeMirror-linenumber::after):
+        (.text-editor > .CodeMirror .breakpoint-disabled .CodeMirror-linenumber::before):
+        (.text-editor > .CodeMirror .breakpoint-auto-continue:not(.breakpoint-disabled) .CodeMirror-linenumber::before): Deleted.
+
+        * UserInterface/Views/Variables.css:
+        (:root):
+        Add breakpoint color variables to use across all breakpoint controls.
+        Use system colors if available, otherwise fall back to hard-coded values
+        based on sampling the default (blue) accent color on Mojave.
+
+2019-02-28  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: Control-Space should force completion
+        https://bugs.webkit.org/show_bug.cgi?id=194796
+        <rdar://problem/48180822>
+
+        Reviewed by Matt Baker.
+
+        Pressing Control-Space when editing CSS property should show completion popover,
+        even if the value is empty.
+
+        * UserInterface/Models/CSSCompletions.js:
+        (WI.CSSCompletions.prototype.startsWith):
+        Performance optimization: exit early when `prefix` is empty.
+
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
+        (WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
+        * UserInterface/Views/SpreadsheetTextField.js:
+        (WI.SpreadsheetTextField):
+        (WI.SpreadsheetTextField.prototype._handleKeyDown):
+        (WI.SpreadsheetTextField.prototype._updateCompletions):
+
+2019-02-28  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: enabling auto-capture if the frame count is empty triggers an assertion
+        https://bugs.webkit.org/show_bug.cgi?id=195060
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/CanvasOverviewContentView.js:
+        (WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
+        (WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
+        (WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureCheckedDidChange):
+
+2019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Revert -webkit-border-end changes that are unreliable
+        https://bugs.webkit.org/show_bug.cgi?id=195149
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/CPUUsageIndicatorView.css:
+        (.cpu-usage-indicator-view > .details):
+        (body[dir=ltr] .cpu-usage-indicator-view > .details):
+        (body[dir=rtl] .cpu-usage-indicator-view > .details):
+        * UserInterface/Views/CPUUsageStackedView.css:
+        (.cpu-usage-stacked-view > .details):
+        (body[dir=ltr] .cpu-usage-stacked-view > .details):
+        (body[dir=rtl] .cpu-usage-stacked-view > .details):
+        * UserInterface/Views/CPUUsageView.css:
+        (.cpu-usage-view > .details):
+        (body[dir=ltr] .cpu-usage-view > .details):
+        (body[dir=rtl] .cpu-usage-view > .details):
+        * UserInterface/Views/MemoryCategoryView.css:
+        (.memory-category-view > .details):
+        (body[dir=ltr] .memory-category-view > .details):
+        (body[dir=rtl] .memory-category-view > .details):
+
+2019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Cleanup some Chart code
+        https://bugs.webkit.org/show_bug.cgi?id=195147
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/RangeChart.js:
+        (WI.RangeChart.prototype.layout):
+        (WI.RangeChart):
+        * UserInterface/Views/StackedColumnChart.js:
+        (WI.StackedColumnChart.prototype.layout):
+        (WI.StackedColumnChart):
+
+2019-02-27  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Add a new Scanner TimelineMarker to show up when mousing over TimelineView graphs
+        https://bugs.webkit.org/show_bug.cgi?id=195079
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Base/Utilities.js:
+        (Note.prototype.enclosingNodeOrSelfWithClassInArray):
+        Helper for a set of classes.
+
+        * UserInterface/Models/TimelineMarker.js:
+        Add a new marker type, "Scanner".
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView.prototype.initialLayout):
+        (WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
+        (WI.CPUTimelineView.prototype._handleGraphMouseMove):
+        * UserInterface/Views/MemoryTimelineView.js:
+        (WI.MemoryTimelineView):
+        (WI.MemoryTimelineView.prototype._graphPositionForMouseEvent):
+        (WI.MemoryTimelineView.prototype._handleGraphMouseMove):
+        Update a scanner time when mousing over various graphs that span the entire time range.
+        These use the containing graph element because there was a single pixel between
+        adjacent graphs which would cause the scanner to flicker because the mouse event target
+        was not an svg element.
+
+        * UserInterface/Views/TimelineOverview.js:
+        (WI.TimelineOverview.prototype.hidden):
+        (WI.TimelineOverview.prototype.updateScannerTime):
+        (WI.TimelineOverview.prototype.clearScanner):
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView):
+        (WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerTimeDidChange):
+        (WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerDidClear):
+        Update the overview's ruler with scanner changes.
+
+        * UserInterface/Views/TimelineRuler.css:
+        (.timeline-ruler > .markers > .marker.scanner):
+        * UserInterface/Views/TimelineRuler.js:
+        (WI.TimelineRuler):
+        (WI.TimelineRuler.prototype.clearMarkers):
+        (WI.TimelineRuler.prototype.updateScannerTime):
+        (WI.TimelineRuler.prototype.clearScanner):
+        (WI.TimelineRuler.prototype._updateMarkers):
+        Have a special scanner marker that updates.
+
+        * UserInterface/Views/TimelineView.js:
+        New events that a TimelineView can dispatch to update the overview.
+
+        * UserInterface/Views/Variables.css:
+        (:root):
+        (@media (prefers-color-scheme: dark)):
+        Scanner marker colors.
+
+2019-02-27  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Use Element.closest for internal code
+        https://bugs.webkit.org/show_bug.cgi?id=173747
+
+        Reviewed by Joseph Pecoraro.
+
+        Replace usage of added utility functions on the `Node` prototype with the built-in
+        `Element.prototype.closest` as it's more flexible and is capable of doing the same thing.
+
+        * UserInterface/Base/Utilities.js:
+        (Node.prototype.enclosingNodeOrSelfWithClass): Deleted.
+        (Node.prototype.enclosingNodeOrSelfWithNodeNameInArray): Deleted.
+        (Node.prototype.enclosingNodeOrSelfWithNodeName): Deleted.
+        * UserInterface/Base/Main.js:
+        (WI.handlePossibleLinkClick):
+        (WI._focusedContentBrowser):
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
+        * UserInterface/Views/CompletionSuggestionsView.js:
+        (WI.CompletionSuggestionsView.prototype.set selectedIndex):
+        (WI.CompletionSuggestionsView.prototype.update):
+        (WI.CompletionSuggestionsView.prototype._itemClicked):
+        * UserInterface/Views/ConsoleGroup.js:
+        (WI.ConsoleGroup.prototype._titleClicked):
+        * UserInterface/Views/DOMTreeContentView.js:
+        (WI.DOMTreeContentView.prototype._mouseWasClicked):
+        * UserInterface/Views/DOMTreeElement.js:
+        (WI.DOMTreeElement.prototype._startEditingTarget):
+        (WI.DOMTreeElement.prototype._populateTagContextMenu):
+        * UserInterface/Views/DOMTreeOutline.js:
+        (WI.DOMTreeOutline.prototype.populateContextMenu):
+        * UserInterface/Views/DataGrid.js:
+        (WI.DataGrid.prototype._startEditing):
+        (WI.DataGrid.prototype._editingCancelled):
+        (WI.DataGrid.prototype.dataGridNodeFromNode):
+        (WI.DataGrid.prototype.dataGridNodeFromPoint):
+        (WI.DataGrid.prototype._headerCellClicked):
+        (WI.DataGrid.prototype._mouseoverColumnCollapser):
+        (WI.DataGrid.prototype._mouseoutColumnCollapser):
+        (WI.DataGrid.prototype._clickInColumnCollapser):
+        (WI.DataGrid.prototype._contextMenuInHeader):
+        (WI.DataGrid.prototype._contextMenuInDataTable):
+        * UserInterface/Views/DataGridNode.js:
+        (WI.DataGridNode.prototype.isEventWithinDisclosureTriangle):
+        * UserInterface/Views/LegacyTabBar.js:
+        (WI.LegacyTabBar.prototype._handleMouseDown):
+        (WI.LegacyTabBar.prototype._handleClick):
+        * UserInterface/Views/LogContentView.js:
+        (WI.LogContentView.prototype._handleContextMenuEvent):
+        (WI.LogContentView.prototype._mousedown):
+        (WI.LogContentView.prototype._targetInMessageCanBeSelected):
+        (WI.LogContentView.prototype._mousemove):
+        (WI.LogContentView.prototype._mouseup):
+        (WI.LogContentView.prototype._ondragstart):
+        * UserInterface/Views/NavigationBar.js:
+        (WI.NavigationBar.prototype._mouseDown):
+        (WI.NavigationBar.prototype._mouseMoved):
+        * UserInterface/Views/Popover.js:
+        (WI.Popover.prototype.handleEvent):
+        * UserInterface/Views/TabBar.js:
+        (WI.TabBar.prototype._handleMouseDown):
+        (WI.TabBar.prototype._handleClick):
+        * UserInterface/Views/Table.js:
+        (WI.Table.prototype._handleMouseDown):
+        (WI.Table.prototype._handleContextMenu):
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline.prototype.treeElementFromNode):
+
+2019-02-27  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: REGRESSION(r242118): Debugger: event breakpoints have no icon
+        https://bugs.webkit.org/show_bug.cgi?id=195119
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/EventBreakpointTreeElement.js:
+        (WI.EventBreakpointTreeElement):
+
+2019-02-27  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Dark Mode: unreadable text in bezier curve editor numeric input fields
+        https://bugs.webkit.org/show_bug.cgi?id=195018
+        <rdar://problem/48378541>
+
+        Reviewed by Matt Baker.
+
+        Simplify some styles using `-webkit-*` properties instead of `[dir=ltr]`/`[dir=rtl]` selectors.
+
+        * UserInterface/Views/BezierEditor.css:
+        (.bezier-editor):
+        (.bezier-editor > .bezier-preview):
+        (.bezier-editor > .bezier-preview-timing):
+        (.bezier-editor > .bezier-container .linear-curve):
+        (.bezier-editor > .bezier-container .bezier-curve):
+        (.bezier-editor > .bezier-container .control-line):
+        (.bezier-editor > .bezier-container .control-handle):
+        (.bezier-editor > .number-input-container):
+        (.bezier-editor > .number-input-container > input):
+        (body[dir=ltr] .bezier-editor > .bezier-preview-timing): Deleted.
+        (body[dir=rtl] .bezier-editor > .bezier-preview-timing): Deleted.
+        (body[dir=ltr] .bezier-editor > .number-input-container > input): Deleted.
+        (body[dir=rtl] .bezier-editor > .number-input-container > input): Deleted.
+        (@media (prefers-color-scheme: dark)): Deleted.
+        Remove all custom styling on any <input>s, as they look fine with their default styling.
+
+        * UserInterface/Views/SpringEditor.css:
+        (.spring-editor > .spring-preview):
+        (.spring-editor > .spring-preview > div):
+        (.spring-editor > .spring-timing > div):
+
+2019-02-27  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: popover colors don't change when transitioning to/from dark mode
+        https://bugs.webkit.org/show_bug.cgi?id=195113
+        <rdar://problem/48444188>
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Views/Popover.js:
+        (WI.Popover.prototype.dismiss):
+        (WI.Popover.prototype._addListenersIfNeeded):
+
+2019-02-26  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: Use system accent color throughout UI
+        https://bugs.webkit.org/show_bug.cgi?id=193507
+        <rdar://problem/47327971>
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Images/Breakpoint.png: Removed.
+        * UserInterface/Images/Breakpoint.svg: Added.
+        * UserInterface/Images/Breakpoint@2x.png: Removed.
+        * UserInterface/Images/BreakpointInactive.png: Removed.
+        * UserInterface/Images/BreakpointInactive@2x.png: Removed.
+        Replace breakpoint pixel art with an SVG image that can be styled in CSS.
+
+        * UserInterface/Images/CSSVariable.svg:
+        * UserInterface/Images/CubicBezier.svg:
+        * UserInterface/Images/UserInputPrompt.svg:
+        Remove fill color since it is now styled in CSS.
+
+        * UserInterface/Views/BezierEditor.css:
+        (.bezier-editor > .bezier-preview > div):
+        (@media (prefers-color-scheme: dark)):
+        (.bezier-editor > .bezier-container .control-handle):
+        (.bezier-editor > .bezier-container .control-line):
+        Use system accent color for control handles.
+
+        * UserInterface/Views/BreakpointTreeElement.css:
+        (.item.breakpoint .status > .status-image):
+        (.item.breakpoint .status > .status-image.resolved):
+        Use system accent color for breakpoint fill, with a dark outline
+        to match Xcode and make the button stand out against the selection.
+
+        * UserInterface/Views/BreakpointTreeElement.js:
+        (WI.BreakpointTreeElement.prototype._updateStatus):
+
+        * UserInterface/Views/ButtonNavigationItem.css:
+        (.navigation-bar .item.button > .glyph):
+
+        * UserInterface/Views/ConsolePrompt.js:
+        (WI.ConsolePrompt):
+
+        * UserInterface/Views/DOMBreakpointTreeElement.js:
+        * UserInterface/Views/DOMTreeContentView.css:
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled,):
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
+        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled): Deleted.
+        (.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint): Deleted.
+        (.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint.disabled): Deleted.
+
+        * UserInterface/Views/DOMTreeOutline.css:
+        (.tree-outline.dom li.selected .selection-area):
+        (.tree-outline.dom li.elements-drag-over .selection-area):
+        (.tree-outline.dom:focus li:matches(.selected, .hovered) .selection-area):
+        (.tree-outline.dom li.hovered:not(.selected) .selection-area):
+        (.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
+        Use the system accent color for the "pseudo-class enabled" marker.
+        (@media (prefers-color-scheme: dark)):
+        (.tree-outline.dom:focus li.selected .selection-area): Deleted.
+        Use --selected-background-color for selection and hover styles, which is
+        set to the system highlight color if available.
+
+        * UserInterface/Views/InlineSwatch.css:
+        (.inline-swatch:matches(.bezier, .spring, .variable)):
+        (.inline-swatch:matches(.bezier, .spring)): Deleted.
+        (.inline-swatch.variable): Deleted.
+
+        * UserInterface/Views/InlineSwatch.js:
+        (WI.InlineSwatch):
+
+        * UserInterface/Views/NetworkDetailView.css:
+        (.network .network-detail .navigation-bar .item.radio.button.text-only:before):
+        (.network .network-detail .navigation-bar .item.radio.button.text-only.selected):
+        (@media (prefers-color-scheme: dark)):
+        (.network-detail .item.close > .glyph):
+
+        * UserInterface/Views/QuickConsole.css:
+        (.quick-console > .console-prompt > .glyph):
+        (.quick-console > .console-prompt::before): Deleted.
+
+        * UserInterface/Views/RadioButtonNavigationItem.css:
+        (.navigation-bar .item.radio.button.text-only):
+        (.navigation-bar .item.radio.button.text-only::before):
+        (.navigation-bar .item.radio.button.text-only:matches(.selected, :hover)):
+        (.navigation-bar .item.radio.button.text-only:matches(.selected, :hover)::before):
+        (.navigation-bar .item.radio.button.text-only:not(.selected):hover::before):
+        (.navigation-bar .item.radio.button.text-only.selected:active::before):
+        (.navigation-bar .item.radio.button.text-only:hover): Deleted.
+        (.navigation-bar .item.radio.button.text-only.selected): Deleted.
+        (.navigation-bar .item.radio.button.text-only:active): Deleted.
+        (.navigation-bar .item.radio.button.text-only.selected:active): Deleted.
+        Use system accent color for selection and hover styles. Since it isn't
+        yet possible to derive new colors from the accent color in CSS, fake it
+        with a ::before pseudo-element that can have have `filter` or `opacity`
+        effects applied to it without altering the button text color.
+
+        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
+        (.timeline-overview-graph.rendering-frame > .frame-marker):
+        Use system accent color for selected frame marker.
+
+        * UserInterface/Views/ScopeBar.css:
+        (.scope-bar > li):
+        (.scope-bar > li::before):
+        (.scope-bar.default-item-selected > li.multiple.selected::before):
+        (.scope-bar > li:matches(.selected, :hover)):
+        (.scope-bar > li:matches(.selected, :hover)::before):
+        (.scope-bar > li:not(.selected):hover::before):
+        (.scope-bar > li.selected:active::before):
+        (.scope-bar > li:hover): Deleted.
+        (.scope-bar > li.selected): Deleted.
+        (.scope-bar > li:active): Deleted.
+        (.scope-bar > li.selected:active): Deleted.
+
+        * UserInterface/Views/SettingsTabContentView.css:
+        (.content-view.settings .navigation-bar .item.radio.button.text-only:before):
+
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
+        (.spreadsheet-style-declaration-editor):
+        (@media (prefers-color-scheme: dark)):
+
+        * UserInterface/Views/TextEditor.css:
+        (.text-editor > .CodeMirror .has-breakpoint .CodeMirror-linenumber::before):
+        (.text-editor > .CodeMirror .breakpoint-resolved .CodeMirror-linenumber::before):
+        (.text-editor > .CodeMirror .has-breakpoint.multiple-breakpoints .CodeMirror-linenumber::before):
+        (@keyframes text-editor-highlight-fadeout):
+        (@keyframes text-editor-hovered-expression-highlight-fadeout):
+        Replace breakpoint pixel art with a solid color (the system accent
+        color) clipped to the shape of a breakpoint.
+
+        * UserInterface/Views/TimelineRecordFrame.css:
+        (.timeline-record-frame.selected):
+
+        * UserInterface/Views/URLBreakpointTreeElement.js:
+
+        * UserInterface/Views/Variables.css:
+        (:root):
+        (body.window-inactive):
+        (@media (prefers-color-scheme: dark)):
+        (body.mac-platform:not(.sierra, .high-sierra)):
+        Add custom property overrides for system colors where supported.
+
+2019-02-26  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Search: no results when opening to Search tab
+        https://bugs.webkit.org/show_bug.cgi?id=195058
+        <rdar://problem/48407699>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/SearchSidebarPanel.js:
+        (WI.SearchSidebarPanel.prototype.performSearch):
+        If targets aren't available, wait until they are and then perform the search.
+
+        * UserInterface/Base/Main.js:
+        (WI.targetsAvailable): Added.
+        Expose getter for indicating whether targets are available.
+
+2019-02-26  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage Timeline - Main Thread Indicator
+        https://bugs.webkit.org/show_bug.cgi?id=194972
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Main.html:
+        * UserInterface/Base/Utilities.js:
+        (value):
+        The existing enclosingNode doesn't work for SVG because its names
+        are lowercase. Add a simplified version for the svg case.
+
+        * UserInterface/Views/RangeChart.js: Added.
+        (WI.RangeChart):
+        (WI.RangeChart.prototype.get size):
+        (WI.RangeChart.prototype.set size):
+        (WI.RangeChart.prototype.addRange):
+        (WI.RangeChart.prototype.clear):
+        (WI.RangeChart.prototype.layout):
+        A new chart that draws rects for given ranges.
+
+        * UserInterface/Models/Timeline.js:
+        (WI.Timeline.prototype.recordsOverlappingTimeRange):
+        Helper to specifically get records touching a range. Useful
+        for when we have a single pixel spanning (startTime -> endTime)
+        and we want to find records in that pixel.
+
+        * UserInterface/Views/CPUTimelineView.css:
+        (.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart rect):
+        (.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-script):
+        (.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-style):
+        (.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-layout):
+        (.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-paint):
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView.prototype.get indicatorViewHeight):
+        (WI.CPUTimelineView.prototype.clear):
+        (WI.CPUTimelineView.prototype.get scrollableElements):
+        (WI.CPUTimelineView.prototype.initialLayout):
+        (WI.CPUTimelineView.prototype.layout):
+        (WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
+        (WI.CPUTimelineView.prototype._handleIndicatorClick):
+        (WI.CPUTimelineView.prototype._attemptSelectIndicatatorTimelineRecord):
+        (WI.CPUTimelineView.prototype._selectTimelineRecord):
+        Place the Main Thread Indicator view beneath the big graph.
+        Clicking inside it selects records in the Timeline Overview.
+
+        * UserInterface/Views/CPUUsageIndicatorView.css: Added.
+        (.cpu-usage-indicator-view):
+        (.cpu-usage-indicator-view > .details):
+        (body[dir=ltr] .cpu-usage-indicator-view > .details):
+        (body[dir=rtl] .cpu-usage-indicator-view > .details):
+        (body[dir=rtl] .cpu-usage-indicator-view > .graph):
+        (.cpu-usage-indicator-view > .graph):
+        (.cpu-usage-indicator-view > .graph,):
+        * UserInterface/Views/CPUUsageIndicatorView.js: Added.
+        (WI.CPUUsageIndicatorView):
+        (WI.CPUUsageIndicatorView.prototype.get chart):
+        (WI.CPUUsageIndicatorView.prototype.clear):
+        (WI.CPUUsageIndicatorView.prototype.updateChart):
+        Converts the CPU samples data into a RangeChart. It works to coalesce
+        many samples of the same type into a single range to reduce total ranges.
+
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView):
+        (WI.TimelineRecordingContentView.prototype._recordSelected):
+        (WI.TimelineRecordingContentView.prototype._recordWasSelected):
+        (WI.TimelineRecordingContentView.prototype._selectRecordInTimelineOverview):
+        (WI.TimelineRecordingContentView.prototype._selectRecordInTimelineView):
+        * UserInterface/Views/TimelineView.js:
+        Add a path for a TimelineView to dispatch a record selected event and cause
+        have the TimelineRecordingContentView react to it by updating the timeline
+        overview and relevent timeline view.
+
+2019-02-26  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: navigation sidebar says "No Search Results" when a slow search is in progress
+        https://bugs.webkit.org/show_bug.cgi?id=170631
+        <rdar://problem/29473874>
+
+        Reviewed by Joseph Pecoraro.
+
+        Keep a count of all the backend commands (increment when firing, decrement when a result is
+        sent back to the frontend). Once the count comes back to `0`, attempt to show the "No Results"
+        placeholder, since we will have finished searching at that point. Since commands can be called
+        as a result of other commands, using `Promise.all` isn't possible.
+
+        * UserInterface/Views/SearchSidebarPanel.js:
+        (WI.SearchSidebarPanel.prototype.performSearch):
+        (WI.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholderSoon): Deleted.
+        (WI.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholder): Deleted.
+        Drive-by: replace `bind` calls with arrow functions, and use for-of loops.
+
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-26  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: if no auto-capture value is specified, don't force the input to have "0" as the value
+        https://bugs.webkit.org/show_bug.cgi?id=194950
+        <rdar://problem/48276798>
+
+        Reviewed by Joseph Pecoraro.
+
+        Create a getter/setter for the value of the auto-capture frame count <input> so that all
+        code follows the same path.
+
+        If the <input> currently has no content and the frame count is 0, only set the placeholder.
+
+        * UserInterface/Views/CanvasOverviewContentView.js:
+        (WI.CanvasOverviewContentView):
+        (WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
+        (WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
+        (WI.CanvasOverviewContentView.prototype.get _recordingAutoCaptureFrameCountInputElementValue): Added.
+        (WI.CanvasOverviewContentView.prototype.set _recordingAutoCaptureFrameCountInputElementValue): Added.
+        (WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize):
+        (WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureFrameCountChanged):
+
+2019-02-26  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Console: dragging a selection outside the selected element clears the selection
+        https://bugs.webkit.org/show_bug.cgi?id=194660
+        <rdar://problem/46719239>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/LogContentView.js:
+        (WI.LogContentView.prototype._mousemove):
+        Don't clear the selection if the target of the "mousemove" is outside of the view.
+
+        (WI.LogContentView.prototype._updateMessagesSelection):
+        Drive-by: clear the saved selected messages when we're just selecting a single message.
+
+2019-02-25  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Rename LineChart to AreaChart
+        https://bugs.webkit.org/show_bug.cgi?id=195038
+
+        Rubber-stamped by Matt Baker.
+
+        * UserInterface/Main.html:
+        New file names.
+
+        * UserInterface/Views/AreaChart.js: Renamed from Source/WebInspectorUI/UserInterface/Views/LineChart.js.
+        * UserInterface/Views/StackedAreaChart.js: Renamed from Source/WebInspectorUI/UserInterface/Views/StackedLineChart.js.
+        Renamed.
+
+        * UserInterface/Views/CPUTimelineView.css:
+        * UserInterface/Views/CPUUsageStackedView.css:
+        * UserInterface/Views/CPUUsageStackedView.js:
+        * UserInterface/Views/CPUUsageView.css:
+        * UserInterface/Views/CPUUsageView.js:
+        * UserInterface/Views/LegacyCPUTimelineView.css:
+        * UserInterface/Views/MemoryCategoryView.css:
+        * UserInterface/Views/MemoryCategoryView.js:
+        * UserInterface/Views/MemoryTimelineOverviewGraph.css:
+        Update references.
+
+2019-02-25  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: hovering a node inside an object preview should highlight it
+        https://bugs.webkit.org/show_bug.cgi?id=194862
+        <rdar://problem/48246433>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/FormattedValue.js:
+        (WI.FormattedValue.createElementForNodePreview):
+        When provided a way to access the `WI.RemoteObject` for the given preview, add various mouse
+        event listeners that highlight the corresponding DOM node.
+
+        * UserInterface/Views/ObjectPreviewView.js:
+        (WI.ObjectPreviewView):
+        (WI.ObjectPreviewView.prototype._initTitleElement):
+        (WI.ObjectPreviewView.prototype._appendPropertyPreviews):
+        (WI.ObjectPreviewView.prototype._appendValuePreview):
+        Implement various ways of getting the `WI.RemoteObject` for a given preview.
+         - When the preview is for the actual `WI.RemoteObject`, simply return it
+         - If the preview is a property of the main object, get the `WI.RemoteObject` for that property
+
+        * UserInterface/Views/ObjectTreeView.js:
+        (WI.ObjectTreeView):
+        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
+        (WI.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
+        Pass the `WI.RemoteObject` to the preview so that it can utilize it.
+
+        * UserInterface/Controllers/ConsoleManager.js:
+        (WI.ConsoleManager):
+        (WI.ConsoleManager.prototype.releaseRemoteObjectWithConsoleClear): Added.
+        (WI.ConsoleManager.prototype.messagesCleared): Added.
+
+2019-02-25  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: CPU Usage Timeline - Thread Breakdown
+        https://bugs.webkit.org/show_bug.cgi?id=194788
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Main.html:
+        New strings and files.
+
+        * UserInterface/Views/Variables.css:
+        (:root):
+        New colors for cpu threads / activity breakdown.
+
+        * UserInterface/Models/CPUTimelineRecord.js:
+        (WI.CPUTimelineRecord.prototype.get workers):
+        (WI.CPUTimelineRecord):
+        Distinguish the workers in a CPU timeline record.
+
+        * UserInterface/Views/CPUTimelineOverviewGraph.js:
+        (WI.CPUTimelineOverviewGraph):
+        (WI.CPUTimelineOverviewGraph.prototype.layout):
+        * UserInterface/Views/CPUTimelineOverviewGraph.css:
+        (.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect):
+        (.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.main-thread-usage):
+        (.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.worker-thread-usage):
+        (.timeline-overview-graph.cpu > .column-chart > svg > rect):
+        Stacked column chart for CPU in the overview graph.
+
+        * UserInterface/Views/CPUTimelineView.css:
+        (.timeline-view.cpu > .content > .overview):
+        (.timeline-view.cpu > .content > .details > .subtitle.threads):
+        (.timeline-view.cpu > .content > .overview > .chart):
+        (.timeline-view.cpu > .content > .overview > .chart > .subtitle):
+        (.timeline-view.cpu > .content > .overview > .chart > .container):
+        (.timeline-view.cpu > .content > .overview .samples,):
+        (.timeline-view.cpu .legend):
+        (.timeline-view.cpu .legend .row):
+        (.timeline-view.cpu .legend .row + .row):
+        (.timeline-view.cpu .legend .swatch):
+        (.timeline-view.cpu .legend > .row > .swatch.sample-type-idle):
+        (.timeline-view.cpu .legend > .row > .swatch.sample-type-script):
+        (.timeline-view.cpu .legend > .row > .swatch.sample-type-style):
+        (.timeline-view.cpu .legend > .row > .swatch.sample-type-layout):
+        (.timeline-view.cpu .legend > .row > .swatch.sample-type-paint):
+        (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-idle):
+        (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-script):
+        (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-style):
+        (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-layout):
+        (.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-paint):
+        (.timeline-view.cpu svg > path):
+        (.timeline-view.cpu .main-thread svg > path,):
+        (.timeline-view.cpu .worker-thread svg > path,):
+        (.timeline-view.cpu .cpu-usage-view.empty):
+        (.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers):
+        (.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers > div):
+        (.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers > div > .label):
+        (.timeline-view.cpu > .content): Deleted.
+        (.cpu-usage-view .line-chart > svg > path): Deleted.
+        (.timeline-view.cpu .legend > .row > .swatch.current): Deleted.
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView):
+        (WI.CPUTimelineView.displayNameForSampleType):
+        (WI.CPUTimelineView.prototype.shown):
+        (WI.CPUTimelineView.prototype.clear.clearUsageView):
+        (WI.CPUTimelineView.prototype.clear):
+        (WI.CPUTimelineView.prototype.initialLayout.createChartContainer):
+        (WI.CPUTimelineView.prototype.initialLayout.appendLegendRow):
+        (WI.CPUTimelineView.prototype.initialLayout):
+        (WI.CPUTimelineView.prototype.layout.removeGreaterThan):
+        (WI.CPUTimelineView.prototype.layout):
+        (WI.CPUTimelineView.prototype.layout.layoutView):
+        (WI.CPUTimelineView.prototype.layout.yScale):
+        (WI.CPUTimelineView.prototype._computeSamplingData.markRecordEntries):
+        (WI.CPUTimelineView.prototype._computeSamplingData):
+        (WI.CPUTimelineView.prototype._removeWorkerThreadViews):
+        (WI.CPUTimelineView.prototype._clearBreakdownLegend):
+        (WI.CPUTimelineView.prototype.layout.xScale): Deleted.
+        Line charts and Circle Chart for threads and breakdowns.
+
+        * UserInterface/Views/CPUUsageStackedView.css:
+        (.cpu-usage-stacked-view):
+        (.cpu-usage-stacked-view > .details):
+        (body[dir=ltr] .cpu-usage-stacked-view > .details):
+        (body[dir=rtl] .cpu-usage-stacked-view > .details):
+        (.cpu-usage-stacked-view > .details > .name):
+        (body[dir=rtl] .cpu-usage-stacked-view > .graph):
+        (.cpu-usage-stacked-view > .graph):
+        (.cpu-usage-stacked-view > .graph,):
+        * UserInterface/Views/CPUUsageStackedView.js:
+        (WI.CPUUsageStackedView):
+        (WI.CPUUsageStackedView.prototype.get chart):
+        (WI.CPUUsageStackedView.prototype.clear):
+        (WI.CPUUsageStackedView.prototype.updateChart):
+        (WI.CPUUsageStackedView.prototype._updateDetails):
+        Same as CPUUsageView except Stacked for the total.
+
+        * UserInterface/Views/CPUUsageView.css:
+        (.cpu-usage-view):
+        (.cpu-usage-view > .details):
+        (.cpu-usage-view > .details > .name):
+        (.cpu-usage-view > .graph):
+        * UserInterface/Views/CPUUsageView.js:
+        (WI.CPUUsageView):
+        (WI.CPUUsageView.prototype.get chart):
+        (WI.CPUUsageView.prototype.clear):
+        (WI.CPUUsageView.prototype.updateChart):
+        (WI.CPUUsageView.prototype._updateDetails):
+        Slight modifications for the new UI.
+
+        * UserInterface/Views/LegacyCPUTimelineView.css:
+        (.timeline-view.legacy-cpu .cpu-usage-view .line-chart > svg > path):
+        * UserInterface/Views/LegacyCPUTimelineView.js:
+        (WI.LegacyCPUTimelineView.prototype.layout):
+        Update API calls in the legacy view for minor changes.
+
+        * UserInterface/Views/MemoryCategoryView.css:
+        (.memory-category-view > .details):
+        (.memory-category-view > .details > .name):
+        * UserInterface/Views/MemoryTimelineOverviewGraph.js:
+        (WI.MemoryTimelineOverviewGraph.prototype.layout):
+        * UserInterface/Views/MemoryTimelineView.css:
+        (body .timeline-view.memory):
+        (.timeline-view.memory): Deleted.
+        Improvements ported from the CPU timeline views.
+
+        * UserInterface/Views/StackedColumnChart.js: Added.
+        (WI.StackedColumnChart):
+        (WI.StackedColumnChart.prototype.get size):
+        (WI.StackedColumnChart.prototype.set size):
+        (WI.StackedColumnChart.prototype.initializeSections):
+        (WI.StackedColumnChart.prototype.addColumnSet):
+        (WI.StackedColumnChart.prototype.clear):
+        (WI.StackedColumnChart.prototype.layout):
+        A stacked column chart implementation.
+
+        * UserInterface/Views/View.js:
+        (WI.View.prototype.removeUnparentedSubview):
+        Add a way to remove a subview that had its `element` moved
+        someplace other than a direct child of our element.
+
+2019-02-25  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Dark Mode: Network Overview Graph segments have distracting white box shadow
+        https://bugs.webkit.org/show_bug.cgi?id=194966
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/Variables.css:
+        (@media (prefers-color-scheme: dark)):
+        Make global timeline even/odd colors where odd is the default content background
+        color and even is slightly different. These were used in multiple places.
+
+        * UserInterface/Views/CPUTimelineOverviewGraph.css:
+        (.timeline-overview-graph.cpu > .legend):
+        (.timeline-overview-graph.cpu:nth-child(even) > .legend):
+        (@media (prefers-color-scheme: dark)): Deleted.
+        * UserInterface/Views/MemoryTimelineOverviewGraph.css:
+        (.timeline-overview-graph.memory > .legend):
+        (.timeline-overview-graph.memory:nth-child(even) > .legend):
+        (@media (prefers-color-scheme: dark)): Deleted.
+        * UserInterface/Views/NetworkTimelineOverviewGraph.css:
+        (.timeline-overview-graph.network > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
+        (.timeline-overview-graph.network:nth-child(even) > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
+        Use the variable colors now and eliminate dark mode blocks.
+
+2019-02-25  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: Command-/ should toggle edited property
+        https://bugs.webkit.org/show_bug.cgi?id=194967
+        <rdar://problem/48329852>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Models/CSSProperty.js:
+        (WI.CSSProperty.prototype.commentOut):
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
+        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertySelect):
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype.update):
+        (WI.SpreadsheetStyleProperty.prototype._toggle):
+        (WI.SpreadsheetStyleProperty.prototype._select):
+
+2019-02-25  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: REGRESSION(r242018): Timelines shows no results
+        https://bugs.webkit.org/show_bug.cgi?id=195017
+
+        Reviewed by Joseph Pecoraro.
+
+        `simpleGlobStringToRegExp` can return `null` if the provided search query is an empty string.
+
+        * UserInterface/Base/SearchUtilities.js:
+        (WI.SearchUtilities.prototype.regExpForString):
+        Add assertions that the provided search query is a valid non-empty string.
+
+        * UserInterface/Views/DataGrid.js:
+        (WI.DataGrid.prototype._updateFilter):
+        If the search query is empty, don't attempt to create a `RegExp` for it.
+
+2019-02-25  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: REGRESSION: TreeElement or Table row selected using the keyboard should always be revealed
+        https://bugs.webkit.org/show_bug.cgi?id=194918
+        <rdar://problem/48289314>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/Table.js:
+        (WI.Table.prototype.selectionControllerSelectionDidChange):
+
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline.prototype._treeKeyDown):
+
+2019-02-25  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: [META] Merge Resources and Debugger into a single Sources tab
+        https://bugs.webkit.org/show_bug.cgi?id=183420
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/SourcesNavigationSidebarPanel.js: Added.
+        (WI.SourcesNavigationSidebarPanel):
+        (WI.SourcesNavigationSidebarPanel.shouldPlaceResourcesAtTopLevel):
+        (WI.SourcesNavigationSidebarPanel.prototype.get minimumWidth):
+        (WI.SourcesNavigationSidebarPanel.prototype.closed):
+        (WI.SourcesNavigationSidebarPanel.prototype.showDefaultContentView):
+        (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
+        (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
+        (WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject):
+        (WI.SourcesNavigationSidebarPanel.prototype.resetFilter):
+        (WI.SourcesNavigationSidebarPanel.prototype.hasCustomFilters):
+        (WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
+        (WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
+        (WI.SourcesNavigationSidebarPanel.prototype.willDismissPopover):
+        (WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements):
+        (WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement):
+        (WI.SourcesNavigationSidebarPanel.prototype._addTarget):
+        (WI.SourcesNavigationSidebarPanel.prototype._findCallStackTargetTreeElement):
+        (WI.SourcesNavigationSidebarPanel.prototype._updateCallStackTreeOutline):
+        (WI.SourcesNavigationSidebarPanel.prototype._addResource):
+        (WI.SourcesNavigationSidebarPanel.prototype._addResourcesRecursivelyForFrame):
+        (WI.SourcesNavigationSidebarPanel.prototype._addScript):
+        (WI.SourcesNavigationSidebarPanel.prototype._addWorkerTargetWithMainResource):
+        (WI.SourcesNavigationSidebarPanel.prototype._addDebuggerTreeElementForSourceCode):
+        (WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement):
+        (WI.SourcesNavigationSidebarPanel.prototype._compareBreakpointTreeElements):
+        (WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
+        (WI.SourcesNavigationSidebarPanel.prototype._removeBreakpoint):
+        (WI.SourcesNavigationSidebarPanel.prototype._removeAllBreakpoints):
+        (WI.SourcesNavigationSidebarPanel.prototype._toggleAllBreakpoints):
+        (WI.SourcesNavigationSidebarPanel.prototype._breakpointsBeneathTreeElement):
+        (WI.SourcesNavigationSidebarPanel.prototype._addIssue):
+        (WI.SourcesNavigationSidebarPanel.prototype._removeDebuggerTreeElement):
+        (WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
+        (WI.SourcesNavigationSidebarPanel.prototype._addIssuesForSourceCode):
+        (WI.SourcesNavigationSidebarPanel.prototype._updateBreakpointsDisabledBanner):
+        (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReason):
+        (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonGotoArrow):
+        (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleResourceTypeScopeBarSelectionChanged):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointClicked):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleFrameMainResourceDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleResourceAdded):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleMainFrameDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointAdded):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointRemoved):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointsEnabledDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptAdded):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptRemoved):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptsCleared):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerCallFramesDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerActiveCallFrameDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerWaitingToPause):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateDidChange):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleConsoleIssueAdded):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleConsoleCleared):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleCSSStyleSheetAdded):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTargetAdded):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleTargetRemoved):
+        (WI.SourcesNavigationSidebarPanel.prototype._handleExtraDomainsActivated):
+        * UserInterface/Views/SourcesNavigationSidebarPanel.css: Added.
+        (.sidebar > .panel.navigation.sources > .content):
+        (.sidebar > .panel.navigation.sources > .navigation-bar):
+        (.sidebar > .panel.navigation.sources > .navigation-bar .debugger-breakpoints):
+        (.sidebar > .panel.navigation.sources > .navigation-bar .debugger-breakpoints.activated):
+        (.sidebar > .panel.navigation.sources > .navigation-bar .debugger-pause-resume):
+        (.sidebar > .panel.navigation.sources > .navigation-bar .debugger-pause-resume.activated):
+        (.sidebar > .panel.navigation.sources > .content > .warning-banner):
+        (.sidebar > .panel.navigation.sources > .content > .details-section):
+        (.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,):
+        (.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content):
+        (.sidebar > .panel.navigation.sources > .content > .details-section.scripts:not(.collapsed)):
+        (.sidebar > .panel.navigation.sources > .content > .navigation-bar):
+        (.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread):
+        (.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread):
+        (@media (prefers-dark-interface) .sidebar > > .content > .panel.navigation.sources .warning-banner):
+
+        * UserInterface/Views/SourcesTabContentView.js: Added.
+        (WI.SourcesTabContentView):
+        (WI.SourcesTabContentView.tabInfo):
+        (WI.SourcesTabContentView.isTabAllowed):
+        (WI.SourcesTabContentView.prototype.get type):
+        (WI.SourcesTabContentView.prototype.get supportsSplitContentBrowser):
+        (WI.SourcesTabContentView.prototype.canShowRepresentedObject):
+        (WI.SourcesTabContentView.prototype.showDetailsSidebarPanels):
+        (WI.SourcesTabContentView.prototype.showScopeChainDetailsSidebarPanel):
+        (WI.SourcesTabContentView.prototype.revealAndSelectBreakpoint):
+
+        * UserInterface/Views/CanvasSidebarPanel.js:
+        (WI.CanvasSidebarPanel):
+        * UserInterface/Views/DebuggerSidebarPanel.js:
+        (WI.DebuggerSidebarPanel):
+        (WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
+        * UserInterface/Views/NavigationSidebarPanel.js:
+        (WI.NavigationSidebarPanel.prototype.createContentTreeOutline):
+        (WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
+        (WI.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
+        Rework `createContentTreeOutline` to allow for additional symbols.
+        Add another symbol to ensure that the `WI.TreeOutline` is not used for cookie restoration.
+
+        * UserInterface/Protocol/InspectorFrontendAPI.js:
+        (InspectorFrontendAPI.showResources):
+        * UserInterface/Views/ContextMenuUtilities.js:
+        (WI.appendContextMenuItemsForURL):
+        * UserInterface/Views/DefaultDashboardView.js:
+        (WI.DefaultDashboardView.prototype._resourcesItemWasClicked):
+        * UserInterface/Views/SourceCodeTextEditor.js:
+        (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
+
+        * UserInterface/Views/TabBrowser.js:
+        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
+
+        * UserInterface/Base/Main.js:
+        (WI.contentLoaded):
+        (WI.showSourcesTab): Added.
+        (WI.isShowingSourcesTab): Added.
+        (WI.tabContentViewClassForRepresentedObject):
+        (WI._debuggerDidPause):
+
+        * UserInterface/Views/DebuggerTabContentView.js:
+        (WI.DebuggerTabContentView.isTabAllowed):
+        * UserInterface/Views/ResourcesTabContentView.js:
+        (WI.ResourcesTabContentView.isTabAllowed):
+
+        * UserInterface/Base/Setting.js:
+        * UserInterface/Views/SettingsTabContentView.js:
+        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
+
+        * UserInterface/Main.html:
+        * UserInterface/Images/Sources.svg: Added.
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-24  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Change the InspectorOverlay to use native rather than canvas
+        https://bugs.webkit.org/show_bug.cgi?id=105023
+        <rdar://problem/13443692>
+
+        Reviewed by Brian Burg.
+
+        * UserInterface/Base/Main.js:
+        (WI.initializeTarget):
+
+        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
+        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
+        * Versions/Inspector-iOS-10.0.json:
+        * Versions/Inspector-iOS-10.3.json:
+        * Versions/Inspector-iOS-11.0.json:
+        * Versions/Inspector-iOS-11.3.json:
+        * Versions/Inspector-iOS-12.0.json:
+        * Versions/Inspector-iOS-12.2.json:
+        * Versions/Inspector-iOS-8.0.json:
+        * Versions/Inspector-iOS-9.0.json:
+        * Versions/Inspector-iOS-9.3.json:
+        Remove `Debugger.setOverlayMessage` command as it hasn't been used and is no longer supported.
+
+2019-02-24  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: provide a way to make searches case sensitive or use a regular expression
+        https://bugs.webkit.org/show_bug.cgi?id=192527
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Base/SearchUtilities.js: Added.
+        (WI.SearchUtilities.get defaultSettings):
+        (WI.SearchUtilities.createSettings):
+        (WI.SearchUtilities.regExpForString):
+        (WI.SearchUtilities.createSettingsButton):
+        (WI.SearchUtilities.createSettingsButton.toggleActive):
+        * UserInterface/Views/Main.css:
+        (.search-settings): Added.
+        (.search-settings > .glyph): Added.
+        (.search-settings:active > .glyph): Added.
+        (.search-settings.active > .glyph): Added.
+        (.search-settings:active.active > .glyph): Added.
+        Create static utility class for handling settings related to searching/filtering.
+
+        * UserInterface/Base/Setting.js:
+        * UserInterface/Views/SettingsTabContentView.js:
+        (WI.SettingsTabContentView.prototype._createGeneralSettingsView):
+        Create default search settings that apply across WebInspector, unless a more specific
+        setting has been created that overrides it (e.g. the navigation sidebar or Search tab).
+
+        * UserInterface/Views/SearchSidebarPanel.js:
+        (WI.SearchSidebarPanel):
+        (WI.SearchSidebarPanel.prototype.performSearch.forEachMatch):
+        (WI.SearchSidebarPanel.prototype.performSearch.resourceCallback):
+        (WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
+        (WI.SearchSidebarPanel.prototype.performSearch.searchScripts.scriptCallback):
+        (WI.SearchSidebarPanel.prototype.performSearch.searchScripts):
+        (WI.SearchSidebarPanel.prototype.performSearch.domSearchResults):
+        (WI.SearchSidebarPanel.prototype.performSearch.domCallback):
+        (WI.SearchSidebarPanel.prototype.performSearch):
+        * UserInterface/Views/SearchSidebarPanel.css:
+        (.sidebar > .panel.navigation.search > .search-bar):
+        (.sidebar > .panel.navigation.search > .search-bar > input[type="search"]):
+        Add a (*) settings "gear" after each `<input type="search">` that shows a contextmenu with
+        checkboxes for each search setting. Any settings changed for each input take precedence over
+        the default settings, but will match the corresponding default setting if it's changed.
+
+        * UserInterface/Views/SearchResultTreeElement.js:
+        (WI.SearchResultTreeElement.truncateAndHighlightTitle):
+        Use the length of the found text, rather than the length of the query.
+
+        * UserInterface/Views/DOMTreeElement.js:
+        (WI.DOMTreeElement.prototype._highlightSearchResults):
+        * UserInterface/Views/DataGrid.js:
+        (WI.DataGrid.prototype._updateFilter):
+        * UserInterface/Views/LogContentView.js:
+        (WI.LogContentView.prototype.performSearch):
+        * UserInterface/Views/NetworkTableContentView.js:
+        (WI.NetworkTableContentView.prototype._urlFilterDidChange):
+        * UserInterface/Views/ResourceHeadersContentView.js:
+        (WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
+        * UserInterface/Views/ResourceSecurityContentView.js:
+        (WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
+        * UserInterface/Views/SourceCodeTextEditor.js:
+        (WI.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
+        (WI.SourceCodeTextEditor.prototype.customPerformSearch):
+        * UserInterface/Views/TextEditor.js:
+        (WI.TextEditor.prototype.performSearch):
+        Use the default search settings when searching/filtering.
+
+        * UserInterface/Views/SearchBar.css:
+        (.search-bar > input[type="search"]:placeholder-shown::-webkit-search-cancel-button): Added.
+        Drive-by: prevent the (x) from appearing when no text has been entered.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Main.html:
+
+2019-02-24  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: make debounce Proxy into its own class
+        https://bugs.webkit.org/show_bug.cgi?id=194721
+
+        Reviewed by Joseph Pecoraro.
+
+        The `debounce`/`throttle` functions leveraged a `Proxy` to intercept the function call and
+        replace it with a "delayed" version. The issue with this is that it set the identifier for
+        the timer on the function itself, which is shared across all instances of a given class.
+        When different instances call the same delayed function, they'd clobber eachother's attempts
+        to delay work.
+
+        * UserInterface/Base/Debouncer.js: Added.
+        (Debouncer):
+        (Debouncer.prototype.force):
+        (Debouncer.prototype.delayForTime):
+        (Debouncer.prototype.delayForFrame):
+        (Debouncer.prototype.delayForMicrotask):
+        (Debouncer.prototype.cancel):
+        (Debouncer.prototype._execute):
+        * UserInterface/Base/Throttler.js: Added.
+        (Throttler):
+        (Throttler.prototype.force):
+        (Throttler.prototype.fire):
+        (Throttler.prototype.cancel):
+        (Throttler.prototype._execute):
+        * UserInterface/Base/Utilities.js:
+
+        * UserInterface/Views/BezierEditor.js:
+        (WI.BezierEditor):
+        * UserInterface/Views/ContentBrowser.js:
+        (WI.ContentBrowser):
+        (WI.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
+        (WI.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
+        (WI.ContentBrowser.prototype._currentContentViewDidChange):
+        (WI.ContentBrowser.prototype._dispatchCurrentRepresentedObjectsDidChangeEvent): Deleted.
+        * UserInterface/Views/DOMTreeUpdater.js:
+        (WI.DOMTreeUpdater):
+        (WI.DOMTreeUpdater.prototype._nodeAttributeModified):
+        (WI.DOMTreeUpdater.prototype._nodeInserted):
+        (WI.DOMTreeUpdater.prototype._nodeRemoved):
+        * UserInterface/Views/NavigationSidebarPanel.js:
+        (WI.NavigationSidebarPanel):
+        (WI.NavigationSidebarPanel.prototype.closed):
+        (WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
+        (WI.NavigationSidebarPanel.prototype.hideEmptyContentPlaceholder):
+        (WI.NavigationSidebarPanel.prototype.updateFilter):
+        (WI.NavigationSidebarPanel.prototype.shown):
+        (WI.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
+        (WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
+        (WI.NavigationSidebarPanel.prototype._treeElementDisclosureDidChange):
+        * UserInterface/Views/RecordingContentView.js:
+        (WI.RecordingContentView):
+        (WI.RecordingContentView.prototype.updateActionIndex):
+        (WI.RecordingContentView.prototype.hidden):
+        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
+        (WI.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
+        (WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
+        (WI.ResourceDetailsSidebarPanel):
+        * UserInterface/Views/ShaderProgramContentView.js:
+        (WI.ShaderProgramContentView):
+        * UserInterface/Views/SpringEditor.js:
+        (WI.SpringEditor.prototype._resetPreviewAnimation):
+        * UserInterface/Views/TreeElement.js:
+        (WI.TreeElement.prototype.set hidden):
+        (WI.TreeElement.prototype.didChange):
+        (WI.TreeElement.prototype._attach):
+        (WI.TreeElement.prototype._detach):
+        (WI.TreeElement.prototype.collapse):
+        (WI.TreeElement.prototype.expand):
+        (WI.TreeElement.prototype.reveal):
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline):
+        (WI.TreeOutline.prototype.registerScrollVirtualizer):
+        (WI.TreeOutline.prototype.get updateVirtualizedElementsDebouncer): Added.
+        (WI.TreeOutline.prototype._updateVirtualizedElements): Added.
+        (WI.TreeOutline.prototype.updateVirtualizedElements.walk): Deleted.
+        (WI.TreeOutline.prototype.updateVirtualizedElements): Deleted.
+        * UserInterface/Views/WebSocketContentView.js:
+        (WI.WebSocketContentView):
+        (WI.WebSocketContentView.prototype.shown):
+        (WI.WebSocketContentView.prototype._updateFramesSoon):
+        (WI.WebSocketContentView.prototype._updateFrames):
+
+        * UserInterface/Main.html:
+        * UserInterface/Test.html:
+        * .eslintrc:
+
 2019-02-24  Nikita Vasilyev  <nvasilyev@apple.com>
 
         Unreviewed, fix indentation.