2018-04-26  Jer Noble  <jer.noble@apple.com>

        WK_COCOA_TOUCH all the things.
        https://bugs.webkit.org/show_bug.cgi?id=185006

        Reviewed by Tim Horton.

        * Configurations/WebInspectorUIFramework.xcconfig:

2018-04-21  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION(r214076): Web Inspector: Timelines load and DOMContentLoaded markers aren't visible
        https://bugs.webkit.org/show_bug.cgi?id=184858

        Reviewed by Brian Burg.

        r214076 changed the color of all markers to light gray.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .markers > .marker):
        (body[dir=ltr] .timeline-ruler > .markers > .marker):
        (body[dir=rtl] .timeline-ruler > .markers > .marker):
        (.timeline-ruler > .markers > .marker.current-time):
        (.timeline-ruler > .markers > .marker.load-event):
        (.timeline-ruler > .markers > .marker.dom-content-event):
        (.timeline-ruler > .markers > .marker.timestamp):
        (body[dir=ltr] .timeline-ruler > .markers > .marker.current-time): Deleted.
        (body[dir=rtl] .timeline-ruler > .markers > .marker.current-time): Deleted.

2018-04-19  Chris Dumez  <cdumez@apple.com>

        Rename JSDOMWindowProxy to JSWindowProxy
        https://bugs.webkit.org/show_bug.cgi?id=184797

        Reviewed by Sam Weinig.

        Rename JSDOMWindowProxy to JSWindowProxy for consistency with WindowProxy.

        * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
        (HeapSnapshot.prototype._isNodeGlobalObject):

2018-04-19  David Kilzer  <ddkilzer@apple.com>

        Enable Objective-C weak references
        <https://webkit.org/b/184789>
        <rdar://problem/39571716>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        (CLANG_ENABLE_OBJC_WEAK): Enable.

2018-04-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Can't select and copy text from Network tab popover
        https://bugs.webkit.org/show_bug.cgi?id=184606

        Reviewed by Matt Baker.

        * UserInterface/Views/ResourceTimingBreakdownView.css:
        (.waterfall-popover .resource-timing-breakdown):

2018-04-12  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Refactoring: move popover styles from JS to CSS
        https://bugs.webkit.org/show_bug.cgi?id=184558

        Reviewed by Brian Burg.

        Introduce several CSS variables to customize popover appearance in CSS
        and not JavaScript.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
        (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
        * UserInterface/Views/Popover.css:
        (.popover):
        * UserInterface/Views/Popover.js:
        (WI.Popover):
        (WI.Popover.prototype._drawBackground):
        Replace `var` with `let`.

        (WI.Popover.prototype.get backgroundStyle): Deleted.
        (WI.Popover.prototype.set backgroundStyle): Deleted.
        * UserInterface/Views/ResourceTimingBreakdownView.css:
        (.popover.waterfall-popover):
        (.waterfall-popover-content .resource-timing-breakdown):
        (.waterfall-popover .resource-timing-breakdown): Deleted.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
        (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
        * UserInterface/Views/Popover.css:
        (.popover):
        * UserInterface/Views/Popover.js:
        (WI.Popover):
        (WI.Popover.prototype._drawBackground):
        * UserInterface/Views/ResourceTimingBreakdownView.css:
        (.popover.waterfall-popover):
        (.waterfall-popover-content .resource-timing-breakdown):

2018-04-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Errors glyph doesn't fully change to blue when active
        https://bugs.webkit.org/show_bug.cgi?id=184389

        Reviewed by Joseph Pecoraro.

        The dot of the exclamation mark was always black.

        * UserInterface/Images/Errors.svg:

2018-04-03  Aaron Chu  <aaron_chu@apple.com>

        AX: Add Experimental setting for Accessibility Audit
        https://bugs.webkit.org/show_bug.cgi?id=183646
        <rdar://problem/38478583>

        Reviewed by Brian Burg.

        Added experimental feature flag for Accessibility Audit work.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Setting.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

2018-04-01  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove dead TabBrowser/TabContentView code
        https://bugs.webkit.org/show_bug.cgi?id=184104

        Reviewed by Devin Rousso.

        * UserInterface/Base/Main.js:
        (WI._tryToRestorePendingTabs):
        * UserInterface/Views/NewTabContentView.js:
        (WI.NewTabContentView.prototype.shown):
        (WI.NewTabContentView.prototype.hidden):
        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.addTabForContentView):
        (WI.TabBrowser.prototype.showTabForContentView):
        (WI.TabBrowser._tabBarItemRemoved):
        * UserInterface/Views/TabContentView.js:
        (WI.TabContentView.prototype.get parentTabBrowser): Deleted.
        (WI.TabContentView.prototype.set parentTabBrowser): Deleted.

2018-03-30  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: tint all pixels drawn by shader program when hovering ShaderProgramTreeElement
        https://bugs.webkit.org/show_bug.cgi?id=175223

        Reviewed by Matt Baker.

        * UserInterface/Models/ShaderProgram.js:
        (WI.ShaderProgram):
        (WI.ShaderProgram.prototype.showHighlight):
        (WI.ShaderProgram.prototype.hideHighlight):

        * UserInterface/Views/ShaderProgramTreeElement.js:
        (WI.ShaderProgramTreeElement.prototype.onattach):
        (WI.ShaderProgramTreeElement.prototype._handleMouseOver):
        (WI.ShaderProgramTreeElement.prototype._handleMouseOut):
        Whenever a ShaderProgramTreeElement is hovered, highlight the corresponding shader program
        by tinting the pixels it draws via a blend.

2018-03-27  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Modernize some utility functions
        https://bugs.webkit.org/show_bug.cgi?id=184047

        Reviewed by Matt Baker.

        * UserInterface/Base/Utilities.js:
        (Node.prototype.enclosingNodeOrSelfWithClass): Use parentElement instead of parentNode, so we don't need to check for document.
        (Node.prototype.enclosingNodeOrSelfWithNodeNameInArray): Ditto. Also just toUpperCase input, since nodeName is already upper case.
        (String.prototype.escapeCharacters): Use Set and string iteration instead of indexOf and charAt.

2018-03-27  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Command-Shift-left/right arrow keys should not switch tabs when focused on color picker text fields
        https://bugs.webkit.org/show_bug.cgi?id=184028

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/EditingSupport.js:
        (WI.isEventTargetAnEditableField):
        Detect <input type="number"> as an editable text field.

2018-03-23  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: don't show checkboxes for invalid properties
        https://bugs.webkit.org/show_bug.cgi?id=183951
        <rdar://problem/38807602>

        Reviewed by Matt Baker.

        Since toggling of invalid properties isn't supported by the backend, don't show checkboxes for invalid properties.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-css-declaration:matches(:hover, :focus) .property:not(:matches(.invalid-name, .invalid-value)) .property-toggle,):
        (.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,): Deleted.
        Don't show checkboxes for invalid properties but still show them for duplicate properties.

2018-03-23  Brian Burg  <bburg@apple.com>

        Web Inspector: add WebKitAdditions hooks for WebInspectorUI
        https://bugs.webkit.org/show_bug.cgi?id=183940
        <rdar://problem/38796310>

        Reviewed by Timothy Hatcher.

        * Scripts/combine-resources.pl:
        (debugLog): Added. Leave in the logging I used to debug this.

        (concatenateIncludedFilesMatchingPattern):
        (stripIncludedFilesMatchingPattern):
        (concatenateFiles): Deleted.
        This function tried to do too many things. Split it into
        two functions, one for stripping includes and one for concatenating
        files referenced by includes.

        Lastly, add a negative lookahead clause for 'WebKitAdditions' so includes
        containing that string are not combined when no input directory is passed
        to the script.

        * Scripts/copy-user-interface-resources.pl:
        WebKitAdditions is computed either from BUILT_PRODUCTS_DIR or SDKROOT,
        depending on the build style. Just try them in order and use the first
        one that exists. WebInspectorUI files are in their own directory, so
        we can assume there are files to process if that directory exists.

        Copy Main.html to derived sources before doing any processing on it.
        This makes all combining phases have the same --input-html argument.

        (debugLog): Added. Leave in the logging I used to debug this.

        (combineOrStripResourcesForWebKitAdditions):
        (stripResourcesForWebKitAdditions):
        (combineResourcesForWebKitAdditions):
        Determine if WebKitAdditions exists and whether there are any
        resources for WebInspectorUI present that need to be processed.

        * UserInterface/Main.html:
        Add stub .js and .css WebKitAdditions files. We can add more later
        if it makes sense but this is good enough to validate the build machinery.

2018-03-23  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: flashing when switching between nodes
        https://bugs.webkit.org/show_bug.cgi?id=179291
        <rdar://problem/35352660>

        Reviewed by Matt Baker.

        Flashing was happening because the layout was a two-step process:
        1. Append empty sections.
        2. Layout everything inside of the section on requestAnimationFrame.

        SpreadsheetRulesStyleDetailsPanel was converted to use layout method,
        so both steps happen on requestAnimationFrame.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
        The removed lines from the refresh method moved to the layout method without any changes.

2018-03-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Uncaught Exception: TypeError: this._textEditor.toggleUnexecutedCodeHighlights().then is not a function
        https://bugs.webkit.org/show_bug.cgi?id=181912
        <rdar://problem/36700022>

        Reviewed by Matt Baker.

        The uncaught exception was caused by returning `false` instead of a promise object.
        This patch only fixes the exception. Further enhancements should be done in <https://webkit.org/b/183887>.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WI.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
        (WI.SourceCodeTextEditor.prototype.toggleUnexecutedCodeHighlights):

2018-03-20  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: Loses focus when editing a property while page is being loaded
        https://bugs.webkit.org/show_bug.cgi?id=182619
        <rdar://problem/37363185>

        Reviewed by Matt Baker.

        Adding or removing a stylesheet causes SpreadsheetRulesStyleDetailsPanel to refresh, triggering a layout
        of all SpreadsheetCSSStyleDeclarationSection child views. This resets the focus, selection, and
        auto-completion state.

        This patch prevents SpreadsheetCSSStyleDeclarationSection from performing a layout when a property is being edited.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        Allow re-layout after creating a blank CSS property and pasting CSS code.
        - _pendingAddBlankPropertyIndexOffset is a number after pasting CSS rules.
        - _propertyPendingStartEditing is a property model after creating a new property.

