Web Inspector: hovering a node inside an object preview should highlight it
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
index 964298f..0c5b183 100644 (file)
+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.
+
+        * UserInterface/Models/CSSStyleDeclaration.js:
+        (WI.CSSStyleDeclaration.prototype.markModified):
+
+2019-02-23  Keith Miller  <keith_miller@apple.com>
+
+        Add new mac target numbers
+        https://bugs.webkit.org/show_bug.cgi?id=194955
+
+        Reviewed by Tim Horton.
+
+        * Configurations/Base.xcconfig:
+        * Configurations/DebugRelease.xcconfig:
+
+2019-02-22  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Timelines: add UI for preventing auto-stop
+        https://bugs.webkit.org/show_bug.cgi?id=194956
+
+        Reviewed by Joseph Pecoraro.
+
+        Add a checkbox to the navigation area of the Timelines tab that controls whether recordings
+        automatically stop (e.g. after "load" or a period of inactivity).
+
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView):
+        (WI.TimelineRecordingContentView.prototype.get navigationItems):
+        (WI.TimelineRecordingContentView.prototype._handleAutoStopCheckboxCheckedDidChange): Added.
+        (WI.TimelineRecordingContentView.prototype._handleTimelinesAutoStopSettingChanged): Added.
+
+        * UserInterface/Controllers/TimelineManager.js:
+        (WI.TimelineManager):
+        (WI.TimelineManager.prototype.capturingStopped):
+        (WI.TimelineManager.prototype._stopAutoRecordingSoon):
+        (WI.TimelineManager.prototype._resetAutoRecordingMaxTimeTimeout):
+        (WI.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
+        (WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):
+
+        * UserInterface/Base/Setting.js:
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-22  Devin Rousso  <drousso@apple.com>
+
+        REGRESSION(r?): Web Inspector: Popovers have inset shadows
+        https://bugs.webkit.org/show_bug.cgi?id=192963
+        <rdar://problem/46888679>
+
+        Reviewed by Brian Burg.
+
+        * UserInterface/Views/Popover.js:
+        (WI.Popover.prototype._drawBackground):
+        (WI.Popover.prototype._drawBackground.isolate): Added.
+        * UserInterface/Views/Popover.css:
+        (.popover):
+
+2019-02-22  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Styles Redesign: clicking CSS property or selector should always select its text
+        https://bugs.webkit.org/show_bug.cgi?id=180791
+        <rdar://problem/36038366>
+
+        Reviewed by Brian Burg.
+
+        * UserInterface/Views/SpreadsheetSelectorField.js:
+        (WI.SpreadsheetSelectorField):
+        (WI.SpreadsheetSelectorField.prototype.startEditing):
+        (WI.SpreadsheetSelectorField.prototype.stopEditing):
+        (WI.SpreadsheetSelectorField.prototype._handleMouseDown): Added.
+        (WI.SpreadsheetSelectorField.prototype._handleMouseUp): Added.
+        (WI.SpreadsheetSelectorField.prototype._handleFocus): Deleted.
+
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
+        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
+        (.spreadsheet-css-declaration .selector.editing:focus, .spreadsheet-css-declaration .selector > .matched): Added.
+        (.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
+        (.spreadsheet-css-declaration .selector:focus, .spreadsheet-css-declaration .selector > .matched): Deleted.
+
+2019-02-22  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Dark Mode: DOM Content Loaded blue marker is too dark
+        https://bugs.webkit.org/show_bug.cgi?id=194970
+        <rdar://problem/48330126>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/TimelineRuler.css:
+        (@media (prefers-color-scheme: dark)):
+        (.timeline-ruler > .markers > .marker.dom-content-event):
+        Make the marker lighter for the dark mode.
+
+2019-02-22  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Remove unused Timeline record selection code path
+        https://bugs.webkit.org/show_bug.cgi?id=194931
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/TimelineOverview.js:
+        (WI.TimelineOverview):
+        (WI.TimelineOverview.prototype.userSelectedRecord): Deleted.
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView):
+        (WI.TimelineRecordingContentView.prototype.timelineOverviewUserSelectedRecord): Deleted.
+        * UserInterface/Views/TimelineView.js:
+        (WI.TimelineView.prototype.userSelectedRecordFromOverview): Deleted.
+
+2019-02-21  Darin Adler  <darin@apple.com>
+
+        Some refinements for Node and Document
+        https://bugs.webkit.org/show_bug.cgi?id=194764
+
+        Reviewed by Ryosuke Niwa.
+
+        * UserInterface/Models/NativeFunctionParameters.js: Removed getOverrideStyle
+        because this deprecated non-working function is no longer something web authors
+        should be thinking about or typing.
+
+2019-02-21  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: recordings with a single frame sometimes missing TreeElement
+        https://bugs.webkit.org/show_bug.cgi?id=194687
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/CanvasSidebarPanel.js:
+        (WI.CanvasSidebarPanel):
+        Wait until the entire `Recording` has been processed before setting the selected action.
+
+        * UserInterface/Views/CanvasSidebarPanel.css:
+        (.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content):
+        Drive-by: ensure that the recording `TreeOutline` container element has the full height to
+        take advantage of for virtualization.
+
+        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
+        (WI.RecordingStateDetailsSidebarPanel.prototype.set recording):
+        Drive-by: clear the `DataGrid` list when changing recordings since we removed all subviews.
+
+2019-02-21  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: DOM Debugger: node-specific event breakpoints aren't cleared/recalculated on navigation
+        https://bugs.webkit.org/show_bug.cgi?id=194874
+        <rdar://problem/48253415>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Controllers/DOMManager.js:
+        (WI.DOMManager.prototype._setDocument):
+        (WI.DOMManager.prototype.removeBreakpointForEventListener):
+
+2019-02-21  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: macOS user agent option should be available in device settings menu
+        https://bugs.webkit.org/show_bug.cgi?id=194885
+        <rdar://problem/48259253>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Base/Main.js:
+        (WI._handleDeviceSettingsToolbarButtonClicked):
+
+2019-02-20  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: RTL: Scripts Timeline loading indicator has incorrect margins
+        https://bugs.webkit.org/show_bug.cgi?id=194882
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/TimelineRecordingContentView.css:
+        (.content-view.timeline-recording > .content-browser .recording-progress > .status > .indeterminate-progress-spinner):
+
+2019-02-20  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add SDKVariant.xcconfig to various Xcode projects
+        https://bugs.webkit.org/show_bug.cgi?id=194869
+
+        Rubber-stamped by Jer Noble.
+
+        * WebInspectorUI.xcodeproj/project.pbxproj:
+
+2019-02-19  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
+        https://bugs.webkit.org/show_bug.cgi?id=172848
+        <rdar://problem/25709212>
+
+        Reviewed by Mark Lam.
+
+        * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
+        (HeapSnapshot):
+        Support the new snapshot version. The only thing that changes are the
+        node flags, and its actually completely compatible with version 1.
+
+        (HeapSnapshot.updateCategoriesAndMetadata):
+        List the count of object type instances in each class category.
+
+        (HeapSnapshot.prototype.serializeNode):
+        Include whether or not the node is an object type.
+
+        * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
+        (WebInspector.HeapSnapshotNodeProxy):
+        (WebInspector.HeapSnapshotNodeProxy.deserialize):
+        Add a new Node isObjectType property based on the new data.
+
+        * UserInterface/Views/HeapSnapshotClassDataGridNode.js:
+        (WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
+        * UserInterface/Views/HeapSnapshotClusterContentView.js:
+        (WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
+        If a class contains 50% or more object type instances then treat it as such
+        instead of defaulting to native.
+
+        * UserInterface/Views/HeapSnapshotDataGridTree.js:
+        (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
+        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
+        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
+        We can be more specific than the default if the individual instance is
+        known to be an object type.
+
+2019-02-19  Truitt Savell  <tsavell@apple.com>
+
+        Unreviewed, rolling out r241784.
+
+        Broke all OpenSource builds.
+
+        Reverted changeset:
+
+        "Web Inspector: Improve ES6 Class instances in Heap Snapshot
+        instances view"
+        https://bugs.webkit.org/show_bug.cgi?id=172848
+        https://trac.webkit.org/changeset/241784
+
+2019-02-19  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
+        https://bugs.webkit.org/show_bug.cgi?id=172848
+        <rdar://problem/25709212>
+
+        Reviewed by Mark Lam.
+
+        * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
+        (HeapSnapshot):
+        Support the new snapshot version. The only thing that changes are the
+        node flags, and its actually completely compatible with version 1.
+
+        (HeapSnapshot.updateCategoriesAndMetadata):
+        List the count of object type instances in each class category.
+
+        (HeapSnapshot.prototype.serializeNode):
+        Include whether or not the node is an object type.
+
+        * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
+        (WebInspector.HeapSnapshotNodeProxy):
+        (WebInspector.HeapSnapshotNodeProxy.deserialize):
+        Add a new Node isObjectType property based on the new data.
+
+        * UserInterface/Views/HeapSnapshotClassDataGridNode.js:
+        (WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
+        * UserInterface/Views/HeapSnapshotClusterContentView.js:
+        (WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
+        If a class contains 50% or more object type instances then treat it as such
+        instead of defaulting to native.
+
+        * UserInterface/Views/HeapSnapshotDataGridTree.js:
+        (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
+        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
+        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
+        We can be more specific than the default if the individual instance is
+        known to be an object type.
+
+2019-02-19  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Scripts timeline on-going-recording text looks poor in dark mode
+        https://bugs.webkit.org/show_bug.cgi?id=194809
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/TimelineRecordingContentView.css:
+        (.content-view.timeline-recording > .content-browser .recording-progress > .status):
+
+2019-02-18  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Provide a way to avoid a recording auto-stop on reload
+        https://bugs.webkit.org/show_bug.cgi?id=194793
+
+        Reviewed by Matt Baker.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        New tooltip.
+
+        * UserInterface/Controllers/TimelineManager.js:
+        (WI.TimelineManager.prototype.willAutoStop):
+        (WI.TimelineManager.prototype.relaxAutoStop):
+        Getter and relaxer for auto stop behavior.
+
+        * UserInterface/Views/AuditNavigationSidebarPanel.js:
+        (WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
+        Drive-by fix some whitespace issues.
+
+        * UserInterface/Views/TimelineTabContentView.js:
+        (WI.TimelineTabContentView):
+        (WI.TimelineTabContentView.prototype._showRecordButton):
+        (WI.TimelineTabContentView.prototype._showContinueButton):
+        (WI.TimelineTabContentView.prototype._updateNavigationBarButtons):
+        (WI.TimelineTabContentView.prototype._capturingStartedOrStopped):
+        (WI.TimelineTabContentView.prototype._globalModifierKeysDidChange):
+        (WI.TimelineTabContentView.prototype._continueButtonClicked):
+        Show a "continue" like icon instead of the usual stop button when
+        a recording would auto-stop and the alt key is down. When pressed
+        this button will relax the auto-stop and continue the recording
+        until explicitly stopped by the user.
+
+2019-02-18  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Fix a typo causing assertions in ConsoleManager
+        https://bugs.webkit.org/show_bug.cgi?id=194792
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Controllers/ConsoleManager.js:
+        (WI.ConsoleManager.prototype.initializeLogChannels):
+        Extra comma produced an undefined value in the list.
+
+2019-02-18  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: typing ";" shouldn't focus on the next property when there's open parenthesis or comment
+        https://bugs.webkit.org/show_bug.cgi?id=194789
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype._handleValueBeforeInput):
+
+2019-02-18  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Better categorize CPU usage per-thread / worker
+        https://bugs.webkit.org/show_bug.cgi?id=194564
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Controllers/TimelineManager.js:
+        (WI.TimelineManager.prototype.cpuProfilerTrackingUpdated):
+        * UserInterface/Models/CPUTimelineRecord.js:
+        (WI.CPUTimelineRecord.prototype.get mainThreadUsage):
+        (WI.CPUTimelineRecord.prototype.get webkitThreadUsage):
+        (WI.CPUTimelineRecord.prototype.get workerThreadUsage):
+        (WI.CPUTimelineRecord.prototype.get unknownThreadUsage):
+        Build a better record from the protocol events.
+
+2019-02-18  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: duplicate left double quotation mark (\u201C) in 'Unable to show certificate for ā€œ%sā€œ.'
+        https://bugs.webkit.org/show_bug.cgi?id=194782
+        <rdar://problem/48159683>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Models/Resource.js:
+        (WI.Resource.prototype.async showCertificate):
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-18  Eric Carlson  <eric.carlson@apple.com>
+
+        Add MSE logging configuration
+        https://bugs.webkit.org/show_bug.cgi?id=194719
+        <rdar://problem/48122151>
+
+        Reviewed by Joseph Pecoraro.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Models/ConsoleMessage.js:
+        * UserInterface/Models/IssueMessage.js:
+        (WI.IssueMessage):
+        * UserInterface/Views/LogContentView.js:
+        (WI.LogContentView):
+        * UserInterface/Views/SettingsTabContentView.js:
+        (WI.SettingsTabContentView.prototype._createGeneralSettingsView):
+
+2019-02-17  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Move CSS completion logic from SpreadsheetTextField to SpreadsheetStyleProperty
+        https://bugs.webkit.org/show_bug.cgi?id=194724
+
+        Reviewed by Devin Rousso.
+
+        Move CSS value completion logic from SpreadsheetTextField, a generic text field,
+        to SpreadsheetStyleProperty.
+
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
+        (WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
+
+        * UserInterface/Views/SpreadsheetTextField.js:
+        (WI.SpreadsheetTextField):
+        (WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
+        (WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
+        (WI.SpreadsheetTextField.prototype._updateCompletions):
+        (WI.SpreadsheetTextField.prototype._showSuggestionsView):
+        (WI.SpreadsheetTextField.prototype._getCompletionPrefix): Deleted.
+
+2019-02-17  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: Frontend performance is very slow reloading theverge.com - 50% of time in TreeOutline _indexOfTreeElement
+        https://bugs.webkit.org/show_bug.cgi?id=193605
+        <rdar://problem/47403986>
+
+        Reviewed by Devin Rousso.
+
+        SelectionController should track an unordered Set of represented objects
+        instead of an ordered set of indexes. This eliminates the costly and
+        error-prone updates needed to keep the selected indexes in sync as items
+        are added and removed from TreeOutline (and Table, to a far lesser extent).
+
+        The SelectionController interface is largely the same. Class and delegate
+        methods have been renamed to reflect the change from indexes to objects.
+        SelectionController tracks selected items in selection order. For the
+        operations that rely on objects being in insertion order, the controller
+        uses a comparator function provided at construction time.
+
+        * UserInterface/Base/IndexSet.js: Removed.
+        No longer used. SelectionController now uses a plain Set.
+
+        * UserInterface/Base/Utilities.js:
+        (value):
+        (get return):
+        Add utilities previously supplied by IndexSet and used by SelectionController.
+
+        * UserInterface/Controllers/SelectionController.js:
+        (WI.SelectionController):
+        (WI.SelectionController.prototype.get lastSelectedItem):
+        (WI.SelectionController.prototype.get selectedItems):
+        (WI.SelectionController.prototype.set allowsMultipleSelection):
+        (WI.SelectionController.prototype.hasSelectedItem):
+        (WI.SelectionController.prototype.selectItem):
+        (WI.SelectionController.prototype.deselectItem):
+        (WI.SelectionController.prototype.selectAll):
+        (WI.SelectionController.prototype.deselectAll):
+        (WI.SelectionController.prototype.removeSelectedItems):
+        (WI.SelectionController.prototype.reset):
+        (WI.SelectionController.prototype.didRemoveItems):
+        (WI.SelectionController.prototype.handleKeyDown):
+        (WI.SelectionController.prototype.handleItemMouseDown):
+        (WI.SelectionController.prototype._deselectAllAndSelect):
+        (WI.SelectionController.prototype._selectItemsFromArrowKey):
+        (WI.SelectionController.prototype._firstSelectableItem):
+        (WI.SelectionController.prototype._lastSelectableItem):
+        (WI.SelectionController.prototype._previousSelectableItem):
+        (WI.SelectionController.prototype._nextSelectableItem):
+        (WI.SelectionController.prototype._updateSelectedItems):
+        (WI.SelectionController.prototype._addRange):
+        (WI.SelectionController.prototype._deleteRange):
+        (WI.SelectionController.prototype.get numberOfItems): Deleted.
+        (WI.SelectionController.prototype.didInsertItem): Deleted.
+        (WI.SelectionController.prototype.handleItemMouseDown.normalizeRange): Deleted.
+        (WI.SelectionController.prototype._nextSelectableIndex): Deleted.
+        (WI.SelectionController.prototype._previousSelectableIndex): Deleted.
+
+        * UserInterface/Main.html:
+        * UserInterface/Test.html:
+        Remove IndexSet.
+
+        * UserInterface/Views/CookieStorageContentView.js:
+        (WI.CookieStorageContentView.prototype.tableIndexForRepresentedObject):
+        (WI.CookieStorageContentView.prototype.tableRepresentedObjectForIndex):
+
+        * UserInterface/Views/DOMTreeOutline.js:
+        (WI.DOMTreeOutline.prototype.objectForSelection):
+
+        * UserInterface/Views/NetworkTableContentView.js:
+        (WI.NetworkTableContentView.prototype.tableIndexForRepresentedObject):
+        (WI.NetworkTableContentView.prototype.tableRepresentedObjectForIndex):
+
+        * UserInterface/Views/Table.js:
+        (WI.Table):
+        (WI.Table.prototype.get selectedRow):
+        (WI.Table.prototype.get selectedRows):
+        (WI.Table.prototype.isRowSelected):
+        (WI.Table.prototype.selectRow):
+        (WI.Table.prototype.deselectRow):
+        (WI.Table.prototype.removeRow):
+        (WI.Table.prototype.removeSelectedRows):
+        (WI.Table.prototype.selectionControllerSelectionDidChange):
+        (WI.Table.prototype.selectionControllerFirstSelectableItem):
+        (WI.Table.prototype.selectionControllerLastSelectableItem):
+        (WI.Table.prototype.selectionControllerPreviousSelectableItem):
+        (WI.Table.prototype.selectionControllerNextSelectableItem):
+        (WI.Table.prototype._handleMouseDown):
+        (WI.Table.prototype._removeRows):
+        (WI.Table.prototype._indexForRepresentedObject):
+        (WI.Table.prototype._representedObjectForIndex):
+        (WI.Table.prototype.selectionControllerNumberOfItems): Deleted.
+        (WI.Table.prototype.selectionControllerNextSelectableIndex): Deleted.
+        (WI.Table.prototype.selectionControllerPreviousSelectableIndex): Deleted.
+        (WI.Table.prototype._toggleSelectedRowStyle): Deleted.
+
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline.compareSiblings):
+        (WI.TreeOutline):
+        (WI.TreeOutline.prototype.get selectedTreeElement):
+        (WI.TreeOutline.prototype.set selectedTreeElement):
+        (WI.TreeOutline.prototype.get selectedTreeElements):
+        (WI.TreeOutline.prototype.removeChildAtIndex):
+        (WI.TreeOutline.prototype.removeChildren):
+        (WI.TreeOutline.prototype._rememberTreeElement):
+        (WI.TreeOutline.prototype.getCachedTreeElement):
+        (WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
+        (WI.TreeOutline.prototype.selectionControllerFirstSelectableItem):
+        (WI.TreeOutline.prototype.selectionControllerLastSelectableItem):
+        (WI.TreeOutline.prototype.selectionControllerPreviousSelectableItem):
+        (WI.TreeOutline.prototype.selectionControllerNextSelectableItem):
+        (WI.TreeOutline.prototype.objectForSelection):
+        (WI.TreeOutline._generateStyleRulesIfNeeded):
+        (WI.TreeOutline.prototype.selectionControllerNextSelectableIndex): Deleted.
+        (WI.TreeOutline.prototype.selectionControllerPreviousSelectableIndex): Deleted.
+        (WI.TreeOutline._generateStyleRulesIfNeeded._indexesForSubtree.numberOfElementsInSubtree): Deleted.
+
+2019-02-15  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Logging a native function to the console, such as `alert`, produces unhandled rejection
+        https://bugs.webkit.org/show_bug.cgi?id=194740
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Protocol/RemoteObject.js:
+        (WI.RemoteObject.prototype.findFunctionSourceCodeLocation):
+        In case of a protocol error (common when attempting to get a location
+        for a native function) produce the NoSourceFound result.
+
+        * UserInterface/Views/ConsoleMessageView.js:
+        (WI.ConsoleMessageView.prototype._appendLocationLink):
+        Simplify with an arrow function.
+
+2019-02-15  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Some timelines views work, show Legacy CPU timeline
+        https://bugs.webkit.org/show_bug.cgi?id=194738
+
+        Reviewed by Yusuke Suzuki.
+
+        * UserInterface/Views/ContentView.js:
+        (WI.ContentView.createFromRepresentedObject):
+
+2019-02-15  Aaron Chu  <aaron_chu@apple.com>
+
+        AX: Audit tab should have built-in accessibility tests.
+        https://bugs.webkit.org/show_bug.cgi?id=194005
+        <rdar://problem/47657503>
+
+        Updated built-in accessibility audits test suite.
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Controllers/AuditManager.js:
+        (WI.AuditManager.prototype.addDefaultTestsIfNeeded):
+        (WI.AuditManager):
+        (WI.AuditManager.prototype.addDefaultTestsIfNeeded.): Deleted.
+
+2019-02-15  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Dark Mode: commas in CSS selectors are too dim
+        https://bugs.webkit.org/show_bug.cgi?id=194729
+        <rdar://problem/48128592>
+
+        Reviewed by Matt Baker.
+
+        Use `--text-color-tertiary` for both light and dark modes.
+
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
+        (.spreadsheet-style-declaration-editor):
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
+        (.spreadsheet-css-declaration):
+        (.spreadsheet-css-declaration .selector > span):
+        (@media (prefers-color-scheme: dark)):
+        * UserInterface/Views/Variables.css:
+        (:root):
+
+2019-02-15  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Unreviewed, fix intentation.
+
+        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
+        (.sidebar > .panel.details.css-style .rules):
+        (.sidebar > .panel.details.css-style > .content > .rules .section-header):
+
+2019-02-15  Dean Jackson  <dino@apple.com>
+
+        Allow emulation of user gestures from Web Inspector console
+        https://bugs.webkit.org/show_bug.cgi?id=194725
+        <rdar://problem/48126604>
+
+        Reviewed by Joseph Pecoraro and Devin Rousso.
+
+        Add some UI for emulating a User Gesture when evaluating in the console. This
+        allows the developer to do things that would otherwise require actual interaction
+        with the page, such as start playback of media on iOS.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Base/Setting.js: Add a new setting for this option.
+        * UserInterface/Controllers/JavaScriptLogViewController.js:
+        (WI.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
+        * UserInterface/Controllers/RuntimeManager.js: Call evaluate with this new option.
+        (WI.RuntimeManager.prototype.evaluateInInspectedWindow):
+        * UserInterface/Views/LogContentView.js: Add a new checkbox in the upper bar
+        that allows the user to toggle the setting.
+        (WI.LogContentView):
+        (WI.LogContentView.prototype.get navigationItems):
+        (WI.LogContentView.prototype._handleEmulateInUserGestureSettingChanged):
+
+        * UserInterface/Views/NetworkTableContentView.js: Two drive-by typo fixes :)
+        (WI.NetworkTableContentView): perserve -> preserve
+        (WI.NetworkTableContentView.prototype.get navigationItems): checkboxs -> checkboxes
+
+2019-02-15  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: valid values in style attributes are reported as unsupported property values
+        https://bugs.webkit.org/show_bug.cgi?id=194619
+        <rdar://problem/47917373>
+
+        Reviewed by Devin Rousso.
+
+        Payload of inline styles may contain `range` that doesn't match
+        the actual text of the payload - it has an extra empty line at the end.
+        Mismatching ranges caused data corruption.
+
+        * UserInterface/Models/DOMNodeStyles.js:
+        (WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
+
+2019-02-15  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: remove unused parameter in _parseStylePropertyPayload
+        https://bugs.webkit.org/show_bug.cgi?id=194642
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Models/DOMNodeStyles.js:
+        (WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
+        The `styleText` parameter was never used
+
+2019-02-15  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: all actions after an offscreen path modification are marked as offscreen path errors
+        https://bugs.webkit.org/show_bug.cgi?id=194684
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Models/RecordingAction.js:
+        (WI.RecordingAction.prototype.process):
+
+2019-02-15  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Canvas: taking a second recording doesn't select the Initial State by default
+        https://bugs.webkit.org/show_bug.cgi?id=194685
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/CanvasSidebarPanel.js:
+        (WI.CanvasSidebarPanel.prototype._recordingChanged):
+
+2019-02-14  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r241497.
+        https://bugs.webkit.org/show_bug.cgi?id=194676
+
+        New test times out (Requested by NVI on #webkit).
+
+        Reverted changeset:
+
+        "Web Inspector: Styles: valid values in style attributes are
+        reported as unsupported property values"
+        https://bugs.webkit.org/show_bug.cgi?id=194619
+        https://trac.webkit.org/changeset/241497
+
+2019-02-13  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: valid values in style attributes are reported as unsupported property values
+        https://bugs.webkit.org/show_bug.cgi?id=194619
+        <rdar://problem/47917373>
+
+        Reviewed by Devin Rousso.
+
+        Payload of inline styles may contain `range` that doesn't match
+        the actual text of the payload - it has an extra empty line at the end.
+        Mismatching ranges caused data corruption.
+
+        * UserInterface/Models/DOMNodeStyles.js:
+        (WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
+
+2019-02-13  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Update combined and minified copyright header for 2018-2019
+        https://bugs.webkit.org/show_bug.cgi?id=194635
+
+        Reviewed by Devin Rousso.
+
+        * Scripts/copy-user-interface-resources.pl:
+
+2019-02-13  Chris Dumez  <cdumez@apple.com>
+
+        Unreviewed, update localizable strings.
+
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-12  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Experimental setting for CPU Usage Timeline improvements
+        https://bugs.webkit.org/show_bug.cgi?id=194556
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Main.html:
+        * UserInterface/Views/LegacyCPUTimelineView.css: Added.
+        * UserInterface/Views/LegacyCPUTimelineView.js: Added.
+        Copy of CPUTimelineView.js/css to be used when the setting is not set.
+
+        * UserInterface/Views/ContentView.js:
+        (WI.ContentView.createFromRepresentedObject):
+        ContentView to create based on the setting.
+
+        * UserInterface/Base/Setting.js:
+        * UserInterface/Views/SettingsTabContentView.js:
+        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
+        Experimental switch.
+
+2019-02-12  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Timeline.prototype.recordsInTimeRange uses a property most records do not have
+        https://bugs.webkit.org/show_bug.cgi?id=194549
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Models/Timeline.js:
+        (WI.Timeline.prototype.recordsInTimeRange):
+
+2019-02-12  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Timelines: clicking on an empty space in the overview should deselect any selected record bar
+        https://bugs.webkit.org/show_bug.cgi?id=194365
+        <rdar://problem/47868426>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/TimelineRecordBar.js:
+        (WI.TimelineRecordBar.prototype._handleClick):
+        Mark the "click" event so that later listeners know it was handled by `WI.TimelineRecordBar`.
+
+        * UserInterface/Views/TimelineOverview.js:
+        (WI.TimelineOverview):
+        (WI.TimelineOverview.prototype._instrumentAdded):
+        (WI.TimelineOverview.prototype._instrumentRemoved):
+        (WI.TimelineOverview.prototype._handleGraphsContainerClick): Added.
+        (WI.TimelineOverview.prototype._handleOverviewGraphRecordSelected): Added.
+        (WI.TimelineOverview.prototype._recordSelected):
+        Listen for "click" on the graph container and deselect all records when fired, unless the
+        click was marked by a `WI.TimelineRecordBar`.
+
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView.prototype._recordSelected):
+        Ensure that all `WI.TimelineView` update their selected record whenever it changes for any
+        other `WI.TimelineView` (or if there is no selected record).
+
+        * UserInterface/Views/TimelineOverviewGraph.js:
+        (WI.TimelineOverviewGraph.prototype.didLayoutSubtree): Added.
+        Drive-by: since `WI.TimelineRecordBar` are reused when combining, we need to re-determine
+        which one holds the currently selected record.
+
+2019-02-12  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Remove unused maxUsage in CPUTimelineView
+        https://bugs.webkit.org/show_bug.cgi?id=194526
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView):
+        (WI.CPUTimelineView.prototype.shown):
+
+2019-02-11  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: add context menu items to copy a resource's HTTP request/response data
+        https://bugs.webkit.org/show_bug.cgi?id=194261
+        <rdar://problem/21693696>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Models/Resource.js:
+        (WI.Resource.prototype.stringifyHTTPRequest): Added.
+        (WI.Resource.prototype.stringifyHTTPResponse): Added.
+        Don't include the request/response data, as that can be very large, and can easily be
+        accessed by actually selecting the resource in the Resources/Network tab.
+
+        * UserInterface/Views/ContextMenuUtilities.js:
+        (WI.appendContextMenuItemsForSourceCode):
+
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-08  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Audit: show keyboard shortcut in export tooltip
+        https://bugs.webkit.org/show_bug.cgi?id=194454
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/AuditTestContentView.js:
+        (WI.AuditTestContentView):
+        (WI.AuditTestContentView.prototype.get saveData):
+        (WI.AuditTestContentView.prototype._exportResult): Added.
+        (WI.AuditTestContentView.prototype._handleExportButtonNavigationItemClicked):
+        (WI.AuditTestContentView.prototype._exportAudit): Deleted.
+
+        * Localizations/en.lproj/localizedStrings.js:
+
+2019-02-08  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: easier way to select a single line
+        https://bugs.webkit.org/show_bug.cgi?id=193305
+
+        Reviewed by Devin Rousso.
+
+        Start property selection after mousedown when mouse cursor moves 8px,
+        which is ~1.5 times the width of a text character in the style editor.
+
+        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
+        (WI.SpreadsheetCSSStyleDeclarationSection):
+        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
+        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleWindowMouseMove): Added.
+        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._stopSelection):
+
+2019-02-08  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Debugger Popover should work with value in template string `${identifier}`
+        https://bugs.webkit.org/show_bug.cgi?id=194459
+        <rdar://problem/47932564>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
+        (WI.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):
+        When walking backwards to get the full expression we were walking outside
+        of the interpolation group `outside ${inside}`. Stop walking backwards once
+        we cross the boundary.
+
+2019-02-08  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Import / Export Heap Snapshots
+        https://bugs.webkit.org/show_bug.cgi?id=194448
+        <rdar://problem/47928093>
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        New strings.
+
+        * UserInterface/Proxies/HeapSnapshotProxy.js:
+        (WI.HeapSnapshotProxy):
+        (WI.HeapSnapshotProxy.deserialize):
+        (WI.HeapSnapshotProxy.prototype.get imported):
+        (WI.HeapSnapshotProxy.prototype.get snapshotStringData):
+        (WI.HeapSnapshotProxy.prototype.set snapshotStringData):
+        Include an "imported" state on the HeapSnapshot and allow for
+        stashing the snapshotStringData on the main thread side.
+
+        * UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
+        (WI.HeapSnapshotWorkerProxy.prototype.createImportedSnapshot):
+        * UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:
+        (HeapSnapshotWorker.prototype.clearSnapshots):
+        (HeapSnapshotWorker.prototype.createSnapshot):
+        Provide a specialized way to create an imported HeapSnapshot.
+        Track imported snapshots separately since they won't want to
+        be searched for live/dead objects due to active recording GCs.
+
+        * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
+        (HeapSnapshot):
+        (HeapSnapshot.updateCategoriesAndMetadata):
+        (HeapSnapshot.allocationBucketCounts):
+        (HeapSnapshot.instancesWithClassName):
+        (HeapSnapshot.prototype.nodeWithIdentifier):
+        (HeapSnapshot.prototype.dominatedNodes):
+        (HeapSnapshot.prototype.retainedNodes):
+        (HeapSnapshot.prototype.retainers):
+        (HeapSnapshot.prototype.updateDeadNodesAndGatherCollectionData):
+        (HeapSnapshot.prototype.serialize):
+        (HeapSnapshot.prototype.serializeNode):
+        (HeapSnapshot.prototype._buildPostOrderIndexes):
+        (HeapSnapshot.prototype._buildDominatorIndexes):
+        (HeapSnapshot.prototype._buildRetainedSizes):
+        (HeapSnapshot.prototype._gcRootPathes.visitNode):
+        (HeapSnapshot.prototype._gcRootPathes):
+        Construct a HeapSnapshot knowinng whether or not it is imported.
+        Imported snapshots may be the "GCDebugging" snapshot type which
+        differs from "Inspector" by the number of node fields. So keep
+        the node field count a member instead of a global constant
+        in order to work with both snapshot types.
+
+        * UserInterface/Models/HeapAllocationsInstrument.js:
+        (WI.HeapAllocationsInstrument.prototype._takeHeapSnapshot):
+        * UserInterface/Protocol/ConsoleObserver.js:
+        (WI.ConsoleObserver.prototype.heapSnapshot):
+        * UserInterface/Protocol/HeapObserver.js:
+        (WI.HeapObserver.prototype.trackingStart):
+        (WI.HeapObserver.prototype.trackingComplete):
+        Stash the original string JSON data on the main thread side
+        where we already have the data.
+
+        * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
+        (WI.HeapAllocationsTimelineOverviewGraph.prototype.layout):
+        Don't show [S] icons for imported snapshots with no timestamp.
+
+        * UserInterface/Views/HeapAllocationsTimelineView.js:
+        (WI.HeapAllocationsTimelineView):
+        (WI.HeapAllocationsTimelineView.prototype.get navigationItems):
+        (WI.HeapAllocationsTimelineView.prototype._importButtonNavigationItemClicked):
+        (WI.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked):
+        Import button that just creates a new snapshot.
+
+        * UserInterface/Views/HeapSnapshotContentView.js:
+        (WI.HeapSnapshotContentView):
+        (WI.HeapSnapshotContentView.prototype.get navigationItems):
+        (WI.HeapSnapshotContentView.prototype.get supportsSave):
+        (WI.HeapSnapshotContentView.prototype.get saveData):
+        (WI.HeapSnapshotContentView.prototype._exportSnapshot):
+        Export button that saves the original data.
+
+        * UserInterface/Views/TimelineTabContentView.js:
+        (WI.TimelineTabContentView.displayNameForRecord):
+        Specialized display string for imported snapshots.
+
+2019-02-08  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Add Debug setting to show Internal Object Classes in Heap Snapshot
+        https://bugs.webkit.org/show_bug.cgi?id=194445
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Base/Setting.js:
+        * UserInterface/Views/HeapSnapshotDataGridTree.js:
+        (WI.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
+        * UserInterface/Views/SettingsTabContentView.js:
+        (WI.SettingsTabContentView.prototype._createDebugSettingsView):
+
+2019-02-08  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: close unbalanced quotes and parenthesis when editing values
+        https://bugs.webkit.org/show_bug.cgi?id=182523
+        <rdar://problem/37260209>
+
+        Reviewed by Devin Rousso.
+
+        Close CSS comments, append missing closed quotes and right parenthesis.
+
+        * UserInterface/Models/CSSCompletions.js:
+        (WI.CSSCompletions.completeUnbalancedValue):
+        * UserInterface/Models/CSSProperty.js:
+        (WI.CSSProperty.prototype.set rawValue):
+
+2019-02-07  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Make Timeline markers light gray instead of black in dark mode
+        https://bugs.webkit.org/show_bug.cgi?id=194417
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
+        (.timeline-overview-graph.rendering-frame > .divider):
+        * UserInterface/Views/TimelineRuler.css:
+        (.timeline-ruler > .markers > .divider):
+
+2019-02-06  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: DOM: don't send the entire function string with each event listener
+        https://bugs.webkit.org/show_bug.cgi?id=194293
+        <rdar://problem/47822809>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/EventListenerSectionGroup.js:
+        (WI.EventListenerSectionGroup.prototype._functionTextOrLink):
+
+2019-02-06  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: "Worker not found" uncaught protocol errors
+        https://bugs.webkit.org/show_bug.cgi?id=194319
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Base/Main.js:
+        (WI.terminatePageTarget):
+        Remove Worker targets associated with the Page on navigation.
+        Eventually we will have to associate Workers with their parent
+        frame, but for now a transition can only happen at the Page
+        level, so we can eliminate all workers on the page.
+
+        * UserInterface/Controllers/WorkerManager.js:
+        (WI.WorkerManager.prototype.workerCreated):
+        * UserInterface/Protocol/Connection.js:
+        (InspectorBackend.WorkerConnection.sendMessageToBackend):
+        Allow any WorkerAgent domain message to fail silently. This can
+        happen if a Worker is created and destroyed before the frontend
+        hears about it and sends messages to the backend for that Worker.
+
+2019-02-05  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: PropertiesChanged shouldn't fire when old and new text are both empty
+        https://bugs.webkit.org/show_bug.cgi?id=194318
+
+        Reviewed by Devin Rousso.
+
+        Previously, WI.CSSStyleDeclaration.Event.PropertiesChanged fired when
+        old text and new text were empty strings.
+
+        * UserInterface/Models/CSSStyleDeclaration.js:
+
+2019-02-05  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Lots of time spent updating related resources in ResourceDetailsSidebar when loading a page with lots of resources
+        https://bugs.webkit.org/show_bug.cgi?id=159577
+        <rdar://problem/27251461>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
+        (WI.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
+        (WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
+
+2019-02-05  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: Elements tab: selection is broken after deleting the selected node
+        https://bugs.webkit.org/show_bug.cgi?id=194300
+        <rdar://problem/47829275>
+
+        Reviewed by Devin Rousso.
+
+        Deleting a TreeElement can cause an IndexSet including indexes
+        outside the deleted range to be passed to SelectionController,
+        corrupting the internal selection state.
+
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline.prototype._indexesForSubtree.numberOfElementsInSubtree): Added.
+        (WI.TreeOutline.prototype._indexesForSubtree):
+        Finding the last (rightmost leaf) TreeElement in the subtree used
+        TreeElement.prototype.traverseNextElement to do a depth first traversal.
+        This method did not stay within the subtree rooted at `treeElement`.
+
+2019-02-05  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: REGRESSION (r240947): Resources tab: can't select main frame after refreshing page
+        https://bugs.webkit.org/show_bug.cgi?id=194254
+        <rdar://problem/47805023>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
+        TreeOutline should always call the TreeElement `select` and `deselect`
+        methods while processing selection changes. Having notifications
+        suppressed by `this._suppressNextSelectionDidChangeEvent` should only
+        affect the dispatching of TreeOutline events.
+
+2019-02-05  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: remove harmless "property was unlocked" asserts
+        https://bugs.webkit.org/show_bug.cgi?id=194262
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype.remove):
+        (WI.SpreadsheetStyleProperty.prototype.update):
+        (WI.SpreadsheetStyleProperty.prototype._handleNameChange):
+        (WI.SpreadsheetStyleProperty.prototype._handleValueChange):
+
+2019-02-04  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'classes.includes')
+        https://bugs.webkit.org/show_bug.cgi?id=194280
+        <rdar://problem/47811159>
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
+        (WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles):
+        Add a fallback value in case the `class` attribute isn't specified for the selected node.
+
+2019-02-04  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Resources: missing resource data for document on reload
+        https://bugs.webkit.org/show_bug.cgi?id=194243
+        <rdar://problem/47559021>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
+        (WI.ResourceDetailsSidebarPanel.prototype.set resource):
+        (WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
+
+        * UserInterface/Base/Object.js:
+        (WI.Object.removeEventListener):
+        Drive-by: there's no need to iterate over the entire table to check if `thisObject` exists,
+        as that is handled for us by `ListMultimap`, which we later call anyways.
+
+2019-02-04  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: REGRESSION: Resources: WI.TreeOutline assertions when refreshing the page
+        https://bugs.webkit.org/show_bug.cgi?id=194242
+        <rdar://problem/47802027>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Views/FolderizedTreeElement.js:
+        (WI.FolderizedTreeElement.prototype.removeChildren):
+        FolderTreeElements are removed by the base class call to removeChildren.
+        Calling `removeChildren` for detached TreeElements is unnecessary.
+
+2019-02-04  Matt Baker  <mattbaker@apple.com>
+
+        Web Inspector: REGRESSION: clicking a selected call frame doesn't re-scroll
+        https://bugs.webkit.org/show_bug.cgi?id=194169
+        <rdar://problem/47743864>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline.prototype._handleMouseDown):
+        Add a special case for a single-selection TreeOutline with
+        allowsRepeatSelection enabled. Since the element is already
+        selected, bypass the SelectionCongroller and dispatch an
+        event with event.data.selectedByUser set to true.
+
+2019-02-04  Nikita Vasilyev  <nvasilyev@apple.com>
+
+        Web Inspector: Styles: fix race conditions when editing
+        https://bugs.webkit.org/show_bug.cgi?id=192739
+        <rdar://problem/46752925>
+
+        Reviewed by Devin Rousso.
+
+        Editing CSS property in the style editor syncronously updates CSSStyleDeclaration on the front-end
+        and asyncronously updates the backend by calling CSSAgent.setStyleText. After the new style text is applied
+        on the backend, CSSStyleDeclaration (on the front-end) gets updated.
+
+        Unsure there's no race conditions by introducing `_updatesInProgressCount`:
+
+          - Increment it before calling CSSAgent.setStyleText.
+          - Decrement it after CSSAgent.setStyleText is finished.
+
+        Prevent updates of CSSStyleDeclaration when _updatesInProgressCount isn't 0.
+
+        * UserInterface/Models/CSSProperty.js:
+        (WI.CSSProperty.prototype._updateOwnerStyleText):
+        * UserInterface/Models/CSSStyleDeclaration.js:
+        (WI.CSSStyleDeclaration):
+        (WI.CSSStyleDeclaration.prototype.set text): Removed.
+        (WI.CSSStyleDeclaration.prototype.setText): Added.
+        Change the setter to a method since it has side effects including an asynchronous backend call.
+
+        * UserInterface/Models/DOMNodeStyles.js:
+        (WI.DOMNodeStyles.prototype.changeStyleText):
+
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype.get nameTextField): Removed.
+        (WI.SpreadsheetStyleProperty.prototype.get valueTextField): Removed.
+        Drive-by: remove unused code.
+
+2019-02-01  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: create icons for media event types instead of using a blue circle
+        https://bugs.webkit.org/show_bug.cgi?id=190381
+        <rdar://problem/45507995>
+
+        Reviewed by Brian Burg.
+
+        * UserInterface/Models/DOMNode.js:
+        (WI.DOMNode.isPlayEvent): Added.
+        (WI.DOMNode.isPauseEvent): Added.
+        (WI.DOMNode.isStopEvent): Added.
+
+        * UserInterface/Views/DOMEventsBreakdownView.js:
+        (WI.DOMEventsBreakdownView.prototype.layout):
+        * UserInterface/Views/DOMEventsBreakdownView.css:
+        (.dom-events-breakdown tr > :matches(th, td)):
+        (.dom-events-breakdown .graph):
+        (.dom-events-breakdown .graph > :matches(img, .area)): Added.
+        (.dom-events-breakdown .graph > img): Added.
+        (.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > img): Added.
+        (.dom-events-breakdown .graph > :matches(.point, .area)): Deleted.
+        (.dom-events-breakdown .graph > .point): Deleted.
+        (.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > .point): Deleted.
+
+        * UserInterface/Views/NetworkTableContentView.js:
+        (WI.NetworkTableContentView.prototype._populateWaterfallGraph.createDOMEventLine):
+
+        * UserInterface/Images/EventPause.svg: Added.
+        * UserInterface/Images/EventPlay.svg: Added.
+        * UserInterface/Images/EventProcessing.svg: Added.
+        * UserInterface/Images/EventStop.svg: Added.
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Make WI.ColumnChart a WI.View subclass
+        https://bugs.webkit.org/show_bug.cgi?id=194171
+
+        Rubber-stamped by Devin Rousso.
+
+        * UserInterface/Views/CPUTimelineOverviewGraph.js:
+        (WI.CPUTimelineOverviewGraph):
+        * UserInterface/Views/ColumnChart.js:
+        (WI.ColumnChart):
+        (WI.ColumnChart.prototype.set size):
+        (WI.ColumnChart.prototype.layout):
+        (WI.ColumnChart.prototype.get element): Deleted.
+        (WI.ColumnChart.prototype.needsLayout): Deleted.
+        (WI.ColumnChart.prototype.updateLayout): Deleted.
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Make WI.StackedLineChart a WI.View subclass
+        https://bugs.webkit.org/show_bug.cgi?id=194119
+
+        Rubber-stamped by Devin Rousso.
+
+        * UserInterface/Views/LineChart.js:
+        (WI.LineChart.prototype.layout):
+        (WI.LineChart):
+        * UserInterface/Views/MemoryTimelineOverviewGraph.js:
+        (WI.MemoryTimelineOverviewGraph):
+        * UserInterface/Views/StackedLineChart.js:
+        (WI.StackedLineChart):
+        (WI.StackedLineChart.prototype.set size):
+        (WI.StackedLineChart.prototype.layout):
+        (WI.StackedLineChart.prototype.get element): Deleted.
+        (WI.StackedLineChart.prototype.get points): Deleted.
+        (WI.StackedLineChart.prototype.needsLayout): Deleted.
+        (WI.StackedLineChart.prototype.updateLayout): Deleted.
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Make WI.CircleChart a WI.View subclass
+        https://bugs.webkit.org/show_bug.cgi?id=194118
+
+        Reviewed by Matt Baker.
+
+        * UserInterface/Views/CircleChart.js:
+        (WI.CircleChart.prototype.get centerElement):
+        (WI.CircleChart.prototype.layout):
+        (WI.CircleChart.prototype.get element): Deleted.
+        (WI.CircleChart.prototype.needsLayout): Deleted.
+        (WI.CircleChart.prototype.updateLayout): Deleted.
+        * UserInterface/Views/MemoryTimelineView.js:
+        (WI.MemoryTimelineView):
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Timeline Detail Views do not reset properly when new time range selection contains nothing
+        https://bugs.webkit.org/show_bug.cgi?id=194115
+        <rdar://problem/47716693>
+
+        Rubber-stamped by Devin Rousso.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView.prototype.reset):
+        (WI.CPUTimelineView.prototype.clear):
+        (WI.CPUTimelineView.prototype.layout):
+        * UserInterface/Views/MemoryTimelineView.js:
+        (WI.MemoryTimelineView.prototype.reset):
+        (WI.MemoryTimelineView.prototype.clear):
+        (WI.MemoryTimelineView.prototype.layout):
+        When there are no visible records in the selected range clear our UI.
+        Introduce a `clear` method that clears the UI but keeps
+        non-range-specific values (e.g. maximums).
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Timeline graphs have drawing issues with multiple discontinuities
+        https://bugs.webkit.org/show_bug.cgi?id=194110
+        <rdar://problem/47714356>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/CPUTimelineView.js:
+        (WI.CPUTimelineView):
+        (WI.CPUTimelineView.prototype.layout.xScale): Deleted.
+        * UserInterface/Views/MemoryTimelineOverviewGraph.js:
+        (WI.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
+        (WI.MemoryTimelineOverviewGraph.prototype.layout):
+        * UserInterface/Views/MemoryTimelineView.js:
+        (WI.MemoryTimelineView.prototype.layout.xScale):
+        (WI.MemoryTimelineView.prototype.layout.yScale):
+        (WI.MemoryTimelineView.prototype.layout):
+        Handle if multiple discontinuities exist between records.
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Timeline time range selection should show duration alongside start and end
+        https://bugs.webkit.org/show_bug.cgi?id=194109
+        <rdar://problem/47714279>
+
+        Reviewed by Devin Rousso.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Views/TimelineRecordingContentView.js:
+        (WI.TimelineRecordingContentView.prototype._updateTimeRangePathComponents):
+        Include the duration when not obvious.
+
+2019-02-01  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Improve API and documentation of ColumnChart
+        https://bugs.webkit.org/show_bug.cgi?id=193982
+
+        Reviewed by Devin Rousso.
+
+        This used to be named "BarChart". Convert remaining instances
+        of "bar" to "column" and clean up related things.
+
+        * UserInterface/Views/CPUTimelineOverviewGraph.css:
+        (body[dir=rtl] .timeline-overview-graph.cpu > .column-chart):
+        (.timeline-overview-graph.cpu > .column-chart > svg > rect):
+        (body[dir=rtl] .timeline-overview-graph.cpu > .bar-chart): Deleted.
+        (.timeline-overview-graph.cpu > .bar-chart > svg > rect): Deleted.
+        * UserInterface/Views/CPUTimelineOverviewGraph.js:
+        (WI.CPUTimelineOverviewGraph.prototype.layout):
+        * UserInterface/Views/ColumnChart.js:
+        (WI.ColumnChart):
+        (WI.ColumnChart.prototype.get columns):
+        (WI.ColumnChart.prototype.addColumn):
+        (WI.ColumnChart.prototype.clear):
+        (WI.ColumnChart.prototype.updateLayout):
+        (WI.ColumnChart.prototype.get bars): Deleted.
+        (WI.ColumnChart.prototype.addBar): Deleted.
+        * UserInterface/Views/StackedLineChart.js:
+        (WI.StackedLineChart.prototype.get element):
+        (WI.StackedLineChart.prototype.get points):
+
+2019-01-31  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Timeline time range selection sometimes shows 0.000, should be just 0
+        https://bugs.webkit.org/show_bug.cgi?id=194108
+        <rdar://problem/47714273>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Base/Utilities.js:
+        Check under epsilon for the zero case.
+
+2019-01-31  Matt Baker  <mattbaker@apple.com>
+
+        REGRESSION(r?): Web Inspector: Clicking on text doesn't move text caret when editing innerHTML/tagName/attribute
+        https://bugs.webkit.org/show_bug.cgi?id=192652
+        <rdar://problem/46684612>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/DOMTreeElement.js:
+        (WI.DOMTreeElement.prototype.canSelectOnMouseDown):
+        Call to Event.preventDefault() should be made here instead of at the
+        TreeOutline level.
+
+        * UserInterface/Views/TreeElement.js:
+        (WI.TreeElement.prototype.selectOnMouseDown): Deleted.
+        Remove dead code.
+
+        * UserInterface/Views/TreeOutline.js:
+        (WI.TreeOutline._handleMouseDown):
+        Do not prevent default event handling when the item cannot be selected.
+        This matches TreeOutline behavior prior to introducing SelectionController.
+
 2019-01-30  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: Memory Timeline View should be responsive / resizable