2018-03-20  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Session dividers are not added when Console tab is not visible
        https://bugs.webkit.org/show_bug.cgi?id=168622

        Reviewed by Matt Baker.

        Restructure `_pendingMessages` to be a `Map [ConsoleSession, ConsoleMessageView]`. Instead
        of rendering to the `_currentConsoleGroup`, we now render to the saved `ConsoleSession`.
        Also ensure that `_pendingMessages` is cleared when navigating and "Preserve Log" is off.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WI.JavaScriptLogViewController):
        (WI.JavaScriptLogViewController.prototype.startNewSession):
        (WI.JavaScriptLogViewController.prototype.consolePromptHistoryDidChange):
        (WI.JavaScriptLogViewController.prototype._appendConsoleMessageView):
        (WI.JavaScriptLogViewController.prototype.renderPendingMessages):
        (WI.JavaScriptLogViewController.prototype.get prompt): Deleted.
        (WI.JavaScriptLogViewController.prototype.get currentConsoleGroup): Deleted.

2018-03-20  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Can't add a new class by editing class attribute in DOM outline
        https://bugs.webkit.org/show_bug.cgi?id=180890

        Reviewed by Ryosuke Niwa.

        Typing "my-foo my-bar" creates a single "my-foo\xA0my-bar" class name because
        contentEditable-based attribute editor sometimes inserts non-breaking space characters (\xA0).

        Replace all non-breaking space characters with the regular space characters when
        commiting attribute change.

        * UserInterface/Views/DOMTreeElement.js:

2018-03-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Elements: "Force Print Media Styles" should not persist across Web Inspector sessions
        https://bugs.webkit.org/show_bug.cgi?id=183708
        <rdar://problem/36452183>

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        (WI.loaded):
        * UserInterface/Views/DOMTreeContentView.js:
        (WI.DOMTreeContentView):
        (WI.DOMTreeContentView.prototype._showPrintStylesChanged):
        (WI.DOMTreeContentView.prototype._togglePrintStyles):
        (WI.DOMTreeContentView.prototype._showPrintStylesSettingChanged): Deleted.
        (WI.DOMTreeContentView.prototype._togglePrintStylesSetting): Deleted.

2018-03-14  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas: a recording initiated by the user should be shown immediately on completion
        https://bugs.webkit.org/show_bug.cgi?id=183647
        <rdar://problem/38479187>

        Reviewed by Matt Baker.

        When recordings are initiated via `console.record`, we don't want to automatically show the
        recording after it's payload is sent to the frontend. We determine whether a recording came
        from the console by comparing the recording's associated canvas with the current value of
        `_recordingCanvas`. Previously, when stopping a recording, we would always null the value,
        which meant that all non-single-frame recordings (single-frame recordings are stopped by
        the agent after the first paint or tick after an action is performed) would be categorized
        as coming from the console, since `_recordingCanvas` would be null by the time the frontend
        recieved the payload.

        This patch changes it so that the nulling of `_recordingCanvas` in `stopRecording` is only
        done if the agent command errors. It was already the case that `_recordingCanvas` was nulled
        in `stopRecording`, so this patch just prevents it from being nulled too early.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.stopRecording):

2018-03-12  Jon Davis  <jond@apple.com>

        Web Inspector: Remove redundant tooltips
        https://bugs.webkit.org/show_bug.cgi?id=183099

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        Instantiate ConsoleDrawer so the keyboard shortcuts for FindBanner are available.

        * UserInterface/Views/BreakpointTreeElement.js:
        (WI.BreakpointTreeElement):
        Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

        * UserInterface/Views/ButtonNavigationItem.js:
        (WI.ButtonNavigationItem):
        Only show tooltips when the button style is an image.

        * UserInterface/Views/ConsoleDrawer.js:
        (WI.ConsoleDrawer):
        (WI.ConsoleDrawer.prototype.toggleButtonShortcutTooltip):
        Added helper to set the toggle button keyboard shortcut tooltip.

        * UserInterface/Views/DOMBreakpointTreeElement.js:
        (WI.DOMBreakpointTreeElement):
        Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

        * UserInterface/Views/DOMNodeTreeElement.js:
        (WI.DOMNodeTreeElement):
        Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

        * UserInterface/Views/FindBanner.js:
        (WI.FindBanner):
        * UserInterface/Views/HierarchicalPathComponent.js:
        (WI.HierarchicalPathComponent):
        (WI.HierarchicalPathComponent.prototype.get tooltip):
        (WI.HierarchicalPathComponent.prototype.set tooltip):
        (WI.HierarchicalPathComponent.prototype.get hideTooltip):
        (WI.HierarchicalPathComponent.prototype.set hideTooltip):
        (WI.HierarchicalPathComponent.prototype._updateElementTitleAndText):
        Add tooltip management features to manage tooltips separately of the displayName,
        and provide a behavior to hide tooltips while retaining the tooltip data.

        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WI.HierarchicalPathNavigationItem.prototype.updateLayout):
        Hide tooltips when fully visible, show tooltips for collapsed items.

        * UserInterface/Views/PinnedTabBarItem.js:
        (WI.PinnedTabBarItem.prototype.titleDidChange):
        Set tooltips for pinned tab bar items.

        * UserInterface/Views/QuickConsole.js:
        (WI.QuickConsole):
        Set the ConsoleDrawer toggle button tooltip after the keyboard shortcut is registered.

        * UserInterface/Views/StorageTreeElement.js:
        (WI.StorageTreeElement):
        Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

        * UserInterface/Views/TabBarItem.js:
        (WI.TabBarItem.prototype.get title):
        (WI.TabBarItem.prototype.set title):
        (WI.TabBarItem.prototype.titleDidChange):
        (WI.TabBarItem):
        Add title property management with an overridable titleDidChange handler for
        setting tooltips when needed.

        * UserInterface/Views/TimelineTreeElement.js:
        (WI.TimelineTreeElement):
        Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

        * UserInterface/Views/ToggleButtonNavigationItem.js:
        (WI.ToggleButtonNavigationItem.prototype.set defaultToolTip):
        Added a setter for manging the default tooltip of a toggle button.

        * UserInterface/Views/XHRBreakpointTreeElement.js:
        (WI.XHRBreakpointTreeElement):
        Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.

2018-03-09  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Sources: Open all resources in Sources tab instead of Resources/Debugger
        https://bugs.webkit.org/show_bug.cgi?id=183317
        <rdar://problem/38108455>

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        * UserInterface/Views/ContextMenuUtilities.js:
        (WI.appendContextMenuItemsForURL):
        Introduce preferredTabType option instead of listing ignoreResourcesTab, ignoreDebuggerTab, ignoreSearchTab, and ignoreNetworkTab.
        The only correct outcome of selecting "Reveal in Sources Tab" context menu is to open Sources tab, not any other tab.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):

2018-03-08  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Sources: add SourcesTabContentView and SourceSidebarPanel classes
        https://bugs.webkit.org/show_bug.cgi?id=183316
        <rdar://problem/38107639>

        Reviewed by Matt Baker.

        Add Sources tab and sidebar panel, which are copies of the corresponding Resources classes.
        The Sources tab is shown when it's enabled in the experimental settings. This patch doesn't
        remove existing Resources and Debugger tabs.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        * UserInterface/Main.html:
        * UserInterface/Views/SourcesSidebarPanel.css: Added.
        (.sidebar > .panel.navigation.sources > .content):
        (.sidebar > .panel.navigation.sources > .navigation-bar):
        * UserInterface/Views/SourcesSidebarPanel.js: Added.
        (WI.SourcesSidebarPanel):
        (WI.SourcesSidebarPanel.shouldPlaceResourcesAtTopLevel):
        (WI.SourcesSidebarPanel.prototype.get minimumWidth):
        (WI.SourcesSidebarPanel.prototype.closed):
        (WI.SourcesSidebarPanel.prototype.showDefaultContentView):
        (WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
        (WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
        (WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject):
        (WI.SourcesSidebarPanel.prototype.initialLayout):
        (WI.SourcesSidebarPanel.prototype.hasCustomFilters):
        (WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WI.SourcesSidebarPanel.prototype._mainResourceDidChange):
        (WI.SourcesSidebarPanel.prototype._mainFrameDidChange):
        (WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
        (WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange):
        (WI.SourcesSidebarPanel.prototype._scriptWasAdded):
        (WI.SourcesSidebarPanel.prototype._addScript):
        (WI.SourcesSidebarPanel.prototype._scriptWasRemoved):
        (WI.SourcesSidebarPanel.prototype._scriptsCleared):
        (WI.SourcesSidebarPanel.prototype._styleSheetAdded):
        (WI.SourcesSidebarPanel.prototype._addTargetWithMainResource):
        (WI.SourcesSidebarPanel.prototype._targetRemoved):
        (WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
        (WI.SourcesSidebarPanel.prototype._compareTreeElements):
        (WI.SourcesSidebarPanel.prototype._extraDomainsActivated):
        (WI.SourcesSidebarPanel.prototype._scopeBarSelectionDidChange):
        * 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):

2018-03-07  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas tab: ensure that the Recording TreeOutline has a specified height for virtualization
        https://bugs.webkit.org/show_bug.cgi?id=183015

        Reviewed by Matt Baker.

        * UserInterface/Views/CanvasSidebarPanel.js:
        (WI.CanvasSidebarPanel):

        * UserInterface/Views/CanvasSidebarPanel.css:
        (.sidebar > .panel.navigation.canvas > .content):
        (.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
        (.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content):
        (.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
        (.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar): Deleted.
        (.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas): Deleted.

        * UserInterface/Views/TreeElement.js:
        (WI.TreeElement.prototype._detach):

2018-02-26  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: Scroll into view / Inspect element if Canvas has DOM node
        https://bugs.webkit.org/show_bug.cgi?id=181769

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Images/Markup.svg: Added.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView):
        (WI.CanvasContentView.prototype.initialLayout):
        (WI.CanvasContentView.prototype._canvasElementButtonClicked):

2018-02-19  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
        https://bugs.webkit.org/show_bug.cgi?id=182597
        <rdar://problem/37341564>

        Reviewed by Devin Rousso.

        Support showing/hiding the navigation sidebar panel based on the current
        represented object. Individual TabContentViews can opt-in to this behavior,
        by overriding TabContentView.prototype.managesNavigationSidebarPanel.

        * UserInterface/Views/CanvasSidebarPanel.js:
        (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
        Hide the Canvas navigation sidebar when viewing the overview.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WI.ContentBrowserTabContentView):
        (WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
        (WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
        (WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
        Provide default implementation that just defers to the TabContentView.
        This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
        will have a meaningful default to fall back on.

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
        (WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):

        * UserInterface/Views/TabContentView.js:
        (WI.TabContentView.prototype.get managesNavigationSidebarPanel):

2018-02-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TabBar redesign: remove top-level search field and pin the Search tab
        https://bugs.webkit.org/show_bug.cgi?id=182353
        <rdar://problem/37088644>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        Create Search UI based on experimental setting. When the new TabBar is
        enabled, the Search tab is a pinned tab. Since it is also saveable, it
        needs to be added to the TabBrowser (the browser adds the item to the bar).

        When restoring saved tabs, make an additional check to prevent a tab
        from being added twice. This can occur now that the Search tab is pinned.

        * UserInterface/Images/Search.svg:
        Update art to better match Safari/macOS. Slightly increase the radius of
        the lens, and shorten the length of the handle.

        * UserInterface/Views/GoToLineDialog.css:
        (.go-to-line-dialog > div::before):
        Update styles for new Search icon.

        * UserInterface/Views/LegacyTabBar.js:
        (WI.LegacyTabBar.prototype.get saveableTabCount):
        Backported new TabBar method which is called by TabBrowser.

        * UserInterface/Views/OpenResourceDialog.css:
        (.open-resource-dialog > .field::before):
        Update styles for new Search icon.

        * UserInterface/Views/PinnedTabBarItem.js:
        (WI.PinnedTabBarItem.prototype.fromTabInfo):
        Match GeneralTabBarItem.fromTabInfo.

        * UserInterface/Views/SearchTabContentView.js:
        (WI.SearchTabContentView):
        (WI.SearchTabContentView.tabInfo):
        New image (magnifying glass without border) when new TabBar is enabled.

        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView):

        * UserInterface/Views/TabBar.js:
        (WI.TabBar):
        Move creation of the Settings item out of TabBar. The TabBar should
        only be concerned with managing tabs.

        (WI.TabBar.prototype.get saveableTabCount):
        (WI.TabBar.prototype._handleContextMenu):
        (WI.TabBar.prototype.get normalNonEphemeralTabCount): Deleted.
        Now that the Search tab is pinned, there aren't any normal tabs that
        are also ephemeral. For the LegacyTabBar, both the Search and New Tab
        tabs are still in this category.

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.addTabForContentView):
        (WI.TabBrowser.prototype.closeTabForContentView):
        (WI.TabBrowser.prototype._tabBarItemSelected):
        (WI.TabBrowser._tabBarItemRemoved):
        Recent tab list should be validated against the list of saveable tabs,
        since the Search tab is no longer a normal tab (a GeneralTabBarItem),
        but is still persisted across Inspector sessions.

2018-02-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TabBar redesign: TabBarItem close button is incorrectly positioned
        https://bugs.webkit.org/show_bug.cgi?id=182844
        <rdar://problem/37586749>

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/GeneralTabBarItem.js:
        (WI.GeneralTabBarItem.prototype.set title):
        Insert the title before the last flexible space item.

        * UserInterface/Views/TabBar.css:
        (.tab-bar > .item):
        (.tab-bar > .item > .close):
        (.tab-bar > .item > .flex-space):
        (.tab-bar > .item.ephemeral > .flex-space:last-child):
        (.tab-bar.collapsed > .item):
        (.tab-bar.collapsed > .item > .flex-space):
        (.tab-bar.collapsed > .item > .close):
        (.tab-bar.collapsed > .item:hover > .close):
        (.tab-bar.collapsed > .item.ephemeral:hover > .icon):
        (.tab-bar > .item:hover > .close): Deleted.
        (.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon): Deleted.

        * UserInterface/Views/TabBarItem.js:
        (WI.TabBarItem):
        Restore flexible space items before and after the icon.

2018-02-14  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: completion popover doesn't hide when switching panels
        https://bugs.webkit.org/show_bug.cgi?id=182464
        <rdar://problem/37202763>

        Reviewed by Timothy Hatcher.

        Save the position of the anchor, an element the popover is shown for, and hide the completion popover
        when the position changes.

        * UserInterface/Views/CompletionSuggestionsView.js:
        (WI.CompletionSuggestionsView.prototype.showUntilAnchorMoves):
        When the popover is visible, check every 200ms if the anchor moved.

        (WI.CompletionSuggestionsView.prototype.hide):
        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype._updateCompletions):
        (WI.SpreadsheetTextField.prototype._getCaretRect):
        getBoundingClientRect returns {x: 0, y: 0} when it can't determine node's position.
        This happens when a node isn't attached to DOM, attached to DOM but not visible, and
        a number of odd cases.

2018-02-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TabBar redesign: only show allowed tabs in the available tabs context menu
        https://bugs.webkit.org/show_bug.cgi?id=182721
        <rdar://problem/37479019>

        Reviewed by Timothy Hatcher.

        In addition to only including allowed tabs in the TabBar context menu,
        perform a sanity check when setting the selected tab item, since the
        serialized selection index could refer to a tab that is no longer allowed.

        * UserInterface/Views/LegacyTabBar.js:
        (WI.LegacyTabBar.prototype.set selectedTabBarItem):
        (WI.LegacyTabBar.prototype._handleContextMenu):

        * UserInterface/Views/TabBar.js:
        (WI.TabBar.prototype.set selectedTabBarItem):
        (WI.TabBar.prototype._handleContextMenu):

2018-02-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas tab: tree selection abruptly changes when selecting a recording frame
        https://bugs.webkit.org/show_bug.cgi?id=182667
        <rdar://problem/37412639>

        Reviewed by Devin Rousso.

        * UserInterface/Views/CanvasSidebarPanel.css:
        (.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar):
        (.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
        (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.recording > .icon):
        (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):
        (.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .status):
        (.sidebar > .panel.navigation.canvas > .content > .navigation-bar): Deleted.
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon): Deleted.
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon): Deleted.
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status): Deleted.
        Style changes for the additional DOM element required to virtualize the recording tree outline.

        * UserInterface/Views/CanvasSidebarPanel.js:
        (WI.CanvasSidebarPanel):
        In order to be virtualized, the tree must be the only child of its parent.

        (WI.CanvasSidebarPanel.prototype.set action):
        Ensure that a frame tree element isn't deselected when the last action
        in the frame becomes selected in the RecordingContentView.

        (WI.CanvasSidebarPanel.prototype.shown):
        Refresh the sidebar, as represented objects may have changed while hidden.

        (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
        Unset the recording when no valid represented objects are found, to
        prevent a stale recording tree from being shown when viewing the overview.

        (WI.CanvasSidebarPanel.prototype._canvasChanged):
        (WI.CanvasSidebarPanel.prototype._recordingChanged):
        (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
        Moved toggling of the "has-recordings" style to _canvasChanged, since
        the navigation bar should be hidden when no canvas exists.

        * UserInterface/Views/CollectionContentView.js:
        (WI.CollectionContentView.prototype.addContentViewForItem):
        (WI.CollectionContentView.prototype.removeContentViewForItem):
        Drive by fixes for child view visible state.

        * UserInterface/Views/TreeOutline.css:
        (.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner):
        Make spinner easier to see against the selection background color.

2018-02-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Object.shallowEqual always fails when comparing array property values
        https://bugs.webkit.org/show_bug.cgi?id=182634
        <rdar://problem/37374639>

        Reviewed by Devin Rousso.

        Object.shallowEqual should use Array.shallowEqual when comparing property
        values, since strictly comparing objects/arrays is only true if both
        operands reference the same Object.

        * UserInterface/Base/Utilities.js:
        (value):

2018-02-08  Matt Baker  <mattbaker@apple.com>

        Web Inspector: add listing of Canvases/Programs/Recordings to the NavigationSidebar
        https://bugs.webkit.org/show_bug.cgi?id=178744
        <rdar://problem/35374379>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Images/Canvas2D.svg:
        * UserInterface/Images/Canvas3D.svg:
        * UserInterface/Images/Recording.svg:
        Update canvas icons to be monochrome. Simplified the recording icon.

        * UserInterface/Main.html:

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction.prototype.get state):
        (WI.RecordingAction.prototype.set state):
        Allow (2D) snapshot state to be associated with the action. Used by
        RecordingActionDetailsSidebarPanel to retrieve the snapshot state.

        * UserInterface/Views/CanvasContentView.css:
        (.content-view.canvas:not(.tab)):
        (.content-view.canvas:not(.tab) > .progress): Deleted.
        (.content-view.canvas:not(.tab) > .progress > .frame-count): Deleted.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView):
        (WI.CanvasContentView.prototype.get navigationItems):
        (WI.CanvasContentView.prototype.layout):
        (WI.CanvasContentView.prototype.shown):
        (WI.CanvasContentView.prototype._recordingStarted):
        (WI.CanvasContentView.prototype._recordingProgress):
        (WI.CanvasContentView.prototype._recordingStopped):
        (WI.CanvasContentView.prototype._updateRecordNavigationItem):
        (WI.CanvasContentView.prototype._updateProgressView):
        Replace progress UI with a reusable ProgressView class.
        When in the overview, clicking the CanvasContentView shows a dedicated
        CanvasContentView for inspecting shaders and recordings. This behavior
        is controlled by CollectionContentView, so we need to prevent it when
        clicking inside the header and footer elements, which contain clickable UI.

        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.inspect):

        * UserInterface/Views/CanvasOverviewContentView.css:
        (.content-view.canvas-overview .content-view.canvas):
        (.content-view.canvas-overview .content-view.canvas.is-recording):
        (.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
        (.content-view.canvas-overview .content-view.canvas > header):
        (.content-view.canvas-overview .content-view.canvas.is-recording > header):
        (.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
        (.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar):
        (.content-view.canvas-overview .content-view.canvas.is-recording > .progress-view,):
        (.content-view.canvas-overview .content-view.canvas.is-recording > .preview):
        (.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)): Deleted.
        (.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),): Deleted.
        (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar): Deleted.
        (.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)): Deleted.
        (.content-view.canvas-overview .content-view.canvas > .preview): Deleted.
        (.content-view.canvas-overview .content-view.canvas > .progress ~ .preview): Deleted.
        Clean up styles, and remove selection styles as canvases are no longer selectable in the overview.

        * UserInterface/Views/CanvasOverviewContentView.js:
        (WI.CanvasOverviewContentView):
        (WI.CanvasOverviewContentView.prototype.get navigationItems):
        (WI.CanvasOverviewContentView.prototype.attached):
        (WI.CanvasOverviewContentView.prototype.detached):
        (WI.CanvasOverviewContentView.prototype.get selectionPathComponents): Deleted.
        (WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically): Deleted.
        (WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally): Deleted.
        (WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged): Deleted.
        (WI.CanvasOverviewContentView.prototype._handleUp): Deleted.
        (WI.CanvasOverviewContentView.prototype._handleRight): Deleted.
        (WI.CanvasOverviewContentView.prototype._handleDown): Deleted.
        (WI.CanvasOverviewContentView.prototype._handleLeft): Deleted.
        (WI.CanvasOverviewContentView.prototype._handleSpace): Deleted.
        (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange): Deleted.
        Disable canvas selection. Remove logic for supplemental represented objects,
        path components, and selection keyboard shortcuts.

        * UserInterface/Views/CanvasSidebarPanel.css: Added.
        (.sidebar > .panel.navigation.canvas > .content):
        (.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled):
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon):
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.webgl .icon):
        (.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
        (.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas):
        (.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon):
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.shader-program > .icon):
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon):
        (.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status):

        * UserInterface/Views/CanvasSidebarPanel.js: Added.
        (WI.CanvasSidebarPanel):
        (WI.CanvasSidebarPanel.prototype.get canvas):
        (WI.CanvasSidebarPanel.prototype.set canvas):
        (WI.CanvasSidebarPanel.prototype.set recording):
        (WI.CanvasSidebarPanel.prototype.set action):
        (WI.CanvasSidebarPanel.prototype.shown):
        (WI.CanvasSidebarPanel.prototype.hidden):
        (WI.CanvasSidebarPanel.prototype.hasCustomFilters):
        (WI.CanvasSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WI.CanvasSidebarPanel.prototype.initialLayout):
        (WI.CanvasSidebarPanel.prototype._recordingAdded):
        (WI.CanvasSidebarPanel.prototype._recordingRemoved):
        (WI.CanvasSidebarPanel.prototype._scopeBarSelectionChanged):
        (WI.CanvasSidebarPanel.prototype._toggleRecording):
        (WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
        (WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
        (WI.CanvasSidebarPanel.prototype._canvasChanged):
        (WI.CanvasSidebarPanel.prototype._recordingChanged):
        (WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
        (WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
        Add new navigation sidebar, split into two sections. The upper section
        contains a tree with a single element for the current canvas, and child
        elements for any shader programs. The maximum height of this section is 50%
        of the sidebar's height. The lower section contains a tree for the selected
        recording, and a scope bar for choosing between recordings.

        * UserInterface/Views/CanvasTabContentView.css:
        (.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
        (.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon):
        (.content-view.tab.canvas .navigation-bar > .item .canvas.webgl .icon):
        (.content-view.tab.canvas .navigation-bar > .item .shader-program > .icon):
        (.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon): Deleted.
        (.content-view.tab.canvas .navigation-bar > .item .canvas .icon): Deleted.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView):
        (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
        (WI.CanvasTabContentView.prototype.attached):
        (WI.CanvasTabContentView.prototype._addCanvas):
        (WI.CanvasTabContentView.prototype._removeCanvas):
        (WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
        (WI.CanvasTabContentView.prototype._recordingAdded):
        (WI.CanvasTabContentView.prototype._handleSpace):
        (WI.CanvasTabContentView.prototype.showRepresentedObject): Deleted.
        (WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged): Deleted.
        (WI.CanvasTabContentView.prototype._recordingActionIndexChanged): Deleted.
        (WI.CanvasTabContentView.prototype._updateActionIndex): Deleted.
        The canvas tab now maintains a tree outline of all canvases, with an
        "Overview" element as the root. The Overview element is always the first
        item of content browser's hierarchical path.

        * UserInterface/Views/CanvasTreeElement.js:
        (WI.CanvasTreeElement.createRecordingTreeElement):
        (WI.CanvasTreeElement):
        (WI.CanvasTreeElement.prototype.onattach):
        (WI.CanvasTreeElement.prototype.onpopulate):
        (WI.CanvasTreeElement.prototype._updateStatus):
        (WI.CanvasTreeElement.prototype.ondetach): Deleted.
        Make it possible to not show recordings under the Canvas element.
        Create `isRecording` status element (spinner).

        * UserInterface/Views/CollectionContentView.js:
        (WI.CollectionContentView.prototype.shown):
        (WI.CollectionContentView.prototype.hidden):
        Child ContentViews need to be updated when the collection's visibility changes.

        * UserInterface/Views/ContentView.js:
        (WI.ContentView.isViewable):

        * UserInterface/Views/ProgressView.css: Added.
        (.progress-view):
        (.progress-view > .titles):
        (.progress-view > .titles > .title):
        (.progress-view > .titles > .subtitle):
        (.progress-view > .titles > .subtitle::before):
        (.progress-view > .indeterminate-progress-spinner):

        * UserInterface/Views/ProgressView.js: Added.
        (WI.ProgressView):
        (WI.ProgressView.prototype.get title):
        (WI.ProgressView.prototype.set title):
        (WI.ProgressView.prototype.get subtitle):
        (WI.ProgressView.prototype.set subtitle):
        (WI.ProgressView.prototype.get visible):
        (WI.ProgressView.prototype.set visible):
        (WI.ProgressView.prototype.initialLayout):
        (WI.ProgressView.prototype._updateTitles):
        New view class (not a ContentView) for showing a generic progress message,
        with a title, subtitle, and progress spinner.

        * UserInterface/Views/RecordingContentView.css:
        (.content-view:not(.tab).recording > .preview-container):
        Remove unnecessary styles.

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):
        (WI.RecordingContentView.prototype.get navigationItems):
        (WI.RecordingContentView.prototype.get supplementalRepresentedObjects):
        (WI.RecordingContentView.prototype.updateActionIndex):
        (WI.RecordingContentView.prototype.get saveData):
        (WI.RecordingContentView.prototype._exportRecording):
        Relocate the recording export logic and UI.
        (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
        (WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
        (WI.RecordingContentView.prototype._sliderChanged):
        Refactor logic for notifying the rest of the UI of changes to the action slider.
        The selected action is now exposed as a supplemental represented object, and a
        corresponding SupplementalRepresentedObjectsDidChange event.

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel.prototype.inspect):
        (WI.RecordingStateDetailsSidebarPanel.prototype.set action):
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
        (WI.RecordingStateDetailsSidebarPanel):
        (WI.RecordingStateDetailsSidebarPanel.prototype.updateAction): Deleted.

        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
        (WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.set action):
        (WI.RecordingTraceDetailsSidebarPanel):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction): Deleted.
        Now that the selected action is exposed to the UI as a supplemental
        represented object, details sidebars can be more decoupled from the
        canvas tab, and be notified of changes to the selection via `inspect()`.

        * UserInterface/Views/ResourceIcons.css:
        (.canvas > .icon): Deleted.
        (.shader-program .icon): Deleted.

2018-02-08  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: Typing value and quickly moving focus away may display outdated value in UI
        https://bugs.webkit.org/show_bug.cgi?id=182588
        <rdar://problem/37332161>

        Reviewed by Matt Baker.

        CSSProperty models were updated with a 250ms delay. Quickly adding a blank property after modifying
        an existing property could result in outdated values being shown.

        This patch removes the 250ms delay.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):

2018-02-07  Matt Baker  <mattbaker@apple.com>

        Web Inspector: replace isAncestor with Node.contains() in LegacyTabBar
        https://bugs.webkit.org/show_bug.cgi?id=182586

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/LegacyTabBar.js:

2018-02-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: completion popover doesn't hide when switching panels
        https://bugs.webkit.org/show_bug.cgi?id=182464
        <rdar://problem/37202763>

        Reviewed by Timothy Hatcher.

        Hide completion popover by triggering blur event on the focused text field.
        Removing text fields from the DOM tree would hide the completion popovers as well,
        but switching sidebar panels doesn't remove them from the DOM.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.hidden):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.hidden):
        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.hidden):
        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype.hidden):

2018-02-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Replace isAncestor and isDescendant with native DOM contains method
        https://bugs.webkit.org/show_bug.cgi?id=182069

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WI.restoreFocusFromElement):
        (WI._mouseDown):
        (WI._focusedContentBrowser):
        (WI._focusedContentView):
        * UserInterface/Base/Utilities.js:
        (Node.prototype.traverseNextNode):
        (Node.prototype.isAncestor): Deleted.
        (Node.prototype.isDescendant): Deleted.
        (Node.prototype.isSelfOrAncestor): Deleted.
        (Node.prototype.isSelfOrDescendant): Deleted.
        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WI.BoxModelDetailsSectionRow.prototype._handleKeyDown):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WI.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
        * UserInterface/Views/DOMTreeOutline.js:
        (WI.DOMTreeOutline.prototype._onmouseout):
        * UserInterface/Views/DetailsSection.js:
        (WI.DetailsSection.prototype._headerElementClicked):
        * UserInterface/Views/EditingSupport.js:
        (WI.incrementElementValue):
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype._handleContextMenuEvent):
        * UserInterface/Views/ShaderProgramTreeElement.js:
        (WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
        * UserInterface/Views/SoftContextMenu.js:
        (WI.SoftContextMenu.prototype._menuItemMouseOut):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
        * UserInterface/Views/TabBar.js:
        (WI.TabBar.prototype.insertTabBarItem):

2018-02-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Elements tab should have "Jump to Layer" functionality
        https://bugs.webkit.org/show_bug.cgi?id=181800

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Main.js:
        (WI.isShowingElementsTab):
        (WI.showLayersTab):
        (WI.isShowingLayersTab):

        * UserInterface/Views/ContextMenuUtilities.js:
        (WI.appendContextMenuItemsForDOMNode):

        * UserInterface/Views/LayersTabContentView.js:
        (WI.LayersTabContentView.prototype.selectLayerForNode):

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.selectLayerForNode):
        (WI.Layers3DContentView.prototype.layout):

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel):
        (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
        (WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):

2018-02-06  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Rename String.prototype.trimEnd to avoid conflicts with native trimEnd
        https://bugs.webkit.org/show_bug.cgi?id=182545

        Reviewed by Brian Burg.

        Rename:
        - trimEnd to truncateEnd
        - trimMiddle to truncateMiddle

        * UserInterface/Base/Utilities.js:
        (String.prototype.trimMiddle): Deleted.
        (String.prototype.trimEnd): Deleted.
        (String.prototype.truncateMiddle): Added.
        (String.prototype.truncateEnd): Added.
        Use strict mode. Scrict mode allows `this` to be a primitive (a string, in our case).
        In non-strict mode, `this` is always an object. Without the strict mode,
        "a".truncateEnd(42) !== "a", because truncateEnd returns a string object.

        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype._buildAttributeDOM):
        * UserInterface/Views/DOMTreeElementPathComponent.js:
        (WI.DOMTreeElementPathComponent):
        * UserInterface/Views/SearchResultTreeElement.js:
        Remove an obvious comment.

        (WI.SearchResultTreeElement.truncateAndHighlightTitle):
        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._renderValue):

2018-02-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Add an experimental setting to enable Sources tab
        https://bugs.webkit.org/show_bug.cgi?id=182461

        Reviewed by Brian Burg.

        This patch only adds a setting. It doesn't add the Sources tab.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Setting.js:
        * UserInterface/Views/SettingsTabContentView.js:

2018-02-02  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Styles Redesign: Pasting multiple properties should create properties instead of a bad property
        https://bugs.webkit.org/show_bug.cgi?id=179622
        <rdar://problem/35511170>

        Reviewed by Matt Baker.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._remove):
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
        (WI.SpreadsheetStyleProperty.prototype._handleNamePaste):
        When the user pastes into the name field, parse the text for a list of name-value pairs and
        replace the property being edited with the text of those pairs.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyAddBlankPropertySoon):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved): Deleted.
        Calling `addBlankProperty` will trigger a layout on the next frame, but that might be before
        the CSSAgent has had a chance to finish refreshing, so we need a way to defer the creation
        of a new property until after we have finished the next layout (which is after the refresh).
        Drive-by: fix naming of some delegate functions.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.replaceWithText):
        Provide a way for replacing the property with new text.

2018-02-02  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TabBar redesign: remove New Tab button and add experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=182342
        <rdar://problem/37078662>

        Reviewed by Devin Rousso.

        This patch adds a new experimental setting group, "User Interface", with
        a single setting, "Enable New TabBar". When enabled, the New Tab button is
        no longer available in the top-level TabBar. The 'open tabs' context menu
        no longer allows the last non-ephemeral open tab to be closed (unchecked).

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        (WI._tryToRestorePendingTabs):
        Retain legacy behavior behind experimental feature setting.
        (WI.isNewTabWithTypeAllowed):

        * UserInterface/Base/Setting.js:
        * UserInterface/Main.html:

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView):
        * UserInterface/Views/ConsoleTabContentView.js:
        (WI.ConsoleTabContentView):
        * UserInterface/Views/DebuggerTabContentView.js:
        (WI.DebuggerTabContentView):
        * UserInterface/Views/ElementsTabContentView.js:
        (WI.ElementsTabContentView):

        * UserInterface/Views/GeneralTabBarItem.js:
        (WI.GeneralTabBarItem):
        (WI.GeneralTabBarItem.prototype.fromTabInfo):
        (WI.GeneralTabBarItem.prototype.get isEphemeral):
        (WI.GeneralTabBarItem.fromTabContentViewConstructor): Deleted.

        * UserInterface/Views/LayersTabContentView.js:
        (WI.LayersTabContentView):

        * UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
        (WI.LegacyTabBar):
        (WI.LegacyTabBar.prototype.get newTabTabBarItem):
        (WI.LegacyTabBar.prototype.updateNewTabTabBarItemState):
        (WI.LegacyTabBar.prototype.addTabBarItem):
        (WI.LegacyTabBar.prototype.insertTabBarItem.animateTabs):
        (WI.LegacyTabBar.prototype.insertTabBarItem.removeStyles):
        (WI.LegacyTabBar.prototype.insertTabBarItem):
        (WI.LegacyTabBar.prototype.removeTabBarItem.animateTabs):
        (WI.LegacyTabBar.prototype.removeTabBarItem.removeStyles):
        (WI.LegacyTabBar.prototype.removeTabBarItem):
        (WI.LegacyTabBar.prototype.selectPreviousTab):
        (WI.LegacyTabBar.prototype.selectNextTab):
        (WI.LegacyTabBar.prototype.get selectedTabBarItem):
        (WI.LegacyTabBar.prototype.set selectedTabBarItem):
        (WI.LegacyTabBar.prototype.get tabBarItems):
        (WI.LegacyTabBar.prototype.get normalTabCount):
        (WI.LegacyTabBar.prototype.layout.forceItemHidden):
        (WI.LegacyTabBar.prototype.layout):
        (WI.LegacyTabBar.prototype._tabBarItemsFromLeftToRight):
        (WI.LegacyTabBar.prototype._findTabBarItem):
        (WI.LegacyTabBar.prototype._hasMoreThanOneNormalTab):
        (WI.LegacyTabBar.prototype._openDefaultTab):
        (WI.LegacyTabBar.prototype._recordTabBarItemSizesAndPositions):
        (WI.LegacyTabBar.prototype._applyTabBarItemSizesAndPositions):
        (WI.LegacyTabBar.prototype._clearTabBarItemSizesAndPositions):
        (WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose.):
        (WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose):
        (WI.LegacyTabBar.prototype._handleMouseDown):
        (WI.LegacyTabBar.prototype._handleClick):
        (WI.LegacyTabBar.prototype._handleMouseMoved):
        (WI.LegacyTabBar.prototype._handleMouseUp):
        (WI.LegacyTabBar.prototype._handleMouseLeave):
        (WI.LegacyTabBar.prototype._handleContextMenu):
        (WI.LegacyTabBar.prototype._handleNewTabClick):
        (WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu):
        (WI.LegacyTabBar.prototype._handleNewTabMouseEnter):

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView):
        * UserInterface/Views/NewTabContentView.js:
        (WI.NewTabContentView):
        (WI.NewTabContentView.tabInfo):
        (WI.NewTabContentView.isEphemeral): Deleted.
        * UserInterface/Views/ResourcesTabContentView.js:
        (WI.ResourcesTabContentView):
        * UserInterface/Views/SearchTabContentView.js:
        (WI.SearchTabContentView):
        (WI.SearchTabContentView.tabInfo):
        (WI.SearchTabContentView.isEphemeral): Deleted.

        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.tabInfo):
        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
        (WI.SettingsTabContentView.isEphemeral): Deleted.

        * UserInterface/Views/StorageTabContentView.js:
        (WI.StorageTabContentView):

        * UserInterface/Views/TabBar.css:
        * UserInterface/Views/TabBar.js:
        (WI.TabBar):
        (WI.TabBar.prototype.insertTabBarItem):
        (WI.TabBar.prototype.removeTabBarItem):
        (WI.TabBar.prototype.set selectedTabBarItem):
        (WI.TabBar.prototype.get normalNonEphemeralTabCount):
        (WI.TabBar.prototype._handleMouseDown):
        (WI.TabBar.prototype._handleClick):
        (WI.TabBar.prototype._handleMouseMoved):
        (WI.TabBar.prototype._handleMouseLeave):
        (WI.TabBar.prototype._handleContextMenu):
        (WI.TabBar.prototype._handleTabPickerTabContextMenu):
        (WI.TabBar.prototype.get newTabTabBarItem): Deleted.
        (WI.TabBar.prototype.updateNewTabTabBarItemState): Deleted.
        (WI.TabBar.prototype._openDefaultTab): Deleted.
        (WI.TabBar.prototype._handleNewTabClick): Deleted.
        (WI.TabBar.prototype._handleNewTabMouseEnter): Deleted.
        Remove support for the New Tab button and default tab. Without a default
        tab, there is nothing to display when no tabs are open, so prevent the
        last non-pinned tab from being removed.

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser._tabBarItemRemoved):
        * UserInterface/Views/TabContentView.js:
        (WI.TabContentView.isEphemeral): Deleted.
        * UserInterface/Views/TimelineTabContentView.js:
        (WI.TimelineTabContentView):

2018-01-30  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Replace Object.shallowMerge with ES2018 spread operator
        https://bugs.webkit.org/show_bug.cgi?id=182219

        Reviewed by Brian Burg.

        * UserInterface/Base/Utilities.js:
        (Object.shallowMerge): Deleted.
        * UserInterface/Base/DOMUtilities.js:
        (WI.linkifyNodeReference):
        * UserInterface/Base/Main.js:
        (WI.handlePossibleLinkClick):
        (WI.openURL):
        (WI.showSourceCodeLocation):
        (WI.showOriginalUnformattedSourceCodeLocation):
        (WI.showOriginalOrFormattedSourceCodeLocation):
        (WI.showOriginalOrFormattedSourceCodeTextRange):
        (WI.linkifyLocation):
        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype._insertAdjacentHTML):
        * UserInterface/Views/WebSocketContentView.js:
        (WI.WebSocketContentView.prototype._addRow):

2018-01-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Timelines content browser NavigationBar is squashed at narrow heights
        https://bugs.webkit.org/show_bug.cgi?id=182196
        <rdar://problem/36929899>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/NavigationBar.css:
        (.navigation-bar):

2018-01-26  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TabBar redesign: improvements to tab layout and resize behavior
        https://bugs.webkit.org/show_bug.cgi?id=181468
        <rdar://problem/36395439>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Images/TabPicker.svg: Added.
        New ">>" icon for the tab picker button.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView):
        * UserInterface/Views/ConsoleTabContentView.js:
        (WI.ConsoleTabContentView):
        * UserInterface/Views/DebuggerTabContentView.js:
        (WI.DebuggerTabContentView):
        * UserInterface/Views/ElementsTabContentView.js:
        (WI.ElementsTabContentView):

        * UserInterface/Views/GeneralTabBarItem.js:
        (WI.GeneralTabBarItem):
        (WI.GeneralTabBarItem.fromTabContentViewConstructor):
        (WI.GeneralTabBarItem.prototype.get title):
        Add missing override for getter/setter pair.
        (WI.GeneralTabBarItem.prototype.set title):
        (WI.GeneralTabBarItem.prototype._handleContextMenuEvent):
        Show the close button on ephemeral tabs only (Search, New Tab).
        Replace unused `representedObject` parameter with `isEphemeral`, which
        determines whether to show a close button for the tab.

        * UserInterface/Views/LayersTabContentView.js:
        (WI.LayersTabContentView):

        * UserInterface/Views/NavigationBar.js:
        Remove unused symbol.

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView):
        * UserInterface/Views/NewTabContentView.js:
        (WI.NewTabContentView):

        * UserInterface/Views/PinnedTabBarItem.js:
        (WI.PinnedTabBarItem):
        Remove unused parameter.

        * UserInterface/Views/ResourcesTabContentView.js:
        (WI.ResourcesTabContentView):
        * UserInterface/Views/SearchTabContentView.js:
        (WI.SearchTabContentView):
        * UserInterface/Views/StorageTabContentView.js:
        (WI.StorageTabContentView):

        * UserInterface/Views/TabBar.css:
        (.tab-bar > .item):
        (.tab-bar.calculate-width > .item):
        (.tab-bar > .item.pinned.tab-picker):
        (.tab-bar > .item > .close):
        (.tab-bar > .item > .title):
        (.tab-bar:not(.collapsed) > .item > .title):
        (.tab-bar.collapsed > .item:not(.pinned) > .icon):
        (.tab-bar > .item:hover > .close):
        (.tab-bar.collapsed > .item:hover > .close):
        (.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon):
        (.tab-bar.collapsed > .item.ephemeral:hover > .title):
        (body[dir=ltr] .tab-bar > .item > .close): Deleted.
        (body[dir=rtl] .tab-bar > .item > .close): Deleted.
        (.tab-bar > .item > .flex-space): Deleted.
        (.tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
        (body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
        (body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
        (body[dir=ltr] .tab-bar > .item > .title): Deleted.
        (body[dir=rtl] .tab-bar > .item > .title): Deleted.
        (.tab-bar.collapsed > .item): Deleted.
        (.tab-bar.collapsed > .item > .flex-space): Deleted.
        (.tab-bar.collapsed > .item > .close): Deleted.
        (body[dir=ltr] .tab-bar.collapsed > .item > .close): Deleted.
        (body[dir=rtl] .tab-bar.collapsed > .item > .close): Deleted.
        (.tab-bar.hide-titles > .item > .title): Deleted.
        (.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon,): Deleted.
        (.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close,): Deleted.
        Clean up tab styles and prevent tabs from shrinking during flex layout.
        Added new `calculate-width` class, to disable flex layout when measuring
        the minimum width of the TabBar required to fit all tab items.

        * UserInterface/Views/TabBar.js:
        (WI.TabBar):
        (WI.TabBar.prototype.set selectedTabBarItem):
        (WI.TabBar.prototype.layout.forceItemHidden):
        (WI.TabBar.prototype.layout):
        Perform two layout passes, similar to NavigationBar. The first pass disables
        flex layout and measures tab items at full size. If the bar isn't wide enough
        to show all the tabs, hide their icons and measure again. If there still isn't
        room, hide tabs starting from the end of the bar and display the tab picker.

        (WI.TabBar.prototype._handleMouseDown):
        (WI.TabBar.prototype._handleTabPickerTabContextMenu):

        * UserInterface/Views/TabBarItem.js:
        (WI.TabBarItem):

        * UserInterface/Views/TimelineTabContentView.js:
        (WI.TimelineTabContentView):

2018-01-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Table: Sort indicator is not displayed when sorted column is hidden and re-shown
        https://bugs.webkit.org/show_bug.cgi?id=182164
        <rdar://problem/36892619>

        Reviewed by Brian Burg.

        * UserInterface/Views/Table.js:
        (WI.Table.prototype.showColumn):
        Re-add the sort classes if the column being shown is the active sort column.

2018-01-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network - Cookies view should behave better at narrow widths, all data is hidden
        https://bugs.webkit.org/show_bug.cgi?id=182163
        <rdar://problem/36893241>

        Reviewed by Brian Burg.

        * UserInterface/Views/ResourceCookiesContentView.css:
        (.resource-cookies .table):
        Give these tables a reasonable minimum size so that if the inspector
        is narrow, the content view can still be scrolled to see all of
        the table data.

        * UserInterface/Views/Table.css:
        (.table > .header):
        Match the data-container and mark overflow as hidden, otherwise
        super narrow widths show header content beyond the edge.

2018-01-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Displayed Columns" should not be displayed in context menu if all columns are required columns
        https://bugs.webkit.org/show_bug.cgi?id=182162
        <rdar://problem/36893758>

        Reviewed by Matt Baker.

        * UserInterface/Views/Table.js:
        (WI.Table.prototype._handleHeaderContextMenu):
        Only add the header column when we know there are hideable columns.

2018-01-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Simplify update-LegacyInspectorBackendCommands.rb
        https://bugs.webkit.org/show_bug.cgi?id=182067

        Reviewed by Brian Burg.

        * Scripts/update-LegacyInspectorBackendCommands.rb:
        Remove stale dependency_json, it has always been empty for a while now.
        Switch to framework WebInspectorUI to generate only the backend commands
        and not spend time generating a bunch of cpp files.

2018-01-24  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r226994): Web Inspector: Styles: Suggestions popover floats in top-left corner of Web Inspector after tabbing
        https://bugs.webkit.org/show_bug.cgi?id=182027

        Reviewed by Matt Baker.

        r226994 added a layout of all properties on property removal. Layout caused
        a property element to be removed from DOM right before dislaying the suggestion
        popover, resulting in the popover being displayed at the top left corner.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
        Only update property view indices when a property is removed.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.set index):

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype._updateCompletions):
        Checking this._element.parentNode to see if the element is attached to the DOM tree is unreliable,
        since the element may have a non-null parent node that is detached from the DOM tree. To fix that,
        we could traverse element's ancestors, but I used a concise isConnected property instead.

2018-01-24  Joseph Pecoraro  <pecoraro@apple.com>

        ReferenceError:​ Can't find variable:​ DOMAgent (at ScriptSyntaxTree.js:​178:​22)​
        https://bugs.webkit.org/show_bug.cgi?id=182059

        Reviewed by Matt Baker.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WI.ScriptSyntaxTree.functionReturnDivot):
        DOMAgent won't be available in a ServiceWorker or JSContext inspector. So add
        a check for DOMAgent, and assume if DOMAgent doesn't exist that we should fall
        back to the latest path (non-iOS 9) target.

2018-01-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network's columns shake when scrolling at non-default zoom level
        https://bugs.webkit.org/show_bug.cgi?id=181998
        <rdar://problem/36449808>

        Reviewed by Matt Baker.

        * UserInterface/Views/Table.js:
        When zoomed the bounding client rect values were fractional, which was
        unexpected by this area of code. Floor the values to get a value we expect
        to be able to evenly distribute.

2018-01-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: data corruption when updating values quickly
        https://bugs.webkit.org/show_bug.cgi?id=179461
        <rdar://problem/35431882>

        Reviewed by Joseph Pecoraro.

        Data corruption used to happen because CSSStyleDeclaration.prototype.text didn't
        update synchronously. Making two or more quick changes resulted in corrupted data.

        Imagine we modify a CSS value 3 times:

        Front-end:  (1)-(2)---(3)
        Back-end:          (1)-----(2)-(3)

        The first response from the backend could happen after the 2nd edit. In this patch,
        CSSStyleDeclaration is locked when its view is being edited.

        To correctly display invalid and overridden properties, the backend is allowed to update
        CSSStyleDeclaration and CSSProperty when they're locked if the text from the backend
        matches the model's text. This should happen when the backend is caught up with the
        front-end changes.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.update):
        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration):
        (WI.CSSStyleDeclaration.prototype.get locked):
        (WI.CSSStyleDeclaration.prototype.set locked):
        (WI.CSSStyleDeclaration.prototype.set text):

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get editing):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set focused):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set inlineSwatchActive):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchActivated):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchDeactivated):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
        Lock CSSStyleDeclaration when a CSS property name or value is focused or
        an inline widget is active.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
        When selector is focused, clicking on the white-space should not add a new blank property.

2018-01-19  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Layers tab should do away with popovers (if possible)
        https://bugs.webkit.org/show_bug.cgi?id=181805

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        Remove superfluous colon from a string.

        * UserInterface/Main.html:
        * UserInterface/Views/LayerDetailsSidebarPanel.css:
        * UserInterface/Views/Layers3DContentView.css: Added.
        Remove popover styling from sidebar, add new file with similar styling for canvas overlay.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel):
        (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
        (WI.LayerDetailsSidebarPanel.prototype._updateLayers):
        (WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
        (WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._presentPopover): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._contentForPopover): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons.addReason): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons): Deleted.
        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.shown):
        (WI.Layers3DContentView.prototype.selectLayerById):
        (WI.Layers3DContentView.prototype._canvasMouseDown):
        (WI.Layers3DContentView.prototype._buildLayerInfoElement):
        (WI.Layers3DContentView.prototype._updateLayerInfoElement):
        (WI.Layers3DContentView.prototype._updateReasonsList):
        Remove popover from sidebar table, overlay div with same data arrangement on top of the canvas.
        Also reverse the fix from r226671 since the visualization is no longer unusable without the sidebar!

2018-01-19  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas Tab: Multiple "waiting for frames" messages displayed
        https://bugs.webkit.org/show_bug.cgi?id=181865
        <rdar://problem/36664737>

        Reviewed by Devin Rousso.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView.prototype._recordingStarted):
        (WI.CanvasContentView.prototype._recordingStopped):

2018-01-19  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: tabbing on commented out property throws exception
        https://bugs.webkit.org/show_bug.cgi?id=180676
        <rdar://problem/35981058>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
        Tabbing from the selector field should focus on the first editable property.
        When no editable properties are present, a new blank property should be added after the commented out ones.

        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
        Shift-tabbing from the selector field should focus on the last editable property of the previous CSS rule.
        When no editable properties are present, a new blank property should be added after the commented out ones.

        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
        When navigating between properties skip the commented out ones.

        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._editablePropertyAfter):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._editablePropertyBefore):
        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype.get enabled):
        (WI.SpreadsheetStyleProperty.prototype._update):

2018-01-19  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Make styles sidebar always LTR
        https://bugs.webkit.org/show_bug.cgi?id=175357
        <rdar://problem/33787988>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel):

2018-01-19  Keith Miller  <keith_miller@apple.com>

        HaveInternalSDK includes should be "#include?"
        https://bugs.webkit.org/show_bug.cgi?id=179670

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2018-01-18  Dan Bernstein  <mitz@apple.com>

        [Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=181803

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Updated.
        * Configurations/DebugRelease.xcconfig: Ditto.
        * Configurations/Version.xcconfig: Ditto.

2018-01-18  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: record button on canvas card doesn't always show on hover, or is misplaced
        https://bugs.webkit.org/show_bug.cgi?id=179183

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CanvasOverviewContentView.css:
        (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop): Deleted.

2018-01-17  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: clicking on a path component that has no siblings should select it
        https://bugs.webkit.org/show_bug.cgi?id=181772

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/HierarchicalPathComponent.js:
        (WI.HierarchicalPathComponent.prototype._updateSelectElement):
        (WI.HierarchicalPathComponent.prototype._selectElementMouseDown):

2018-01-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add back localized strings for Styles sidebar panels
        https://bugs.webkit.org/show_bug.cgi?id=181748
        <rdar://problem/36583184>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ComputedStyleDetailsSidebarPanel.js:
        (WI.ComputedStyleDetailsSidebarPanel):
        * UserInterface/Views/RulesStyleDetailsSidebarPanel.js:
        (WI.RulesStyleDetailsSidebarPanel):
        * UserInterface/Views/VisualStyleDetailsSidebarPanel.js:
        (WI.VisualStyleDetailsSidebarPanel):
        Add back localized strings for panel titles lost in r225547.

2018-01-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Super long URL string causes bad wrapping in Resources detail sidebar
        https://bugs.webkit.org/show_bug.cgi?id=181617

        Reviewed by Brian Burg.

        * UserInterface/Views/DetailsSection.css:
        (.details-section > .content > .group > .row.simple > .value):
        Set the break to all characters.

2018-01-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas tab: typing a "space" in the QuickConsole shouldn't trigger a recording
        https://bugs.webkit.org/show_bug.cgi?id=181706
        <rdar://problem/36558221>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CanvasOverviewContentView.js:
        (WI.CanvasOverviewContentView):
        (WI.CanvasOverviewContentView.prototype._handleSpace):

2018-01-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make Console's Execution Context picker stand out when it is non-default
        https://bugs.webkit.org/show_bug.cgi?id=181628
        <rdar://problem/36492044>

        Reviewed by Matt Baker.

        * UserInterface/Views/HierarchicalPathComponent.css:
        (.hierarchical-path-component > .selector-arrows):
        * UserInterface/Views/HierarchicalPathComponent.js:
        (WI.HierarchicalPathComponent.prototype.set selectorArrows):
        Switch to SVG element so we can style the arrows.

        * UserInterface/Views/QuickConsole.css:
        (.quick-console > .navigation-bar > .hierarchical-path .execution-context):
        (.quick-console > .navigation-bar > .hierarchical-path .execution-context .separator):
        (.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context):
        (.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context .selector-arrows):
        Styles for the execution context picker. We hide the unused separator
        and instead use margin so that the selected background and border don't
        have an extra 7px on the right/end side.

        * UserInterface/Views/QuickConsole.js:
        (WI.QuickConsole.prototype._activeExecutionContextChanged):
        Toggle the non-default class name on the path.

2018-01-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: pressing down key should select first item from completion list when focusing on empty value
        https://bugs.webkit.org/show_bug.cgi?id=181633
        <rdar://problem/36501797>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype._updateCompletions):

2018-01-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Long value causes bad wrapping
        https://bugs.webkit.org/show_bug.cgi?id=181618
        <rdar://problem/36485175>

        Reviewed by Joseph Pecoraro.

        Wrap long values only when editing.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .value.editing):

2018-01-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: clicking on the white space after the property sometimes places a blank property at the wrong index
        https://bugs.webkit.org/show_bug.cgi?id=179585
        <rdar://problem/35490780>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
        Layout call is needed to update data-property-index attributes on the property views.

2018-01-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Export HAR Context Menu not working
        https://bugs.webkit.org/show_bug.cgi?id=181694
        <rdar://problem/36479197>

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
        Ensure `this` works in the handler.

2018-01-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TabBar redesign: add context menu to TabBar for toggling available tabs
        https://bugs.webkit.org/show_bug.cgi?id=181448
        <rdar://problem/36383298>

        Reviewed by Devin Rousso.

        * UserInterface/Base/Main.js:
        (WI.loaded):
        (WI.contentLoaded):
        Reorder production tab classes and default (open) tabs.
        (WI.registerTabClass): Removed.
        Not used.

        * UserInterface/Base/Object.js:
        Remove notification that is no longer used.

        * UserInterface/Views/GeneralTabBarItem.js:
        (WI.GeneralTabBarItem):
        (WI.GeneralTabBarItem.prototype.set title):
        (WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
        Remove per-tab context menu (provided Close Tab and Close Other Tabs).

        * UserInterface/Views/NewTabContentView.js:
        (WI.NewTabContentView):

        * UserInterface/Views/TabBar.js:
        (WI.TabBar):
        (WI.TabBar.prototype._handleContextMenu):

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser):
        (WI.TabBrowser._handleNewTabContextMenu): Deleted.
        No longer needed.

2018-01-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: properties should never be semitransparent or crossed out while editing
        https://bugs.webkit.org/show_bug.cgi?id=180793
        <rdar://problem/36038813>

        Reviewed by Devin Rousso.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .value.editing):
        (.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
        (.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled) .content > *):
        (.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .content .value):
        (.spreadsheet-style-declaration-editor .property.not-inherited .content > *):
        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._update):

2018-01-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Drop support for iOS 7 targets
        https://bugs.webkit.org/show_bug.cgi?id=181549
        <rdar://problem/36444813>

        Reviewed by Brian Burg.

        * Versions/Inspector-iOS-7.0.json: Removed.
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js: Removed.
        Remove protocol snapshot and generated commands for iOS 7.

        * UserInterface/Base/Main.js:
        * UserInterface/Controllers/BreakpointPopoverController.js:
        (WI.BreakpointPopoverController.prototype._createPopoverContent):
        * UserInterface/Controllers/DebuggerManager.js:
        (WI.DebuggerManager.prototype._setBreakpoint):
        * UserInterface/Controllers/SourceMapManager.js:
        (WI.SourceMapManager.prototype._loadAndParseSourceMap):
        * UserInterface/Models/Instrument.js:
        (WI.Instrument.startLegacyTimelineAgent):
        * UserInterface/Models/ResourceTimingData.js:
        * UserInterface/Models/ScriptTimelineRecord.js:
        (WI.ScriptTimelineRecord.EventType.displayName):
        * UserInterface/Models/SourceMapResource.js:
        (WI.SourceMapResource.prototype.requestContentFromBackend):
        * UserInterface/Protocol/CSSObserver.js:
        (WI.CSSObserver.prototype.regionLayoutUpdated): Deleted.
        * UserInterface/Protocol/RemoteObject.js:
        (WI.RemoteObject.fromPayload):
        Remove code that was only necessary to support iOS 7.

2018-01-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Support JSX (React) syntax highlighting
        https://bugs.webkit.org/show_bug.cgi?id=181607
        <rdar://problem/36442564>

        Reviewed by Brian Burg.

        * UserInterface/Base/MIMETypeUtilities.js:
        (WI.mimeTypeForFileExtension):
        (WI.fileExtensionForMIMEType):
        * UserInterface/Models/Resource.js:
        Support the jsx extension and mime types.

        * UserInterface/Main.html:
        * Scripts/update-codemirror-resources.rb:
        * UserInterface/External/CodeMirror/jsx.js: Added.
        Include new mode from CodeMirror@d8926768.

2018-01-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Rename "Query String" section as "Query String Parameters" for clarity
        https://bugs.webkit.org/show_bug.cgi?id=181464

        Reviewed by Darin Adler.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView.prototype.initialLayout):

2018-01-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused variable in WI.DebuggerSidebarPanel
        https://bugs.webkit.org/show_bug.cgi?id=181517

        Reviewed by Matt Baker.

        * UserInterface/Views/DebuggerSidebarPanel.js:

2018-01-10  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r218975): Web Inspector: Add back NavigationSidebarPanel initialization parameter used by SearchSidebarPanel (top overflow shadow)
        https://bugs.webkit.org/show_bug.cgi?id=181518
        <rdar://problem/36427197>

        Reviewed by Matt Baker.

        * UserInterface/Views/NavigationSidebarPanel.css:
        (.sidebar > .panel.navigation > .overflow-shadow.top):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WI.NavigationSidebarPanel):
        Add back the initialization parameter still used by SearchSidebarPanel
        and add back its implementation. There were still references to
        dynamically update _topOverflowShadowElement in NavigationSidebarPanel.

2018-01-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Incorrect check with WI.debuggableType
        https://bugs.webkit.org/show_bug.cgi?id=181515
        <rdar://problem/36425509>

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        This moved to WI.sharedApp a while ago.

2018-01-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas tab: throttle recording slider updates
        https://bugs.webkit.org/show_bug.cgi?id=180839
        <rdar://problem/36057849>

        Reviewed by Joseph Pecoraro

        * UserInterface/Base/Utilities.js:
        Add Object.throttle and Function.cancelThrottle. Repeated calls to a
        function on a throttled object are delayed, so that the function isn't
        invoked more frequently than the specified delay value.

        For a description of throttling behavior see:
          - http://www.chrislondon.co/throttling-vs-debouncing
          - http://benalman.com/projects/jquery-throttle-debounce-plugin

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView.prototype.updateActionIndex):
        Throttle frequency of canvas snapshot creation to 200ms.
        (WI.RecordingContentView.prototype.hidden):
        Prevent trailing edge call after hiding the view.

2018-01-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Should not try to autocomplete subsections of a string
        https://bugs.webkit.org/show_bug.cgi?id=181461
        <rdar://problem/36369421>

        Reviewed by Brian Burg.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WI.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
        Disable autocompletion within strings.

2018-01-09  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r201855): Web Inspector: Should see "length" autocompletion suggestion on a string literal
        https://bugs.webkit.org/show_bug.cgi?id=181462
        <rdar://problem/36390699>

        Reviewed by Matt Baker.

        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.inspectedPage_evalResult_getCompletions):
        This is code that runs on the inspected target, which may have an old version of
        WebKit/JavaScriptCore, so don't use new syntax like this.

        (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
        We intended to return the result by as a JSON value instead of a RemoteObject.

2018-01-09  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Layers sidebar shows popover on selection even when collapsed
        https://bugs.webkit.org/show_bug.cgi?id=181465

        Reviewed by Matt Baker.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
        Have sidebar show itself if necessary before displaying popover.

2018-01-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Find next / previous within a resource content view does not have bouncy highlight when editor scrolls
        https://bugs.webkit.org/show_bug.cgi?id=181279
        <rdar://problem/36291097>

        Reviewed by Brian Burg.

        * UserInterface/Views/TextEditor.js:
        (WI.TextEditor.prototype._revealSearchResult):
        Reposition the bouncy highlight on scroll based on the CodeMirror
        line/ch position of the search result.

        (WI.TextEditor.prototype._removeBouncyHighlightElementIfNeeded):
        Track the bouncy highlight scroll handler in a member variable so that
        we always remember to remove it and don't leak scroll handlers.

2018-01-07  David Kilzer  <ddkilzer@apple.com>

        Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
        <https://webkit.org/b/181256>
        <rdar://problem/36281730>

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        (WARNING_CFLAGS): Add -Wcast-qual.

2018-01-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add another Protocol Version
        https://bugs.webkit.org/show_bug.cgi?id=181354
        <rdar://problem/35432817>

        Reviewed by Matt Baker.

        * UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js: Added.
        * Versions/Inspector-iOS-11.3.json: Added.

2018-01-04  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic
        https://bugs.webkit.org/show_bug.cgi?id=180770

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.fromPayload):
        (WI.Canvas.prototype.get contextType):
        (WI.Canvas.prototype.saveIdentityToCookie):
        (WI.Canvas.prototype.get frame): Deleted.

2018-01-04  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION (r225709): Web Inspector: CSS Source maps not loading
        https://bugs.webkit.org/show_bug.cgi?id=181314
        <rdar://problem/36177620>

        Reviewed by Brian Burg.

        * UserInterface/Controllers/SourceMapManager.js:
        (WI.SourceMapManager.prototype._loadAndParseSourceMap):
        * UserInterface/Models/SourceMapResource.js:
        (WI.SourceMapResource.prototype.requestContentFromBackend):
        Correct this so that we only fall back to a reasonable frame id
        if we couldn't determine a frame id from earlier. Previously this
        was incorrectly clearing the frame id if we had gotten it earlier.

        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WI.loaded):
        Add SourceMap related files for tests.

2018-01-04  Brian Burg  <bburg@apple.com>

        Web Inspector: Capture Element Screenshot looks fuzzy
        https://bugs.webkit.org/show_bug.cgi?id=175734
        <rdar://problem/33803377>

        Reviewed by Joseph Pecoraro and Simon Fraser.

        Spruce up these functions a bit. They now optionally return a promise
        if no callback is supplied. They now can take either a WI.DOMNode or a node id.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WI.DOMTreeManager.prototype.querySelector):
        (WI.DOMTreeManager.prototype.querySelectorAll):

2018-01-04  Brian Burg  <bburg@apple.com>

        Web Inspector: add RemoteObject.fetchProperties and some basic tests for RemoteObject API
        https://bugs.webkit.org/show_bug.cgi?id=180945

        Reviewed by Joseph Pecoraro.

        Add a new method, fetchProperties, which async fetches an arbitrary list of properties
        from a RemoteObject. This is intended for writing tests and other quick evaluations,
        so it has some behaviors that are suitable in these situations:
        - If the evaluation throws an exception, the result will reject with that exception.
        - If there is a protocol error for some reason, the result will reject with an exception.
        - Non-string and non-number keys cause an exception, as this is probably not intended.
        - Does not accept a callback, returns a promise only. New code should use async.

        For full fidelity introspection of property descriptors, clients should use the existing
        getOwnPropertyDescriptor[s] class of methods.

        * UserInterface/Protocol/RemoteObject.js:
        (WI.RemoteObject.prototype.async.fetchProperties): Added.
        - Validate specified keys and remove duplicates.
        - Request properties one-by-one to avoid fetching all descriptors and dealing with previews.
        - Unwrap returned primitive values to avoid unnecessary munging in tests.

        (WI.RemoteObject.prototype.getProperty):
        - Rework this to return a promise if no callback was supplied.
        - Introduce stricter property type checking to avoid unintended mistakes.

        (WI.RemoteObject.prototype.callFunction):
        - Rework this to return a promise if no callback was supplied.
        - Turn thrown exceptions and protocol errors into rejected promises.

2018-01-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ⌘G / ⇧⌘G text search does not working after closing find banner
        https://bugs.webkit.org/show_bug.cgi?id=181280
        <rdar://problem/36291175>

        Reviewed by Matt Baker.

        * UserInterface/Views/ContentBrowser.js:
        (WI.ContentBrowser.prototype._findBannerDidHide):
        When the find banner is hidden trigger a new ContentView method,
        searchHidden instead of the destructive searchCleared. This allows
        most content views (text editors, DOM tree, Network Headers view)
        to keep their populated search results.

        * UserInterface/Views/ContentView.js:
        (WI.ContentView.prototype.searchHidden):
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype.searchHidden):
        By default searchHidden does nothing. The Console's LogContentView
        treats the find banner differently and clears its search results.

        * UserInterface/Views/TextEditor.js:
        (WI.TextEditor.prototype.searchCleared):
        Modernize some code while working in this area.

        * UserInterface/Views/Main.css:
        (.bouncy-highlight):
        Ensure black text on yellow background in the bouncy highlight. In the
        DOM Tree it could have been white if the find banner was closed.

2018-01-03  Ting-Wei Lan  <lantw44@gmail.com>

        Replace hard-coded paths in shebangs with #!/usr/bin/env
        https://bugs.webkit.org/show_bug.cgi?id=181040

        Reviewed by Alex Christensen.

        * Scripts/combine-resources.pl:
        * Scripts/copy-user-interface-resources-dryrun.rb:
        * Scripts/copy-user-interface-resources.pl:
        * Scripts/fix-worker-imports-for-optimized-builds.pl:
        * Scripts/remove-console-asserts-dryrun.rb:
        * Scripts/remove-console-asserts.pl:
        * Scripts/update-LegacyInspectorBackendCommands.rb:
        * Scripts/update-codemirror-resources.rb:
        * WebInspectorUI.vcxproj/build-webinspectorui.pl:

2018-01-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Log Value" context menu is sometimes unavailable
        https://bugs.webkit.org/show_bug.cgi?id=181278
        <rdar://problem/36281649>

        Reviewed by Devin Rousso.

        * UserInterface/Views/ObjectPreviewView.css:
        (.object-preview > .title):
        * UserInterface/Views/ObjectTreeView.css:
        (.object-tree.expanded > .title):
        Make the expanded object title information 16px tall to match ObjectTree
        tree element row heights. This eliminates the floating console message
        location from overlapping the first ObjectTree's TreeElement and causing
        truncation and other behavior issues (like Context Menu identification).

2018-01-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: RTL - DOM Tree Element selection doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=181275
        <rdar://problem/36290450>

        Reviewed by Devin Rousso.

        * UserInterface/Views/TreeOutline.js:
        (WI.TreeOutline.prototype.treeElementFromEvent):
        Provide a better explanation for why we are making the `x` adjustment here,
        to detect the inner most tree element along the horizontal. Fix the algorithm
        for RTL, since the intent is to adjust to the trailing edge of the container
        which is on the opposite side in RTL.

2018-01-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Find banner sometimes does not work (when already populated and shown for first time on resource)
        https://bugs.webkit.org/show_bug.cgi?id=181255
        <rdar://problem/36248855>

        Reviewed by Matt Baker.

        * UserInterface/Views/TextEditor.js:
        (WI.TextEditor.prototype.set string):
        Defer any early searches until the initial content of a TextEditor has been set.
        Such searches can happen when the FindBanner already has content when a
        ContentView is first opened and needs to load its content from the backend.
        Further, even though the content may be loaded from the backend before the
        search results, microtask hops might cause the content to get to the TextEditor
        after the search results.

2018-01-03  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION: Web Inspector: Debugger tab doesn't restore selected resource on reload
        https://bugs.webkit.org/show_bug.cgi?id=181253
        <rdar://problem/36280564>

        Reviewed by Matt Baker.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
        Add braces to ensure the trailing else is actually trailing the outer
        chain as it was intended to be.

2018-01-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Clicking source location link in Console unexpectedly jumps to Network tab
        https://bugs.webkit.org/show_bug.cgi?id=181229
        <rdar://problem/36075219>

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        Cleanup linkifyURLAsNode. Ignore Search tab in generic handlePossibleLinkClick
        when not already in the Search tab.

        * UserInterface/Views/CallFrameView.js:
        (WI.CallFrameView):
        Ignore Search and Network tab in CallFrame links.

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Improve style.

== Rolled over to ChangeLog-2018-01-01 ==
