ChangeLog-2018-01-01   [plain text]


2017-12-19  Brian Burg  <bburg@apple.com>

        Web Inspector: InspectorTest.evaluateInPage should return a rejection if an error was thrown
        https://bugs.webkit.org/show_bug.cgi?id=180956

        Reviewed by Joseph Pecoraro.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.evaluateInPage.translateResult): Renamed.
        (FrontendTestHarness.prototype.evaluateInPage):
        If the result was thrown, then reject with the error.
        Rename the helper method to match the same one in RemoteObject.prototype.fetchProperties.

2017-12-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Table - Redesign the waterfall popover showing timing data
        https://bugs.webkit.org/show_bug.cgi?id=180996
        <rdar://problem/34072542>

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New strings and files.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
        (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
        Use the ResourceTimingBreakdownView with a fixed width size.

        * UserInterface/Views/ResourceTimingContentView.css: Removed.
        * UserInterface/Views/ResourceTimingContentView.js:
        (WI.ResourceTimingContentView.prototype.initialLayout):
        (WI.ResourceTimingContentView.prototype._refreshTimingSection):
        (WI.ResourceTimingContentView.prototype._refreshTimingSection.createBlock): Deleted.
        (WI.ResourceTimingContentView.prototype._refreshTimingSection.createTimeLabel): Deleted.
        (WI.ResourceTimingContentView.prototype._refreshTimingSection.createRow): Deleted.
        Use the ResourceTimingBreakdownView with a flexible size.
        Also changed the loading indicator and empty message to match
        normal ContentView loading indicator and message only UI.

        * UserInterface/Views/ResourceTimingBreakdownView.css:
        (.waterfall-popover .resource-timing-breakdown):
        (.resource-timing-breakdown > table > tr > td.label):
        (.resource-timing-breakdown > table > tr > td.graph):
        (.resource-timing-breakdown > table > tr > td.time):
        (.resource-timing-breakdown > table > tr.empty):
        (.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
        (.resource-timing-breakdown > table hr):
        (.resource-timing-breakdown .waterfall .block):
        (.resource-timing-breakdown): Deleted.
        (.resource-timing-breakdown > .waterfall): Deleted.
        (.resource-timing-breakdown > .waterfall .block): Deleted.
        (.resource-timing-breakdown ul): Deleted.
        (.resource-timing-breakdown ul > li): Deleted.
        (.resource-timing-breakdown ul > li > .row-label): Deleted.
        (body[dir=ltr] .resource-timing-breakdown ul > li > .row-label): Deleted.
        (body[dir=rtl] .resource-timing-breakdown ul > li > .row-label): Deleted.
        (.resource-timing-breakdown ul > li > .section-label): Deleted.
        (.resource-timing-breakdown ul > li > .time-label): Deleted.
        (.resource-timing-breakdown .time-section): Deleted.
        (.resource-timing-breakdown ul > li > .time-section > .label): Deleted.
        (.resource-timing-breakdown ul > li.total .block): Deleted.
        (.resource-timing-breakdown ul > li.total .time-label): Deleted.
        * UserInterface/Views/ResourceTimingBreakdownView.js:
        (WI.ResourceTimingBreakdownView):
        (WI.ResourceTimingBreakdownView.prototype._appendEmptyRow):
        (WI.ResourceTimingBreakdownView.prototype._appendHeaderRow):
        (WI.ResourceTimingBreakdownView.prototype._appendRow):
        (WI.ResourceTimingBreakdownView.prototype.initialLayout):
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.createBlock): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.createSectionLabel): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.createTimeLabel): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.createTimeSection): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.createRow): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.emptyRow): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.appendGraphRow): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.appendEmptyRow): Deleted.
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.getCurrentSectionMetrics): Deleted.
        Redesign the breakdown view.

2017-12-19  Brian Burg  <bburg@apple.com>

        Web Inspector: InspectorTest.expectException does not handle implicitly resolved async functions correctly
        https://bugs.webkit.org/show_bug.cgi?id=180944

        Reviewed by Joseph Pecoraro.

        * UserInterface/Test/TestHarness.js:
        (TestHarness.prototype.expectException):
        Don't chain .catch after we might have just returned a rejected promise.

2017-12-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Table - Update the Time column to include the total duration not just the download duration
        https://bugs.webkit.org/show_bug.cgi?id=180998
        <rdar://problem/36140424>

        Reviewed by Matt Baker.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.get totalDuration):
        (WI.Resource.prototype.get duration): Deleted.
        Rename and group getters to be clearer.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._entryForResource):
        Use the totalDuration for the network table time column.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar graphDataSource.get secondsPerPixel):
        Using the download duration was incorrect here.

2017-12-19  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Styles Redesign: Typing semicolon at the end of value should move to the next property
        https://bugs.webkit.org/show_bug.cgi?id=178498
        <rdar://problem/35065995>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetStypeProperty.js:
        (WI.SpreadsheetStypeProperty.prototype._update):
        (WI.SpreadsheetStypeProperty.prototype._handleValueBeforeInput):
        Only move to the next property if there are no unbalanced quotes. For example, adding a
        semicolon after `url("foo` or `url('bar` would not move to the next property.

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype.valueWithoutSuggestion):
        (WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
        (WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
        (WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
        (WI.SpreadsheetTextField.prototype._updateCompletions):
        (WI.SpreadsheetTextField.prototype._getPrefix): Deleted.

2017-12-18  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Command-S should save changes in matching CSS resource
        https://bugs.webkit.org/show_bug.cgi?id=180900

        Reviewed by Timothy Hatcher.

        When focused on a CSS selector, property name or value, pressing Command-S should save
        the CSS resource to the file system.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._save):

2017-12-18  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Styles Redesign: add inline swatch for CSS variables
        https://bugs.webkit.org/show_bug.cgi?id=180798

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.updateStatus):
        (WI.SpreadsheetStyleProperty.prototype._renderValue):
        (WI.SpreadsheetStyleProperty.prototype._addVariableTokens):

2017-12-18  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: recording view and slider have jumbled layout at narrow widths
        https://bugs.webkit.org/show_bug.cgi?id=180597
        <rdar://problem/35939904>

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/RecordingContentView.css:
        (.content-view:not(.tab).recording > header > .slider-container):
        (.content-view:not(.tab).recording > header > .slider-container > *):
        (.content-view:not(.tab).recording > header > .slider-container > input[type=range]):

2017-12-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas tab: placeholder/help text wrapping looks poor at narrow widths
        https://bugs.webkit.org/show_bug.cgi?id=180943
        <rdar://problem/36114431>

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ContentView.css:
        (.content-view > .message-text-view > .description):
        * UserInterface/Views/Main.css:
        (.message-text-view .navigation-item-help):
        (.message-text-view .navigation-item-help .navigation-bar):
        (.message-text-view .navigation-item-help .navigation-bar > .item):

2017-12-18  Devin Rousso  <webkit@devinrousso.com>

        REGRESSION (r225569): Web Inspector: Commented out properties aren't properly highlighted
        https://bugs.webkit.org/show_bug.cgi?id=180687

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property:not(.disabled) .name):
        (.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
        (.spreadsheet-style-declaration-editor .property.disabled):
        (.spreadsheet-style-declaration-editor .name): Deleted.
        (.spreadsheet-style-declaration-editor .value): Deleted.
        (.spreadsheet-style-declaration-editor .property.disabled, .spreadsheet-style-declaration-editor .property.disabled > *): Deleted.

2017-12-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - waterfall graph can be mis-sized after closing detail view
        https://bugs.webkit.org/show_bug.cgi?id=180903
        <rdar://problem/36087903>

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._hideResourceDetailView):
        Redraw waterfall column after hiding the detail view.

2017-12-15  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r225941.

        This change introduced LayoutTest crashes and assertion
        failures.

        Reverted changeset:

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

2017-12-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab should be turned on by default
        https://bugs.webkit.org/show_bug.cgi?id=180594
        <rdar://problem/35938917>

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WI.loaded):

2017-12-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: clicking above selector should prepend new property
        https://bugs.webkit.org/show_bug.cgi?id=180628
        <rdar://problem/35954570>

        Reviewed by Devin Rousso.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property):
        (.spreadsheet-style-declaration-editor .property-toggle):
        (.spreadsheet-style-declaration-editor .property.has-warning .warning):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration):
        (.spreadsheet-css-declaration :matches(.header, .header-media)):
        (.spreadsheet-css-declaration :matches(.header, .header-media):first-child):
        When header-media element is present, header element should have padding-top set to 0.

        (.spreadsheet-css-declaration .header.editing-selector .origin):
        (.spreadsheet-css-declaration .close-brace):

2017-12-14  David Kilzer  <ddkilzer@apple.com>

        Enable -Wstrict-prototypes for WebKit
        <https://webkit.org/b/180757>
        <rdar://problem/36024132>

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/Base.xcconfig:
        (CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

2017-12-14  Brian Burg  <bburg@apple.com>

        Web Inspector: InspectorTest.evaluateInPage should unwrap primitive values by default
        https://bugs.webkit.org/show_bug.cgi?id=180831

        Reviewed by Joseph Pecoraro.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.evaluateInPage.resultObjectToReturn):
        (FrontendTestHarness.prototype.evaluateInPage):
        Unwrap the resulting RemoteObject's value if it is a primitive.
        Add an `options` dictionary so this behavior can be opted out.

        * UserInterface/Test/TestHarness.js:
        Add documentation of how evaluateInPage works.

2017-12-14  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: selecting text should not add new properties
        https://bugs.webkit.org/show_bug.cgi?id=180797
        <rdar://problem/36039751>

        Reviewed by Devin Rousso.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):

2017-12-14  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.

2017-12-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - URL filter should be case-insensitive like filter bars in other tabs
        https://bugs.webkit.org/show_bug.cgi?id=180824
        <rdar://problem/35910750>

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype._resetFilters):
        (WI.NetworkTableContentView.prototype._urlFilterDidChange):
        Use a case-insensitive regex created from the search query
        and use that when filtering resources.

        (WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource): Deleted.
        (WI.NetworkTableContentView.prototype._checkURLFilterAgainstResource):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
        Rename the helper for checking the URL filter.

2017-12-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: UncaughtExceptionReporter fails on early errors
        https://bugs.webkit.org/show_bug.cgi?id=180776

        Reviewed by Brian Burg.

        * UserInterface/Debug/UncaughtExceptionReporter.js:
        (urlLastPathComponent):
        (handleError):
        (handleUncaughtException):
        URLUtilities parseURL might not be available, so have a small
        helper for getting a good name from a URL / filename.

        (handleUncaughtExceptionRecord):
        (dismissErrorSheet):
        Wrap `WI` namespace accesses in a try/catch since `WI` might not be available.
        Safely check global variables there were `Foo` as `window.Foo` to avoid errors
        if they are not actually available.

2017-12-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Make text filter just a URL filter and update incrementally
        https://bugs.webkit.org/show_bug.cgi?id=180796

        Reviewed by Brian Burg.

        Revert the Network Tab's text filter back to being just a URL filter with the
        normal behaviors of our other text filters that update as you type (incremental).
        This also renames the "text filter" to "url filter" everywhere in the ContentView
        for clarity. A follow-up change will make the url filter be case-insensitive
        to fully match the filter bars in other tabs.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.get filterNavigationItems):
        (WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource):
        (WI.NetworkTableContentView.prototype._updateURLFilterActiveIndicator):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
        (WI.NetworkTableContentView.prototype._hasURLFilter):
        (WI.NetworkTableContentView.prototype._hasActiveFilter):
        (WI.NetworkTableContentView.prototype._passURLFilter):
        (WI.NetworkTableContentView.prototype._passFilter):
        (WI.NetworkTableContentView.prototype._updateFilteredEntries):
        (WI.NetworkTableContentView.prototype._resetFilters):
        (WI.NetworkTableContentView.prototype._urlFilterDidChange):
        (WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource): Deleted.
        (WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource): Deleted.
        (WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator): Deleted.
        (WI.NetworkTableContentView.prototype._hasTextFilter): Deleted.
        (WI.NetworkTableContentView.prototype._passTextFilter): Deleted.
        (WI.NetworkTableContentView.prototype._textFilterDidChange): Deleted.

2017-12-13  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION: Web Inspector: Opening inspector crashes page if there are empty resources
        https://bugs.webkit.org/show_bug.cgi?id=180787
        <rdar://problem/35934838>

        Reviewed by Brian Burg.

        * UserInterface/Test/TestUtilities.js:
        Add a generic sanitizeURL used by many tests.

        * UserInterface/TestStub.html:
        Include TestUtilities.

2017-12-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add instrumentation for ImageBitmapRenderingContext
        https://bugs.webkit.org/show_bug.cgi?id=180736

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/ImageUtilities.js:
        (WI.ImageUtilities.promisifyLoad):
        (WI.ImageUtilities.imageFromImageBitmap):

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.fromPayload):
        (WI.Canvas.displayNameForContextType):

        * UserInterface/Models/NativeFunctionParameters.js:

        * UserInterface/Models/Recording.js:
        (WI.Recording.displayNameForSwizzleType):
        (WI.Recording.prototype.async swizzle):

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._generateDOM):
        (WI.RecordingActionTreeElement._generateDOM.createParameterElement):

2017-12-12  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
        https://bugs.webkit.org/show_bug.cgi?id=180508

        Reviewed by Devin Rousso.

        Remove a property when navigating away from it (e.g. to the next/previous property,
        or outside of the styles panel entirely) and either its name or value is empty:

            color: [ ]->
            <-[ ]: red
            <-[color]:

        Don't remove a property when navigating from an empty value to a non-empty name:

            color: <-[ ]

        Always remove a property when both name and value are empty.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype._handleBlur):
        (WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.

2017-12-12  Brian Burg  <bburg@apple.com>

        Web Inspector: support async setup() and async teardown() in AsyncTestSuite
        https://bugs.webkit.org/show_bug.cgi?id=180626

        Reviewed by Timothy Hatcher.

        This can make some code simpler by removing Promise-related boilerplate. I'm splitting
        this patch from the new use-site in the interest of making it easier to review.

        * UserInterface/Test/TestSuite.js:
        (AsyncTestSuite.prototype.runTestCases):
        (AsyncTestSuite):

2017-12-12  Brian Burg  <bburg@apple.com>

        Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown function
        https://bugs.webkit.org/show_bug.cgi?id=180717

        Reviewed by Devin Rousso.

        * UserInterface/Test/TestSuite.js:
        (SyncTestSuite.prototype.addTestCase):
        Raise an exception if test/setup/teardown is an async function. It won't work.

2017-12-12  Brian Burg  <bburg@apple.com>

        Web Inspector: add InspectorTest.expectException() and use it
        https://bugs.webkit.org/show_bug.cgi?id=180719

        Reviewed by Matt Baker.

        This helps straighten out async test() functions that need
        to test exceptional cases. Without this, every such method
        needs try/catch boilerplate to leak the error outside the
        scope of the catch-block and then assert that it exists.

        * UserInterface/Test/TestHarness.js:
        (TestHarness.prototype.expectException):
        Added. This method takes a callback which is expected to raise
        an exception either by throwing an Error instance or returning
        a Promise that rejects with an Error instance. The method returns
        a Promise that is either resolved with the expected exception
        from one of the above sources, or is rejected with the non-exception
        result that was returned or resolved by the callback.

2017-12-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Don't require perl(File::Copy::Recursive)
        https://bugs.webkit.org/show_bug.cgi?id=180479
        <rdar://problem/35944218>

        Reviewed by Daniel Bates.

        Fix the error handling. I added this at the last moment and failed to test. The logic is
        inverted, causing an error to always be reported on success.

        Add a missing 'mkdir -p' using File::Path::make_path. This has its own built-in error
        reporting, so no need to add our own.

        * Scripts/copy-user-interface-resources.pl:
        (ditto):

2017-12-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, don't print empty error message when copying resource fails

        Unsurprisingly, when system() fails, there is not any useful error to be printed, so don't.

        * Scripts/copy-user-interface-resources.pl:
        (ditto):

2017-12-08  Joseph Pecoraro  <pecoraro@apple.com>

        ServiceWorker Inspector: Various issues inspecting service worker on mobile.twitter.com
        https://bugs.webkit.org/show_bug.cgi?id=180520
        <rdar://problem/35900764>

        Reviewed by Brian Burg.

        * UserInterface/Main.html:
        * UserInterface/Test.html:
        New files.

        * UserInterface/Controllers/SourceMapManager.js:
        (WI.SourceMapManager.prototype._loadAndParseSourceMap):
        * UserInterface/Models/SourceMapResource.js:
        (WI.SourceMapResource.prototype.requestContentFromBackend):
        A ServiceWorker inspector doesn't have a main frame, fall back to an
        empty frameIdentifier, it is ignored by the Service Worker network agent.

        * UserInterface/Base/Main.js:
        Handle a Service Worker inspector where there is no frame. This can
        search the main resource's resource collection.

        * UserInterface/Controllers/DebuggerManager.js:
        (WI.DebuggerManager.prototype.scriptDidParse):

        * UserInterface/Controllers/FrameResourceManager.js:
        (WI.FrameResourceManager.prototype.resourceRequestDidFailLoading):
        In Service Workers the resources won't have a parent frame.

        (WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
        (WI.FrameResourceManager.prototype._processServiceWorkerInitializationInfo):
        In service worker initialization fallback to using the script content
        as the main resource if we didn't get a Script that actually includes it.

        * UserInterface/Models/LocalScript.js:
        (WI.LocalScript):
        (WI.LocalScript.prototype.requestContentFromBackend):
        A way to create a local Script with content.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WI.SourceCodeTextEditor.prototype.get _supportsDebugging):
        Disallow breakpoints in a LocalScript since we have no way to tell the
        backend where to set breakpoints.

        * UserInterface/Models/TextRange.js:
        (WI.TextRange.fromText):
        Add a way to get a TextRange from static text.

2017-12-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        Don't require perl(File::Copy::Recursive)
        https://bugs.webkit.org/show_bug.cgi?id=180479

        Reviewed by Konstantin Tokarev.

        If File::Copy::Recursive is not installed, there is currently a Darwin
        fallback to the ditto command. That doesn't exist on Linux, but we can
        emulate it by running 'cp -R' on everything in the source directory.
        This should probably work everywhere except Windows.

        * Scripts/copy-user-interface-resources.pl:
        (ditto):

2017-12-07  Eric Carlson  <eric.carlson@apple.com>

        Simplify log channel configuration UI
        https://bugs.webkit.org/show_bug.cgi?id=180527
        <rdar://problem/35908382>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/LoggingChannel.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createGeneralSettingsView):

2017-12-07  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r225634.

        This caused layout tests to time out.

        Reverted changeset:

        "Simplify log channel configuration UI"
        https://bugs.webkit.org/show_bug.cgi?id=180527
        https://trac.webkit.org/changeset/225634

2017-12-07  Eric Carlson  <eric.carlson@apple.com>

        Simplify log channel configuration UI
        https://bugs.webkit.org/show_bug.cgi?id=180527
        <rdar://problem/35908382>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/LoggingChannel.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createGeneralSettingsView):

2017-12-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas: spurious warnings shown for commands that changed pixel contents
        https://bugs.webkit.org/show_bug.cgi?id=180505
        <rdar://problem/35891651>

        Reviewed by Brian Burg.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction.prototype.apply.getContent):
        (WI.RecordingAction.prototype.apply):

2017-12-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Style Redesign: filtering removes header if one rule has no match even if others do
        https://bugs.webkit.org/show_bug.cgi?id=180467

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):

2017-12-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Details section headers overlap Classes container in the Computed Styles panel
        https://bugs.webkit.org/show_bug.cgi?id=180380

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):

2017-12-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas Tab initial user experience is poor when no canvases exist
        https://bugs.webkit.org/show_bug.cgi?id=179329
        <rdar://problem/35842036>

        Reviewed by Timothy Hatcher.

        This patch adds a new method, WI.createNavigationItemHelp, for creating command
        help to display in a message text view. The method accepts a format string and
        NavigationItem, and returns a DOM element. For example,

            WI.createNavigationItemHelp("Press %s to do X.", navigationItem)

        returns:

            <div class="navigation-item-help">
                Press <div class="navigation-bar"><div class="item">...</div></div> to do X.
            </div>

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.importRecording):
        Importing a recording should be a manager command with a corresponding
        event, so that it's decoupled from any specific location in the UI.

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

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView):
        (WI.CanvasTabContentView.prototype.attached):
        (WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
        (WI.CanvasTabContentView.prototype._recordingStopped): Deleted.
        (WI.CanvasTabContentView.prototype._navigationSidebarImport): Deleted.

        * UserInterface/Views/Main.css:
        (.message-text-view .navigation-item-help):
        (.message-text-view .navigation-item-help .navigation-bar):
        (.message-text-view .navigation-item-help .navigation-bar > .item):
        New styles for a NavigationItem appearing inline as part of descriptive
        text. Wrapped in a fake navigation bar so navigation item styles are picked up.

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype.initialLayout):
        (WI.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked): Deleted.
        Moved import code to CanvasManager.

2017-12-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: REGRESSION(r225569): CSSStyleDetailsSidebarPanel no longer exists
        https://bugs.webkit.org/show_bug.cgi?id=180466

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.applyFilter):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleEditorFilterApplied):

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):

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

2017-12-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Styles Redesign: display related pseudo-elements
        https://bugs.webkit.org/show_bug.cgi?id=176187
        <rdar://problem/34194917>

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
        (.spreadsheet-style-panel .section-header):
        (.spreadsheet-style-panel .section-header .node-link):
        (.spreadsheet-style-panel .section-header .node-link:hover):
        (.spreadsheet-style-panel .section-inherited): Deleted.
        (.spreadsheet-style-panel .section-inherited .node-link): Deleted.
        (.spreadsheet-style-panel .section-inherited .node-link:hover): Deleted.
        After all of the matched and inherited styles are added, loop over each pseudo-element, get
        the DOMNodeStyles for each, refresh them if needed, and then add the header and sections.

        * UserInterface/Models/DOMNodeStyles.js:
        (WI.DOMNodeStyles.prototype.refreshIfNeeded):
        (WI.DOMNodeStyles.prototype.refresh):
        Return a reference to the DOMNodeStyles object once the refresh promise is resolved.

        * UserInterface/Models/DOMNode.js:
        (WI.DOMNode.prototype.get displayName):
        If the node is a pseudo-element, display the pseudo-type instead of the node name.

2017-12-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: [PARITY] Styles Redesign: Ability to add new style rules
        https://bugs.webkit.org/show_bug.cgi?id=178329
        <rdar://problem/35001005>

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonClicked):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonContextMenu):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype._addNewRule):
        Implement the two functions that CSSStyleDetailsSidebarPanel expects to exist in order for
        the selected panel to support adding a new rule.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
        If the _selectorElement has not been created yet, set a flag and focus it once layout() has
        been called (thereby ensuring that initialLayout() has been called).

2017-12-05  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Styles Redesign: for newly added properties, pressing delete in empty value field should focus on name field
        https://bugs.webkit.org/show_bug.cgi?id=179831
        <rdar://problem/35626976>

        Reviewed by Timothy Hatcher.

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

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

2017-12-05  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: [PARITY] Styles Redesign: Make filtering work
        https://bugs.webkit.org/show_bug.cgi?id=178331
        <rdar://problem/35001015>

        Reviewed by Timothy Hatcher.

        Since both the sections and editors (per-section) use View semantics, we cannot simply
        search for instances of the filtered text since not all of the subviews may have called
        layout() yet. Instead, we have to rely on event listeners to relay information as to whether
        the filtered text was matched up the chain, applying the correct style classes along the way.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.filterDidChange):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
        Save the "Inherited From" elements so that they can be hidden if no styles inherited from
        that node match the filter.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.applyFilter):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleEditorFilterApplied):
        Save the media header elements so that they can also be filtered.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.applyFilter):

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.applyFilter):
        (WI.SpreadsheetStyleProperty.prototype._update):
        Move the name and value elements to a new container so that filter highlight won't also
        apply to the checkbox or warning element.

2017-12-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: adding a property before or after the first one appends it to the end
        https://bugs.webkit.org/show_bug.cgi?id=180321
        <rdar://problem/35816402>

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
        * UserInterface/Models/TextRange.js:
        (WI.TextRange.prototype.collapseToStart):

2017-12-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Empty Message View in Network Tab has padding at top
        https://bugs.webkit.org/show_bug.cgi?id=180453

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkTableContentView.css:
        (.content-view.network .message-text-view): Deleted.

2017-12-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: make Computed a top-level sidebar tab
        https://bugs.webkit.org/show_bug.cgi?id=174229
        <rdar://problem/33170193>

        Reviewed by Matt Baker.

        Styles dropdown tab selector was removed. Styles and Computed are now top-level sidebar tabs.

        Visual styles is no longer visible in the Styles sidebar tabs by default but can be enabled in the settings.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Setting.js:
        * UserInterface/Main.html:
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WI.CSSStyleDeclarationSection.prototype.findMatchingPropertiesAndSelectors):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WI.CSSStyleDeclarationTextEditor.prototype.findMatchingProperties):
        (WI.CSSStyleDeclarationTextEditor.prototype.removeNonMatchingProperties):
        * UserInterface/Views/ComputedStyleDetailsSidebarPanel.js: Added.
        (WI.ComputedStyleDetailsSidebarPanel):
        * UserInterface/Views/DOMTreeOutline.js:
        (WI.DOMTreeOutline.prototype._ondragover):
        (WI.DOMTreeOutline.prototype._ondrop):
        * UserInterface/Views/ElementsTabContentView.js:
        (WI.ElementsTabContentView):
        * UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css.
        * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js.
        (WI.GeneralStyleDetailsSidebarPanel):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.get panel):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.visibilityDidChange):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.layout):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.sizeDidChange):
        (WI.GeneralStyleDetailsSidebarPanel.prototype.get _initialScrollOffset):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._updateNoForcedPseudoClassesScrollOffset):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._newRuleButtonClicked):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._newRuleButtonContextMenu):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._createToggleForClassName):
        (WI.GeneralStyleDetailsSidebarPanel.prototype._filterDidChange):
        Styles and Computed tabs share a few UI components, such as force state (:hover, :focus, etc.),
        filter field, and CSS class toggle components. To implement this, CSSStyleDetailsSidebarPanel was renamed
        to GeneralStyleDetailsSidebarPanel.

        CSSStyleDetailsSidebarPanel used to support several panels. This is no longer the case with GeneralStyleDetailsSidebarPanel:
        - _initiallySelectedPanel was removed.
        - _selectedPanel was replaced by _panel.

        * UserInterface/Views/GroupNavigationItem.js:
        (WI.GroupNavigationItem.prototype.get minimumWidth):
        * UserInterface/Views/NavigationBar.css:
        (.navigation-bar .item,):
        (.sidebar-navigation-bar):
        (.sidebar-navigation-bar .holder):
        * UserInterface/Views/NavigationBar.js:
        (WI.NavigationBar.prototype._calculateMinimumWidth):
        Minor optimization: don't toggle class names when there are no visible navigation items.

        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WI.RulesStyleDetailsPanel.prototype.filterDidChange):
        * UserInterface/Views/RulesStyleDetailsSidebarPanel.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css.
        (WI.RulesStyleDetailsSidebarPanel):
        * UserInterface/Views/SearchTabContentView.js:
        (WI.SearchTabContentView):
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
        * UserInterface/Views/Sidebar.js:
        (WI.Sidebar):
        * UserInterface/Views/SidebarNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css.
        (WI.SidebarNavigationBar):
        (WI.SidebarNavigationBar.prototype.insertNavigationItem):
        (WI.SidebarNavigationBar.prototype._calculateMinimumWidth):
        SidebarNavigationBar wraps navigation items in an element so it can correctly calculate the width of all items with spacing between them.

        * UserInterface/Views/StyleDetailsPanel.js:
        (WI.StyleDetailsPanel.prototype.get _initialScrollOffset):
        * UserInterface/Views/VisualStyleDetailsSidebarPanel.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css.
        (WI.VisualStyleDetailsSidebarPanel):

2017-12-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: content views for resources loaded through XHR do not reflect declared mime-type
        https://bugs.webkit.org/show_bug.cgi?id=141389
        <rdar://problem/19767070>

        Reviewed by Brian Burg.

        * UserInterface/Base/Utilities.js:
        Blob <-> Text conversion helpers.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.createObjectURL):
        Previously all Image resources were assumed to have base64Encoded data
        which we automatically convert to a Blob. Now that some image data
        can be transfered as text, convert that to a Blob here since the output
        is expected to be a Blob.

        * UserInterface/Views/ResourceContentView.js:
        (WI.ResourceContentView.prototype.showGenericNoContentMessage):
        * UserInterface/Views/TextResourceContentView.js:
        (WI.TextResourceContentView.prototype.contentAvailable):
        (WI.TextResourceContentView.prototype._contentDidPopulate):
        * UserInterface/Views/ImageResourceContentView.js:
        (WI.ImageResourceContentView.prototype.contentAvailable):
        Better handle no content cases.

        * UserInterface/Views/ResourceClusterContentView.js:
        (WI.ResourceClusterContentView.prototype.get responseContentView):
        (WI.ResourceClusterContentView.prototype._contentViewForResourceType):
        Make a best effort to find a good ContentView to show the resource data.
        This is done by looking at the ResourceType and MIME Type.

        * UserInterface/Views/SVGImageResourceClusterContentView.js:
        (WI.SVGImageResourceClusterContentView.prototype._showContentViewForIdentifier):
        Handle if image data is now text (the image/svg+xml case).

2017-12-05  Simon Fraser  <simon.fraser@apple.com>

        Remove webkitGetImageDataHD and webkitPutImageDataHD from canvas API
        https://bugs.webkit.org/show_bug.cgi?id=180387

        Reviewed by Dean Jackson.

        CanvasRenderingContext2D.webkitGetImageDataHD and webkitPutImageDataHD were never standardized,
        and Blink removed support in 2014 (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/FOPH5dloGG8).

        Since our canvas backing store is always 1x, they have no use anyway, so remove them.

        * UserInterface/Models/NativeFunctionParameters.js:
        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction.prototype.getImageParameters):
        (WI.RecordingAction):
        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
        (WI.RecordingActionTreeElement._classNameForAction):

2017-12-04  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: provide method for recording CanvasRenderingContext2D from JavaScript
        https://bugs.webkit.org/show_bug.cgi?id=175166
        <rdar://problem/34040740>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.recordingFinished):
        If a `name` is sent with the payload, use it as the suggested name.

        * UserInterface/Models/NativeFunctionParameters.js:
        Add `console.record` and `console.recordEnd`.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.prototype.showRepresentedObject):
        Drive-by: remove logic that toggled the collapsed state of the navigation sidebar, as this
        was not very controllable by the user and often was aggravating.

        (WI.CanvasTabContentView.prototype._recordingStopped):
        Only show the recording if it was not started from the console. This can determined by
        CanvasManager when it recieves a recording if the recording's source is not the same as the
        current canvas being recorded.

2017-12-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas Tab initial user interface needs some polish
        https://bugs.webkit.org/show_bug.cgi?id=179330
        <rdar://problem/35367581>

        Reviewed by Joseph Pecoraro.

        Update the Canvas overview placeholder text and prevent appearance of
        the vertical scrollbar when no canvases exist. This patch also includes
        a bunch of cleanup of code that creates content placeholder text throughout
        the UI, and makes sure all text is styled consistently.

        * Localizations/en.lproj/localizedStrings.js:
        Updated Canvas overview message text.

        * UserInterface/Base/Main.js:
        Make the "message text view" a container with child message element, instead
        of a simple element with text content. This makes it simpler to customize
        the message (by adding buttons, more text, etc).

        * UserInterface/Views/CanvasDetailsSidebarPanel.css:
        (.sidebar > .panel.details.canvas .details-section.canvas-extensions .content > ul):
        (.sidebar > .panel.details.canvas > .content > .empty-content-placeholder): Deleted.
        (.sidebar > .panel.details.canvas > .content > .empty-content-placeholder > .message): Deleted.
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):

        * UserInterface/Views/CanvasOverviewContentView.js:
        (WI.CanvasOverviewContentView):
        Customize the content placeholder to include a description beneath
        the "No Canvas Contexts" message.

        * UserInterface/Views/CollectionContentView.css:
        (.content-view.collection):
        Change overflow-y to auto, to prevent scrollbar from appearing when
        "Show scroll bars" system preference is enabled on macOS.

        * UserInterface/Views/CollectionContentView.js:
        Add support for custom content placeholders.
        (WI.CollectionContentView):
        (WI.CollectionContentView.prototype._showContentPlaceholder):
        (WI.CollectionContentView.prototype._hideContentPlaceholder):

        * UserInterface/Views/ContentView.css:
        (.content-view > .message-text-view):
        (.content-view > .message-text-view > .message):

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger > .content):
        (.sidebar > .panel.navigation.debugger > :matches(.content, .empty-content-placeholder)): Deleted.

        * UserInterface/Views/DetailsSection.css:
        (.details-section > .content > .group > .row > .message-text-view):

        * UserInterface/Views/Main.css:
        (.message-text-view):
        (.message-text-view > .message):
        (.message-text-view.error):

        * UserInterface/Views/NavigationSidebarPanel.css:
        (.sidebar > .panel.navigation > .overflow-shadow):
        (.sidebar > .panel.navigation > .content .empty-content-placeholder): Deleted.
        (.sidebar > .panel.navigation > .content > .empty-content-placeholder): Deleted.
        (.sidebar > .panel.navigation > .content .empty-content-placeholder > .message): Deleted.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
        (WI.NavigationSidebarPanel.prototype._createEmptyContentPlaceholderIfNeeded):

        * UserInterface/Views/NetworkTableContentView.css:
        (.content-view.network .message-text-view):
        (.content-view.network .message-text-view > .message):
        Workaround to prevent "No Filter Results" message from being styled like
        "full width" messages displayed in ContentViews (large, bold font).
        This is needed because the placeholder message element is a immediate child
        of the network content view, rather than the network table.

        (.content-view.network .empty-content-placeholder): Deleted.
        (body[dir=ltr] .content-view.network .empty-content-placeholder): Deleted.
        (body[dir=rtl] .content-view.network .empty-content-placeholder): Deleted.
        (.content-view.network .empty-content-placeholder > .message): Deleted.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._showEmptyFilterResultsMessage):

        * UserInterface/Views/RecordingNavigationSidebarPanel.css:
        (.sidebar > .panel.navigation.recording > .content):
        (.sidebar > .panel.navigation.recording > :matches(.content, .empty-content-placeholder)): Deleted.

        * UserInterface/Views/ResourceSidebarPanel.css:
        (.sidebar > .panel.navigation.resource > .content):
        (.sidebar > .panel.navigation.resource > :matches(.content, .empty-content-placeholder)): Deleted.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style > .content > .rules > .message-text-view):
        (.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .message-text-view):
        (.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .no-filter-results): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results > .no-filter-results-message): Deleted.

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

        * UserInterface/Views/SearchSidebarPanel.css:
        (.sidebar > .panel.navigation.search > :matches(.content, .message-text-view)):
        (.sidebar > .panel.navigation.search.changed > :matches(.content, .message-text-view)):
        (.sidebar > .panel.navigation.search > :matches(.content, .empty-content-placeholder)): Deleted.
        (.sidebar > .panel.navigation.search.changed > :matches(.content, .empty-content-placeholder)): Deleted.

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

        * UserInterface/Views/StorageSidebarPanel.css:
        (.sidebar > .panel.navigation.storage > .content):
        (.sidebar > .panel.navigation.storage > :matches(.content, .empty-content-placeholder)): Deleted.

        * UserInterface/Views/Variables.css:
        (:root):

2017-11-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: can't add new property after property without trailing semicolon
        https://bugs.webkit.org/show_bug.cgi?id=179587
        <rdar://problem/35490858>

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype._updateOwnerStyleText):
        (WI.CSSProperty.prototype._appendSemicolonIfNeeded):
        Add a semicolon before the new property if the last property doesn't have it already.

2017-11-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Console Tab navigation bar sometimes does not include filter bar, clear console sometimes does not work
        https://bugs.webkit.org/show_bug.cgi?id=180124
        <rdar://problem/35740353>

        Reviewed by Brian Burg.

        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype.closed):
        Avoid removing event listeners if this LogContentView singleton is ever closed.
        The singleton will always be alive so we don't want to remove the event listeners
        without a way to add them back.

        * UserInterface/Base/Main.js:
        (WI.showSplitConsole):
        * UserInterface/Views/ConsoleTabContentView.js:
        (WI.ConsoleTabContentView.prototype.shown):
        When showing the ConsoleTab immediately collapse the split console so that any
        following code that checks WI.isShowingSplitConsole will get the expected value.
        It is also now possible to share a ContentView across ContentBrowsers via
        tombstones, so remove the old code that would frequently close the LogContentView.

2017-11-28  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: remove extra space before call frames in Canvas backtraces
        https://bugs.webkit.org/show_bug.cgi?id=180129

        Reviewed by Matt Baker.

        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
        (WI.RecordingTraceDetailsSidebarPanel):
        Hide the disclosure buttons of these TreeOutlines as they don't have children.

2017-11-28  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Clean up backtrace in Canvas details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=179807
        <rdar://problem/35604378>

        Reviewed by Devin Rousso.

        * UserInterface/Controllers/CallFrameTreeController.js: Added.
        Display a list of call frames in a tree outline. Browse to the represented
        call frame's source code location when a tree element is clicked or selected.

        (WI.CallFrameTreeController):
        (WI.CallFrameTreeController.prototype.get treeOutline):
        (WI.CallFrameTreeController.prototype.get callFrames):
        (WI.CallFrameTreeController.prototype.set callFrames):
        (WI.CallFrameTreeController.prototype.disconnect):
        (WI.CallFrameTreeController.prototype._treeElementClicked):
        (WI.CallFrameTreeController.prototype._treeSelectionDidChange):
        (WI.CallFrameTreeController.prototype._showSourceCodeLocation):

        * UserInterface/Main.html:

        * UserInterface/Views/CanvasDetailsSidebarPanel.css:
        (.sidebar > .panel.details.canvas .details-section.canvas-backtrace .call-frame): Deleted.
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WI.CanvasDetailsSidebarPanel.prototype._refreshBacktraceSection):

        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.css:
        (.sidebar > .panel.details.recording-trace > .content > .call-frame): Deleted.
        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
        (WI.RecordingTraceDetailsSidebarPanel):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction):

        * UserInterface/Views/TreeElement.js:
        (WI.TreeElement.treeElementToggled):
        (WI.TreeElement.prototype.selectOnMouseDown):
        Prevent selection if parent tree outline is not selectable.

        * UserInterface/Views/TreeOutline.css:
        (.tree-outline.non-selectable .item:hover):

        * UserInterface/Views/TreeOutline.js:
        Add `selectable` behavior, set at construction time. When false,
        clicking a tree element dispatches an event instead of selecting
        the tree element. Default true.

        (WI.TreeOutline):
        (WI.TreeOutline.prototype.get selectable):
        Dispatch click event when not selectable, and some drive-by cleanup.

2017-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Move console Preserve Log setting from Setting tab to Console navigation bar
        https://bugs.webkit.org/show_bug.cgi?id=180125

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView):
        (WI.LogContentView.prototype.get navigationItems):
        (WI.LogContentView.prototype._clearLogOnNavigateSettingChanged):
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createGeneralSettingsView):

2017-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove Network "Clear on load" from Settings tab now that Network tab has a toggle for it
        https://bugs.webkit.org/show_bug.cgi?id=180123

        Reviewed by Matt Baker.

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

2017-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Add a toggle in the network tab to control automatically clearing or preserving log across loads
        https://bugs.webkit.org/show_bug.cgi?id=180110
        <rdar://problem/34071789>

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New strings.

        * UserInterface/Views/CheckboxNavigationItem.css:
        (.navigation-bar .item.checkbox input[type=checkbox]):
        Tweak style to more center the checkbox vertically.

        * UserInterface/Views/CheckboxNavigationItem.js:
        (WI.CheckboxNavigationItem):
        Fix setting the initial value of a checkbox navigation item.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.get navigationItems):
        (WI.NetworkTableContentView.prototype.closed):
        (WI.NetworkTableContentView.prototype._clearNetworkOnNavigateSettingChanged):
        Add a new checkbox for the clear on navigation setting.

        * UserInterface/Views/SettingEditor.js:
        (WI.SettingEditor.createForSetting):
        Update the editor checkbox if the setting changes outside of the setting editor.

        * UserInterface/Views/NavigationItem.js:
        (WI.NavigationItem.prototype.get tooltip):
        (WI.NavigationItem.prototype.set tooltip):
        * UserInterface/Views/ActivateButtonNavigationItem.js:
        (WI.ActivateButtonNavigationItem.prototype.set activated):
        * UserInterface/Views/ButtonNavigationItem.js:
        (WI.ButtonNavigationItem):
        (WI.ButtonNavigationItem.prototype.get toolTip): Deleted.
        (WI.ButtonNavigationItem.prototype.set toolTip): Deleted.
        * UserInterface/Views/ToggleButtonNavigationItem.js:
        (WI.ToggleButtonNavigationItem.prototype.set alternateToolTip):
        (WI.ToggleButtonNavigationItem.prototype.set toggled):
        Move tooltip to the base class and rename it from `toolTip` to `tooltip` to
        match existing generic places like TreeElement.

2017-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include Beacon loads in the Network Table's "Other" filter
        https://bugs.webkit.org/show_bug.cgi?id=180113

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        Ensure the Other filter will handle any type that hasn't already been handled.

2017-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        ServiceWorker Inspector: Frontend changes to support Network tab and sub resources
        https://bugs.webkit.org/show_bug.cgi?id=179642
        <rdar://problem/35517704>

        Reviewed by Brian Burg.

        This patch makes use of the NetworkAgent and ServiceWorker agents in the frontend
        for a ServiceWorker inspection target. It also makes changes to ensure that the
        subresources requested by a ServiceWorker appear as expected in both the Resources
        and Network Tabs.

        The backends of ServiceWorkers and DedicatedWorkers for network requests are
        different, but we want the presentation to be very similiar. Ultimately we'd like
        to move to more similiar backends if possible.

        The first (after Inspector.enable) message a ServiceWorker inspector sends to the
        backend is ServiceWorker.getInitializationInfo. This parallels a Page inspector
        sending Page.getResourceTree. From the response we get enough information to
        setup the MainTarget with enough information (targetId, URL) to know what its main
        resource URL will be. Like DedicatedWorkers, the target's main resource will be
        filled in with the first WI.Script matching the URL. With this initialization
        message alone the ServiceWorker Target behaves almost identically to a Worker
        target and Network loads associated with the target (by targetId) are added as
        sub-resources as expected.

        The biggest tension in this patch is within FrameResourceManager. The class, as
        its name indicates, assumes page resources with Frames, navigation, and loader
        semantics. It takes a few modifications to make it better handle resources not
        associated with a Page. A follow-up will rename this to just ResourceManager as
        the class' main task is now to associate Resources with Targets.

        * UserInterface/Base/Main.js:
        (WI.loaded):
        There are assumptions in a few places that the main target is a Page. Those
        places can now be reached when the main target is a ServiceWorker. Add a
        convenience WI.pageTarget that can be used in these places.

        * UserInterface/Test/Test.js:
        (WI.loaded):
        Add pageTarget.

        * UserInterface/Controllers/DebuggerManager.js:
        (WI.DebuggerManager.prototype.scriptDidParse):
        Generalize the condition so the main target can have its main resource populated.
        This will be the case when a ServiceWorker is the main target and its main resource
        needs to be populated from a Script.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WI.FrameResourceManager):
        (WI.FrameResourceManager.prototype._processServiceWorkerInitializationInfo):
        Handle ServiceWorker Resource initialization which is different from Page initialization.

        (WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
        (WI.FrameResourceManager.prototype._addResourceToTarget):
        (WI.FrameResourceManager.prototype._addFrameTreeFromFrameResourceTreePayload):
        Eliminate PageAgent, which might not be available in some targets.
        Use pageTarget instead of mainTarget where appropriate.

        * UserInterface/Controllers/TargetManager.js:
        (WI.TargetManager.prototype.targetForIdentifier):
        A ServiceWorker is the first time that the main target has an identifier,
        so let TargetManager find it by target id.

        * UserInterface/Models/Resource.js:
        (WI.Resource):
        (WI.Resource.resolvedType):
        (WI.Resource.prototype.updateForResponse):
        For Resource.Type.Other resources include a better type inferred from the MIME type.
        ServiceWorker loads currently don't have type information and this provides a great
        type for such loads. This should also provide nice types for CacheStorage.add*
        populated resources which are otherwise type-less fetches.

        * UserInterface/Protocol/Connection.js:
        Rename the class since this may no longer be a "Page".

        * UserInterface/Protocol/MainTarget.js:
        (WI.MainTarget):
        (WI.MainTarget.mainConnectionInfo):
        (WI.MainTarget.prototype.get mainResource):
        (WI.MainTarget.prototype.set mainResource):
        (WI.MainTarget.prototype.get displayName): Deleted.
        * UserInterface/Protocol/Target.js:
        (WI.Target.prototype.set identifier):
        (WI.Target.prototype.set name):
        (WI.Target.prototype.get mainResource):
        (WI.Target.prototype.set mainResource):
        (WI.Target.prototype.get displayName):
        Give richer types for the main target. And allow a few things to be initialized
        lazily, which will be necessary from an initialization message.

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView.isTabAllowed):
        Remove a PageAgent requirement for the Network tab. A ServiceWorker will not
        have a PageAgent, but it will have a NetworkAgent, which should be good enough.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
        Initial populate should populate all subresources of all targets.

        * UserInterface/Views/ResourceContentView.js:
        (WI.ResourceContentView.prototype.contentAvailable):
        This was getting used by ResourceType.Other without warning. Make it warn.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel.prototype._addScript):
        (WI.ResourceSidebarPanel.prototype._addTargetWithMainResource):
        * UserInterface/Views/ScriptTreeElement.js:
        (WI.ScriptTreeElement):
        Allow WorkerTreeElements for ServiceWorker targets which may also be the main target.
        Also when adding such a tree element, promote the resource sidebar to a full tree
        outline, and stop hiding disclosure buttons.

2017-11-27  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: selector's field shadow is clipped at the bottom
        https://bugs.webkit.org/show_bug.cgi?id=179961

        Reviewed by Matt Baker.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration .selector):

2017-11-21  Tomas Popela  <tpopela@redhat.com>

        Unreviewed compile warning fix

        WARNING: console.assert inside control flow statement without braces on line: 130487:
        console.assert(this._loggingChannelSources.includes(channel.source));

        * UserInterface/Controllers/LogManager.js:
        (WI.LogManager):

2017-11-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Update the Trash / Clear icon
        https://bugs.webkit.org/show_bug.cgi?id=179850

        Reviewed by Matt Baker.

        * UserInterface/Images/NavigationItemTrash.svg:
        Update the icon.

        * UserInterface/Views/ProbeDetailsSidebarPanel.css:
        (.sidebar > .panel.probes > .navigation-bar .item.clear-samples):
        * UserInterface/Views/ProbeSetDetailsSection.js:
        (WI.ProbeSetDetailsSection):
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
        (.scope-chain .navigation-bar .item.clear-watch-expressions):
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WI.ScopeChainDetailsSidebarPanel):
        Resize to 15x15 and move it down a pixel.

2017-11-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Add HAR Export button
        https://bugs.webkit.org/show_bug.cgi?id=179570
        <rdar://problem/35484918>

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        New strings.

        * UserInterface/Images/Export.svg: Added.
        * UserInterface/Images/Import.svg: Added.
        Add symmetric import/export buttons.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        Expose the save keyboard shortcut so we can show its display name in a tooltip.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.get navigationItems):
        (WI.NetworkTableContentView.prototype.reset):
        (WI.NetworkTableContentView.prototype.layout):
        (WI.NetworkTableContentView.prototype._updateExportButton):
        Include the export button and enable/disable it when appropriate.

        (WI.NetworkTableContentView.prototype.closed):
        Add a missing event listener removal.

2017-11-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Disabled ImageAndText-style buttons should have gray text
        https://bugs.webkit.org/show_bug.cgi?id=179843
        <rdar://problem/35624337>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button.disabled.image-and-text,):
        (.navigation-bar .item.button.disabled > .glyph): Deleted.

2017-11-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Update Ignore Caches button
        https://bugs.webkit.org/show_bug.cgi?id=179841

        Reviewed by Matt Baker.

        * UserInterface/Images/IgnoreCaches.svg:
        This changes from an arrow over a cache to a slash through a cache.

2017-11-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove WI.instanceForClass
        https://bugs.webkit.org/show_bug.cgi?id=179746

        Reviewed by Timothy Hatcher.

        The implementations of DetailsSidebarPanel subclasses assume that panels
        are closed and released when no longer needed. Keeping them alive with
        instanceForClass isn't the right choice, since sidebar panels remove their
        event listeners when closed.

        * UserInterface/Base/Main.js:
        (WI.instanceForClass): Deleted.
        * UserInterface/Views/DebuggerTabContentView.js:
        (WI.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
        * UserInterface/Views/TabContentView.js:
        (WI.TabContentView.prototype.get detailsSidebarPanels):

2017-11-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: ButtonNavigationItem should support image and text button style
        https://bugs.webkit.org/show_bug.cgi?id=179625
        <rdar://problem/35512238>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Main.html:

        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button):
        (.navigation-bar .item.button.image-only):
        (.navigation-bar .item.button.image-and-text):
        (.navigation-bar .item.button.image-and-text > span):
        (.navigation-bar .item.button.text-only):
        (.navigation-bar .item.button.text-only.checkbox): Deleted.
        (.navigation-bar .item.button.text-only.checkbox label): Deleted.
        Checkbox styles have been moved to a separate CSS file.

        * UserInterface/Views/ButtonNavigationItem.js:
        Add backing data members for the image and label, allowing the DOM
        representation of the button to change as needed.

        (WI.ButtonNavigationItem):
        Remove duplicate role logic. The base class sets the role.

        (WI.ButtonNavigationItem.prototype.set label):
        (WI.ButtonNavigationItem.prototype.set image):
        (WI.ButtonNavigationItem.prototype.get buttonStyle):
        (WI.ButtonNavigationItem.prototype.set buttonStyle):
        (WI.ButtonNavigationItem.prototype.get additionalClassNames):
        (WI.ButtonNavigationItem.prototype._mouseClicked):
        (WI.ButtonNavigationItem.prototype._update):
        (WI.ButtonNavigationItem.prototype.updateButtonText): Deleted.

        * UserInterface/Views/CheckboxNavigationItem.css: Added.
        (.navigation-bar .item.checkbox):
        (.navigation-bar .item.checkbox label):

        * UserInterface/Views/CheckboxNavigationItem.js:
        Change base class to NavigationItem, since this item lacks an image
        and makes use of an actual label element instead of a span for its text.

        (WI.CheckboxNavigationItem):
        (WI.CheckboxNavigationItem.prototype._checkboxChanged):
        (WI.CheckboxNavigationItem.prototype.updateButtonText): Deleted.

2017-11-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove FIXMEs for GTK+ missing icons
        https://bugs.webkit.org/show_bug.cgi?id=155282
        <rdar://problem/25076615>

        Reviewed by Michael Catanzaro.

        * UserInterface/Views/PathComponentIcons.css:
        (.source-icon .icon):
        (body:not(.mac-platform, .windows-platform) .heap-snapshot-record .icon,): Deleted.
        * UserInterface/Views/ResourceIcons.css:
        (.large .resource-icon.resource-type-websocket .icon):
        (body:not(.mac-platform, .windows-platform) .resource-icon.resource-type-ping .icon,): Deleted.
        (body:not(.mac-platform, .windows-platform) .large .resource-icon.resource-type-ping .icon,): Deleted.
        All ports now share the same images.

2017-11-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: typing colon in property name should advance to value field
        https://bugs.webkit.org/show_bug.cgi?id=178795
        <rdar://problem/35174674>

        Reviewed by Devin Rousso.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype._handleNameBeforeInput):
        Unlike pressing Tab or Enter, typing ":" in the property name should discard suggestion hint.

        (WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
        We use 250ms debounce before updating this._property.name.
        When typing "font-f:", we want to discard suggestion hint (i.e. "font-family"),
        and immediately show autocomplete for "font-f" (in this case, invalid property).

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField):
        (WI.SpreadsheetTextField.prototype.stopEditing):
        (WI.SpreadsheetTextField.prototype.discardCompletion):
        Call spreadsheetTextFieldDidChange when discarding non-empty suggestion hint.

        (WI.SpreadsheetTextField.prototype.detached):
        (WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
        (WI.SpreadsheetTextField.prototype._handleBlur):
        (WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
        (WI.SpreadsheetTextField.prototype._updateCompletions):
        (WI.SpreadsheetTextField.prototype._applyCompletionHint):
        (WI.SpreadsheetTextField.prototype._hideCompletions): Deleted.

2017-11-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r217750): Navigation sidebar broken after closing and re-opening tab
        https://bugs.webkit.org/show_bug.cgi?id=179717
        <rdar://problem/35551541>

        Reviewed by Devin Rousso.

        NavigationSidebarPanels should not be created with WI.instanceForClass.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WI.SearchSidebarPanel):
        * UserInterface/Views/StorageSidebarPanel.js:
        (WI.StorageSidebarPanel):
        * UserInterface/Views/TabContentView.js:
        (WI.TabContentView.prototype.get navigationSidebarPanel):

2017-11-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove GTK web inspector images
        https://bugs.webkit.org/show_bug.cgi?id=179716

        Reviewed by Carlos Garcia Campos.

        * Scripts/copy-user-interface-resources.pl:
        * UserInterface/Images/gtk/AUTHORS: Removed.
        * UserInterface/Images/gtk/ActiveCallFrame.svg: Removed.
        * UserInterface/Images/gtk/AnimationPlayStatePaused.svg: Removed.
        * UserInterface/Images/gtk/AnimationPlayStateRunning.svg: Removed.
        * UserInterface/Images/gtk/ApplicationCache.png: Removed.
        * UserInterface/Images/gtk/ApplicationCache@2x.png: Removed.
        * UserInterface/Images/gtk/ApplicationCacheManifest.png: Removed.
        * UserInterface/Images/gtk/ApplicationCacheManifest@2x.png: Removed.
        * UserInterface/Images/gtk/ArrowUp.svg: Removed.
        * UserInterface/Images/gtk/Assertion.svg: Removed.
        * UserInterface/Images/gtk/BackForwardArrows.svg: Removed.
        * UserInterface/Images/gtk/Breakpoint.png: Removed.
        * UserInterface/Images/gtk/Breakpoint@2x.png: Removed.
        * UserInterface/Images/gtk/BreakpointButton.svg: Removed.
        * UserInterface/Images/gtk/BreakpointInactive.png: Removed.
        * UserInterface/Images/gtk/BreakpointInactive@2x.png: Removed.
        * UserInterface/Images/gtk/BreakpointInactiveButton.svg: Removed.
        * UserInterface/Images/gtk/Breakpoints.svg: Removed.
        * UserInterface/Images/gtk/COPYING: Removed.
        * UserInterface/Images/gtk/COPYING_CCBYSA3: Removed.
        * UserInterface/Images/gtk/COPYING_LGPL2: Removed.
        * UserInterface/Images/gtk/CSSVariable.svg: Removed.
        * UserInterface/Images/gtk/CallTrees.svg: Removed.
        * UserInterface/Images/gtk/Canvas.svg: Removed.
        * UserInterface/Images/gtk/Canvas2D.svg: Removed.
        * UserInterface/Images/gtk/Canvas3D.svg: Removed.
        * UserInterface/Images/gtk/CanvasOverview.svg: Removed.
        * UserInterface/Images/gtk/Checkers.svg: Removed.
        * UserInterface/Images/gtk/Circle.svg: Removed.
        * UserInterface/Images/gtk/ClearBoth.svg: Removed.
        * UserInterface/Images/gtk/ClearLeft.svg: Removed.
        * UserInterface/Images/gtk/ClearRight.svg: Removed.
        * UserInterface/Images/gtk/ClippingCSS.png: Removed.
        * UserInterface/Images/gtk/ClippingCSS@2x.png: Removed.
        * UserInterface/Images/gtk/ClippingCSSLarge.png: Removed.
        * UserInterface/Images/gtk/ClippingCSSLarge@2x.png: Removed.
        * UserInterface/Images/gtk/ClippingGeneric.png: Removed.
        * UserInterface/Images/gtk/ClippingGeneric@2x.png: Removed.
        * UserInterface/Images/gtk/ClippingGenericLarge.png: Removed.
        * UserInterface/Images/gtk/ClippingGenericLarge@2x.png: Removed.
        * UserInterface/Images/gtk/ClippingJS.png: Removed.
        * UserInterface/Images/gtk/ClippingJS@2x.png: Removed.
        * UserInterface/Images/gtk/ClippingJSLarge.png: Removed.
        * UserInterface/Images/gtk/ClippingJSLarge@2x.png: Removed.
        * UserInterface/Images/gtk/Close.svg: Removed.
        * UserInterface/Images/gtk/CloseLarge.svg: Removed.
        * UserInterface/Images/gtk/CloseWhite.svg: Removed.
        * UserInterface/Images/gtk/ColorIcon.png: Removed.
        * UserInterface/Images/gtk/ColorIcon@2x.png: Removed.
        * UserInterface/Images/gtk/Console.svg: Removed.
        * UserInterface/Images/gtk/Cookie.png: Removed.
        * UserInterface/Images/gtk/Cookie@2x.png: Removed.
        * UserInterface/Images/gtk/Crosshair.svg: Removed.
        * UserInterface/Images/gtk/CubicBezier.svg: Removed.
        * UserInterface/Images/gtk/DOMBreakpoint.svg: Removed.
        * UserInterface/Images/gtk/DOMCharacterData.svg: Removed.
        * UserInterface/Images/gtk/DOMComment.svg: Removed.
        * UserInterface/Images/gtk/DOMDocument.svg: Removed.
        * UserInterface/Images/gtk/DOMDocumentType.svg: Removed.
        * UserInterface/Images/gtk/DOMElement.svg: Removed.
        * UserInterface/Images/gtk/DOMNode.svg: Removed.
        * UserInterface/Images/gtk/DOMTextNode.svg: Removed.
        * UserInterface/Images/gtk/Database.png: Removed.
        * UserInterface/Images/gtk/Database@2x.png: Removed.
        * UserInterface/Images/gtk/DatabaseTable.png: Removed.
        * UserInterface/Images/gtk/DatabaseTable@2x.png: Removed.
        * UserInterface/Images/gtk/Debug.svg: Removed.
        * UserInterface/Images/gtk/Debugger.svg: Removed.
        * UserInterface/Images/gtk/DisclosureTriangles.svg: Removed.
        * UserInterface/Images/gtk/DockBottom.svg: Removed.
        * UserInterface/Images/gtk/DockLeft.svg: Removed.
        * UserInterface/Images/gtk/DockRight.svg: Removed.
        * UserInterface/Images/gtk/DocumentCSS.png: Removed.
        * UserInterface/Images/gtk/DocumentCSS@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentCSSLarge.png: Removed.
        * UserInterface/Images/gtk/DocumentCSSLarge@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentFont.png: Removed.
        * UserInterface/Images/gtk/DocumentFont@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentFontLarge.png: Removed.
        * UserInterface/Images/gtk/DocumentFontLarge@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentGeneric.png: Removed.
        * UserInterface/Images/gtk/DocumentGeneric@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentGenericLarge.png: Removed.
        * UserInterface/Images/gtk/DocumentGenericLarge@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentImage.png: Removed.
        * UserInterface/Images/gtk/DocumentImage@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentImageLarge.png: Removed.
        * UserInterface/Images/gtk/DocumentImageLarge@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentJS.png: Removed.
        * UserInterface/Images/gtk/DocumentJS@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentJSLarge.png: Removed.
        * UserInterface/Images/gtk/DocumentJSLarge@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentMarkup.png: Removed.
        * UserInterface/Images/gtk/DocumentMarkup@2x.png: Removed.
        * UserInterface/Images/gtk/DocumentMarkupLarge.png: Removed.
        * UserInterface/Images/gtk/DocumentMarkupLarge@2x.png: Removed.
        * UserInterface/Images/gtk/DownloadArrow.svg: Removed.
        * UserInterface/Images/gtk/Elements.svg: Removed.
        * UserInterface/Images/gtk/Error.svg: Removed.
        * UserInterface/Images/gtk/Errors.svg: Removed.
        * UserInterface/Images/gtk/ErrorsEnabled.svg: Removed.
        * UserInterface/Images/gtk/EventListener.svg: Removed.
        * UserInterface/Images/gtk/Events.svg: Removed.
        * UserInterface/Images/gtk/Exception.svg: Removed.
        * UserInterface/Images/gtk/Eye.svg: Removed.
        * UserInterface/Images/gtk/FilterFieldActiveGlyph.svg: Removed.
        * UserInterface/Images/gtk/FilterFieldGlyph.svg: Removed.
        * UserInterface/Images/gtk/FloatLeft.svg: Removed.
        * UserInterface/Images/gtk/FloatRight.svg: Removed.
        * UserInterface/Images/gtk/FolderGeneric.png: Removed.
        * UserInterface/Images/gtk/FolderGeneric@2x.png: Removed.
        * UserInterface/Images/gtk/FontStyleItalic.svg: Removed.
        * UserInterface/Images/gtk/FontStyleNormal.svg: Removed.
        * UserInterface/Images/gtk/Function.svg: Removed.
        * UserInterface/Images/gtk/Gear.svg: Removed.
        * UserInterface/Images/gtk/GoToArrow.svg: Removed.
        * UserInterface/Images/gtk/GradientStop.png: Removed.
        * UserInterface/Images/gtk/GradientStop@2x.png: Removed.
        * UserInterface/Images/gtk/GradientStopSelected.png: Removed.
        * UserInterface/Images/gtk/GradientStopSelected@2x.png: Removed.
        * UserInterface/Images/gtk/HeapAllocationsInstrument.svg: Removed.
        * UserInterface/Images/gtk/HeapSnapshotObjectGraph.svg: Removed.
        * UserInterface/Images/gtk/HierarchicalNavigationItemChevron.svg: Removed.
        * UserInterface/Images/gtk/HoverMenuButton.png: Removed.
        * UserInterface/Images/gtk/HoverMenuButton@2x.png: Removed.
        * UserInterface/Images/gtk/IgnoreCaches.svg: Removed.
        * UserInterface/Images/gtk/Image.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner1.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner10.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner11.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner12.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner2.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner3.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner4.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner5.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner6.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner7.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner8.svg: Removed.
        * UserInterface/Images/gtk/IndeterminateProgressSpinner9.svg: Removed.
        * UserInterface/Images/gtk/Info.svg: Removed.
        * UserInterface/Images/gtk/InstructionPointer.png: Removed.
        * UserInterface/Images/gtk/InstructionPointer@2x.png: Removed.
        * UserInterface/Images/gtk/Issues.svg: Removed.
        * UserInterface/Images/gtk/IssuesEnabled.svg: Removed.
        * UserInterface/Images/gtk/LayerBorders.svg: Removed.
        * UserInterface/Images/gtk/Layers.svg: Removed.
        * UserInterface/Images/gtk/LayoutInstrument.svg: Removed.
        * UserInterface/Images/gtk/ListStylePositionInside.svg: Removed.
        * UserInterface/Images/gtk/ListStylePositionOutside.svg: Removed.
        * UserInterface/Images/gtk/LocalStorage.png: Removed.
        * UserInterface/Images/gtk/LocalStorage@2x.png: Removed.
        * UserInterface/Images/gtk/Locked.svg: Removed.
        * UserInterface/Images/gtk/Log.svg: Removed.
        * UserInterface/Images/gtk/Logs.svg: Removed.
        * UserInterface/Images/gtk/MemoryInstrument.svg: Removed.
        * UserInterface/Images/gtk/Minus.svg: Removed.
        * UserInterface/Images/gtk/Native.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemCheckers.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemCodeCoverage.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemCurleyBraces.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemGarbageCollect.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemTrash.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemTypes.svg: Removed.
        * UserInterface/Images/gtk/Network.svg: Removed.
        * UserInterface/Images/gtk/NetworkInstrument.svg: Removed.
        * UserInterface/Images/gtk/NewTab.svg: Removed.
        * UserInterface/Images/gtk/NewTabPlus.svg: Removed.
        * UserInterface/Images/gtk/Paint.svg: Removed.
        * UserInterface/Images/gtk/Path.svg: Removed.
        * UserInterface/Images/gtk/Pause.svg: Removed.
        * UserInterface/Images/gtk/PausedBreakpoint.svg: Removed.
        * UserInterface/Images/gtk/Pencil.svg: Removed.
        * UserInterface/Images/gtk/Plus13.svg: Removed.
        * UserInterface/Images/gtk/Plus15.svg: Removed.
        * UserInterface/Images/gtk/Printer.svg: Removed.
        * UserInterface/Images/gtk/Program.svg: Removed.
        * UserInterface/Images/gtk/PseudoElement.svg: Removed.
        * UserInterface/Images/gtk/Receiving.svg: Removed.
        * UserInterface/Images/gtk/Record.svg: Removed.
        * UserInterface/Images/gtk/Recording.svg: Removed.
        * UserInterface/Images/gtk/Reflection.svg: Removed.
        * UserInterface/Images/gtk/ReloadFull.svg: Removed.
        * UserInterface/Images/gtk/ReloadToolbar.svg: Removed.
        * UserInterface/Images/gtk/RenderingFrame.svg: Removed.
        * UserInterface/Images/gtk/RenderingFramesInstrument.svg: Removed.
        * UserInterface/Images/gtk/Request.svg: Removed.
        * UserInterface/Images/gtk/Resources.svg: Removed.
        * UserInterface/Images/gtk/Response.svg: Removed.
        * UserInterface/Images/gtk/ResultLine.svg: Removed.
        * UserInterface/Images/gtk/Resume.svg: Removed.
        * UserInterface/Images/gtk/ScriptsInstrument.svg: Removed.
        * UserInterface/Images/gtk/Search.svg: Removed.
        * UserInterface/Images/gtk/SearchResults.svg: Removed.
        * UserInterface/Images/gtk/Sending.svg: Removed.
        * UserInterface/Images/gtk/SessionStorage.png: Removed.
        * UserInterface/Images/gtk/SessionStorage@2x.png: Removed.
        * UserInterface/Images/gtk/ShadowDOM.svg: Removed.
        * UserInterface/Images/gtk/SliderThumb.png: Removed.
        * UserInterface/Images/gtk/SliderThumb@2x.png: Removed.
        * UserInterface/Images/gtk/SliderThumbPressed.png: Removed.
        * UserInterface/Images/gtk/SliderThumbPressed@2x.png: Removed.
        * UserInterface/Images/gtk/SortIndicatorArrows.svg: Removed.
        * UserInterface/Images/gtk/Source.svg: Removed.
        * UserInterface/Images/gtk/SplitToggleUp.svg: Removed.
        * UserInterface/Images/gtk/StepInto.svg: Removed.
        * UserInterface/Images/gtk/StepOut.svg: Removed.
        * UserInterface/Images/gtk/StepOver.svg: Removed.
        * UserInterface/Images/gtk/Stop.svg: Removed.
        * UserInterface/Images/gtk/Stopwatch.svg: Removed.
        * UserInterface/Images/gtk/Storage.svg: Removed.
        * UserInterface/Images/gtk/StyleRule.svg: Removed.
        * UserInterface/Images/gtk/StyleRuleInheritedElement.svg: Removed.
        * UserInterface/Images/gtk/StyleRulePseudoElement.svg: Removed.
        * UserInterface/Images/gtk/TailDeletedFunction.svg: Removed.
        * UserInterface/Images/gtk/TextAlignCenter.svg: Removed.
        * UserInterface/Images/gtk/TextAlignJustify.svg: Removed.
        * UserInterface/Images/gtk/TextAlignLeft.svg: Removed.
        * UserInterface/Images/gtk/TextAlignRight.svg: Removed.
        * UserInterface/Images/gtk/TextDecorationLineThrough.svg: Removed.
        * UserInterface/Images/gtk/TextDecorationOverline.svg: Removed.
        * UserInterface/Images/gtk/TextDecorationUnderline.svg: Removed.
        * UserInterface/Images/gtk/TextTransformCapitalize.svg: Removed.
        * UserInterface/Images/gtk/TextTransformLowercase.svg: Removed.
        * UserInterface/Images/gtk/TextTransformUppercase.svg: Removed.
        * UserInterface/Images/gtk/Thread.svg: Removed.
        * UserInterface/Images/gtk/Time.svg: Removed.
        * UserInterface/Images/gtk/Timeline.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordAPI.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordAnimation.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordComposite.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordConsoleProfile.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordEvent.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordLayout.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordPaint.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordProbeSampled.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordScriptEvaluated.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordStyle.svg: Removed.
        * UserInterface/Images/gtk/TimelineRecordTimer.svg: Removed.
        * UserInterface/Images/gtk/ToggleLeftSidebar.svg: Removed.
        * UserInterface/Images/gtk/ToggleRightSidebar.svg: Removed.
        * UserInterface/Images/gtk/TypeBoolean.svg: Removed.
        * UserInterface/Images/gtk/TypeNull.svg: Removed.
        * UserInterface/Images/gtk/TypeNumber.svg: Removed.
        * UserInterface/Images/gtk/TypeObject.svg: Removed.
        * UserInterface/Images/gtk/TypeRegex.svg: Removed.
        * UserInterface/Images/gtk/TypeString.svg: Removed.
        * UserInterface/Images/gtk/TypeSymbol.svg: Removed.
        * UserInterface/Images/gtk/TypeUndefined.svg: Removed.
        * UserInterface/Images/gtk/Undock.svg: Removed.
        * UserInterface/Images/gtk/UpDownArrows.svg: Removed.
        * UserInterface/Images/gtk/UserInputPrompt.svg: Removed.
        * UserInterface/Images/gtk/UserInputPromptPrevious.svg: Removed.
        * UserInterface/Images/gtk/UserInputResult.svg: Removed.
        * UserInterface/Images/gtk/VisualStyleNone.svg: Removed.
        * UserInterface/Images/gtk/VisualStylePropertyLinked.svg: Removed.
        * UserInterface/Images/gtk/VisualStylePropertyUnlinked.svg: Removed.
        * UserInterface/Images/gtk/Warning.svg: Removed.
        * UserInterface/Images/gtk/WebSocket.png: Removed.
        * UserInterface/Images/gtk/WebSocket@2x.png: Removed.
        * UserInterface/Images/gtk/WebSocketLarge.png: Removed.
        * UserInterface/Images/gtk/WebSocketLarge@2x.png: Removed.
        * UserInterface/Images/gtk/Weight.svg: Removed.
        * UserInterface/Images/gtk/WorkerScript.png: Removed.
        * UserInterface/Images/gtk/WorkerScript@2x.png: Removed.
        * UserInterface/Images/gtk/WorkerScriptLarge.png: Removed.
        * UserInterface/Images/gtk/WorkerScriptLarge@2x.png: Removed.

2017-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Relicense non-distributable web inspector images
        https://bugs.webkit.org/show_bug.cgi?id=166460
        <rdar://problem/29800966>

        Reviewed by Brian Burg.

        * APPLE_IMAGES_LICENSE.rtf: Removed.
        Remove the restrictive Web Inspector images license and default to the
        same license as the rest of WebKit.

        The Apple Images license was never intended to restrict distribution of
        Web Inspector images when used as part of WebKit. Now, all contributions
        to Web Inspector, images and source, have the same licensing as all other
        WebKit contributions.

2017-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Detail Views - Split Metrics into Sizes and Timing
        https://bugs.webkit.org/show_bug.cgi?id=179569
        <rdar://problem/35484914>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New resources and strings.

        * UserInterface/Views/NetworkResourceDetailView.js:
        (WI.NetworkResourceDetailView):
        (WI.NetworkResourceDetailView.prototype.initialLayout):
        (WI.NetworkResourceDetailView.prototype._showPreferredContentView):
        (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
        (WI.NetworkResourceDetailView.prototype.sizesContentViewGoToHeaders): Renamed.
        (WI.NetworkResourceDetailView.prototype.sizesContentViewGoToRequestBody): Renamed.
        (WI.NetworkResourceDetailView.prototype.sizesContentViewGoToResponseBody): Renamed.
        Split into two navigation items and views.

        * UserInterface/Views/ResourceMetricsContentView.css: Removed.
        * UserInterface/Views/ResourceMetricsContentView.js: Removed.
        * UserInterface/Views/ResourceSizesContentView.css: Added.
        * UserInterface/Views/ResourceSizesContentView.js: Added.
        * UserInterface/Views/ResourceTimingContentView.css: Added.
        * UserInterface/Views/ResourceTimingContentView.js: Added.
        Split Metrics into two views.

2017-11-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Cleanup navigation bar dividers and separators
        https://bugs.webkit.org/show_bug.cgi?id=179654
        <rdar://problem/35523734>

        Reviewed by Devin Rousso.

        Update path separator icon, and reduce number of dividers used in the
        content browser's navigation bar, to more closely match modern Xcode.

        * UserInterface/Images/HierarchicalNavigationItemChevron.svg:
        Update icon, remove tapered arrow head.

        * UserInterface/Views/ContentBrowser.js:
        (WI.ContentBrowser):
        Remove divider between back/forward buttons and item name.
        (WI.ContentBrowser.prototype._updateContentViewNavigationItems):

        * UserInterface/Views/HierarchicalPathComponent.css:
        (.hierarchical-path-component > .separator):

        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype.get navigationItems):
        Remove dividers between buttons provided by the current content view.

2017-11-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Details Views - make section headers more prominent
        https://bugs.webkit.org/show_bug.cgi?id=179565
        <rdar://problem/35510531>

        Reviewed by Devin Rousso.

        * UserInterface/Views/ResourceDetailsSection.css:
        (.resource-details > section > .title):

2017-11-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: make selector field inline-block when editing
        https://bugs.webkit.org/show_bug.cgi?id=179588
        <rdar://problem/35490915>

        Reviewed by Brian Burg.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration .header.editing-selector .origin):
        When the selector field is multiline, it covers the source link entirely.
        When the selector field takes only one line, the source link remains where it was before editing.

        (.spreadsheet-css-declaration .selector):
        Make it `position: relative` to cover the source link.

        (.spreadsheet-css-declaration .selector.spreadsheet-selector-field.editing):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):

2017-11-13  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r223856): Web Inspector: Cannot view Request Data
        https://bugs.webkit.org/show_bug.cgi?id=179567

        Reviewed by Brian Burg.

        * UserInterface/Views/ResourceClusterContentView.js:
        (WI.ResourceClusterContentView.prototype._canShowRequestContentView):
        This condition unintentionally got flipped in r223856.

2017-11-13  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add CheckboxNavigationItem
        https://bugs.webkit.org/show_bug.cgi?id=179584
        <rdar://problem/35490085>

        Reviewed by Brian Burg.

        * UserInterface/Main.html:
        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button.text-only.checkbox):
        (.navigation-bar .item.button.text-only.checkbox label):

        * UserInterface/Views/ButtonNavigationItem.js:
        Cleanup and some tweaks to the label to make it work with subclasses
        regardless of how label is represented in the DOM.

        (WI.ButtonNavigationItem):
        (WI.ButtonNavigationItem.prototype.get toolTip):
        (WI.ButtonNavigationItem.prototype.set toolTip):
        (WI.ButtonNavigationItem.prototype.get label):
        (WI.ButtonNavigationItem.prototype.set label):
        (WI.ButtonNavigationItem.prototype.set image):
        (WI.ButtonNavigationItem.prototype.get enabled):
        (WI.ButtonNavigationItem.prototype.set enabled):
        (WI.ButtonNavigationItem.prototype.updateButtonText):

        * UserInterface/Views/CheckboxNavigationItem.js: Added.
        New button item with a checkbox and label. Dispatches a Clicked evennt
        whenever the checked state changes.

        (WI.CheckboxNavigationItem):
        (WI.CheckboxNavigationItem.prototype.get checked):
        (WI.CheckboxNavigationItem.prototype.set checked):
        (WI.CheckboxNavigationItem.prototype.get additionalClassNames):
        (WI.CheckboxNavigationItem.prototype.updateButtonText):
        (WI.CheckboxNavigationItem.prototype._checkboxChanged):

2017-11-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Give DataGrid/Table Header ContextMenu a section header to better describe its functions
        https://bugs.webkit.org/show_bug.cgi?id=179560

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        New string.

        * UserInterface/Views/DataGrid.js:
        (WI.DataGrid.prototype._contextMenuInHeader):
        * UserInterface/Views/Table.js:
        (WI.Table.prototype._handleHeaderContextMenu):
        Include a disabled context menu item as a section header.

2017-11-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r224566): [GTK] 26 new timeouts on inspector related tests.
        https://bugs.webkit.org/show_bug.cgi?id=179471

        Reviewed by Darin Adler.

        TestStub.html and TestStub.js was missing in resources bundle.

        * Scripts/copy-user-interface-resources.pl: Also combine resources for TestStub.

2017-11-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network detail views - Include a newline between sections when copying
        https://bugs.webkit.org/show_bug.cgi?id=179577

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkResourceDetailView.css:
        (.content-view.resource-details):
        * UserInterface/Views/ResourceDetailsSection.css:
        (.resource-details > section):
        (.resource-details > section > .title):
        Adjust styles now that there is a <br> taking up space between sections.
        After all the changes, the top section moved up 1px from where it was originally.

        * UserInterface/Views/ResourceDetailsSection.js:
        (WI.ResourceDetailsSection):
        Include a <br> to get newlines when copying.

2017-11-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network waterfall graph - make connection part thinner
        https://bugs.webkit.org/show_bug.cgi?id=179561

        Reviewed by Devin Rousso.

        * UserInterface/Views/NetworkTableContentView.css:
        (.waterfall .block):

2017-11-11  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas tab: show detailed status during canvas recording
        https://bugs.webkit.org/show_bug.cgi?id=178185
        <rdar://problem/34939862>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Protocol/CanvasObserver.js:
        (WI.CanvasObserver.prototype.recordingProgress):
        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager):
        (WI.CanvasManager.prototype.recordingProgress):
        (WI.CanvasManager.prototype.recordingFinished):
        Maintain arrays of recorded frames for each canvas and add new frames each time a progress
        event is fired. When the recording is finished, use the array as part of the payload for
        creating a WI.Recording object.

        * UserInterface/Models/Recording.js:
        (WI.Recording.fromPayload):

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction.prototype.apply.getContent):
        (WI.RecordingAction.prototype.apply):
        Drive-by fix: toDataURL is very slow, so add alternative ways of getting and comparing the
        content of the canvas to determine if the action has a visible effect.

        * UserInterface/Views/CanvasContentView.css:
        (.content-view.canvas:not(.tab)):
        (.content-view.canvas:not(.tab) > .progress):
        (.content-view.canvas:not(.tab) > .progress > .frame-count):
        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView):
        (WI.CanvasContentView.prototype.attached):
        (WI.CanvasContentView.prototype._recordingStarted):
        (WI.CanvasContentView.prototype._recordingProgress):
        (WI.CanvasContentView.prototype._recordingStopped):
        Steal some space from the preview area to display a count of the number of recorded frames
        and the current buffer usage.

        * UserInterface/Views/CanvasOverviewContentView.css:
        (.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)):
        (.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),):
        (.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)):
        (.content-view.canvas-overview .content-view.canvas > .preview):
        (.content-view.canvas-overview .content-view.canvas > .progress ~ .preview):
        (.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)): Deleted.
        (.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, footer),): Deleted.

2017-11-09  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: clicking on inline swatches and property checkboxes should not add a new property
        https://bugs.webkit.org/show_bug.cgi?id=179507
        <rdar://problem/35452204>

        Reviewed by Brian Burg.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
        Don't add new properties when clicking on selector fields, source links, and property checkboxes.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._update):
        It is safe to replace "change" event with "click" since it fires even when pressing Space key when the checkbox is focused.

2017-11-09  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: support undo/redo of insertAdjacentHTML
        https://bugs.webkit.org/show_bug.cgi?id=179283

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/DOMNode.js:
        (WI.DOMNode.prototype.insertAdjacentHTML):

        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype._startEditingAsHTML):
        Drive-by: only attempt to update the cursor if an initialValue is supplied.

2017-11-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make domain availability a list of types instead of a single type
        https://bugs.webkit.org/show_bug.cgi?id=179457

        Reviewed by Brian Burg.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass.prototype.activateDomain):
        The second value changed to be an optional list. Check if the active
        debuggable type is in the list or not.

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-10.3.json:
        * Versions/Inspector-iOS-11.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:
        Since this is a change to how we generate the frontend resource,
        update the legacy versioned backends and regenerate their resource.

2017-11-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r224566): [GTK][WPE] Many inspector tests are failing after r224566
        https://bugs.webkit.org/show_bug.cgi?id=179419

        Reviewed by Carlos Alberto Lopez Perez.

        All of them fail with the following error:

        Uncaught exception in Inspector page: ReferenceError: Can't find variable: CodeMirror [TestCombined.js:36658:15]

        This is because Test.html, even when combined, is trying to load CodeMirror from External/CodeMirror, but
        CodeMirror was already combined for Main.html. We need to also combine CodeMirror for Test.html.

        * Scripts/copy-user-interface-resources.pl:

2017-11-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show Internal properties of PaymentRequest in Web Inspector Console
        https://bugs.webkit.org/show_bug.cgi?id=179276

        Reviewed by Andy Estes.

        * UserInterface/Test.html:
        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.evaluateInPage):
        * UserInterface/Test/TestUtilities.js: Added.
        (promisify):
        Make async tests a little easier to work with by providing promises
        in some cases that would normally take a callback.

2017-11-08  Brian Burg  <bburg@apple.com>

        Web Inspector: fix incorrect curly quote orientation in a UIString
        https://bugs.webkit.org/show_bug.cgi?id=179353
        <rdar://problem/35368697>

        Reviewed by Joseph Pecoraro.

        I didn't see any other instances of this mistake in our localized strings.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        Fix it.

2017-11-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused Page.ScriptIdentifier protocol type
        https://bugs.webkit.org/show_bug.cgi?id=179407

        Reviewed by Matt Baker.

        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-10.3.json:
        * Versions/Inspector-iOS-11.0.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:
        Remove unused protocol type.

2017-11-06  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Display warnings
        https://bugs.webkit.org/show_bug.cgi?id=179215

        Reviewed by Brian Burg.

        Display warning icons on the right of the property.

        For now, the warning icons have only three title messages:
        - Invalid property name;
        - Invalid property value;
        - Duplicate property.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property):
        (.spreadsheet-style-declaration-editor .property-toggle):
        (.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
        (.spreadsheet-style-declaration-editor .property.has-warning):
        (.spreadsheet-style-declaration-editor .property .warning):
        Draw the warning arrow and icon using only one HTML element.
        Don't set "top" property so the element remains vertically where it would be if it had "position: static".

        (.spreadsheet-style-declaration-editor .property.has-warning .warning):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration):
        (.spreadsheet-css-declaration :matches(.header, .header-media)):
        (.spreadsheet-css-declaration .close-brace):
        Make properties span the entire width of the styles sidebar. Unsupported properties have yellow
        background. There should be no gaps between the property element and sidebar left and right edges.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.updateStatus):
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype.updateClassNames): Deleted.
        Rename updateClassNames to updateStatus since it modifies title attribute of the warning element.

2017-11-06  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Two little Layers tab fixes
        https://bugs.webkit.org/show_bug.cgi?id=179273

        Reviewed by Devin Rousso.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
        Even when we suppress refire of the selected event, we still want a popover.

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.shown):
        (WI.Layers3DContentView.prototype.hidden):
        (WI.Layers3DContentView.prototype.closed):
        (WI.Layers3DContentView.prototype._layerTreeDidChange):
        Opening WI directly to the Layers tab wasn't fetching layers right away. Let's fetch on every shown() and
        prune the hacky logic we were previously using -- it's overkill anyway, now that we're tracking mutations.

2017-11-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: no way to navigate from Resource tree element to its entry in Network Tab
        https://bugs.webkit.org/show_bug.cgi?id=179328
        <rdar://problem/35367294>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        New reveal in network tab string.

        * UserInterface/Base/Main.js:
        (WI.isShowingNetworkTab):
        Utility to know if the network tab is showing.

        * UserInterface/Views/ContextMenuUtilities.js:
        (WI.appendContextMenuItemsForSourceCode):
        (showResourceWithOptions):
        (WI.appendContextMenuItemsForURL):
        Generalize context menus for just a URL.

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Support more tab ignore options, this is starting to get icky. We may want to
        move to just a preferredTab approach, since that is what some of these want.

        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype._populateTagContextMenu):
        Make use of new ContextMenu utility to add menu items for a URL.

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView.prototype.showRepresentedObject):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.showRepresentedObject):
        Handle showing a Resource in the NetworkTab. We immediately show
        the details view for it, otherwise we fallback to the list view.

2017-11-06  Joseph Pecoraro  <pecoraro@apple.com>

        Uncaught Exception: TypeError: null is not an object (evaluating 'mimeType.endsWith')
        https://bugs.webkit.org/show_bug.cgi?id=179325
        <rdar://problem/35366896>

        Reviewed by Brian Burg.

        * UserInterface/Base/MIMETypeUtilities.js:
        (WI.fileExtensionForMIMEType):
        (WI.shouldTreatMIMETypeAsText):
        Handle null mime types.

2017-11-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Selecting a DOM Search Result in Search Tab unexpectedly changes Tabs
        https://bugs.webkit.org/show_bug.cgi?id=179223
        <rdar://problem/33949556>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        New string.

        * UserInterface/Views/SearchResultTreeElement.js:
        (WI.SearchResultTreeElement.prototype.populateContextMenu):
        Add a context menu for search results to jump to a different tab.
        These behaviors match the double click behavior for search results.

        * UserInterface/Views/SearchTabContentView.js:
        (WI.SearchTabContentView.prototype.canShowRepresentedObject):
        Always support showing a DOM Tree. Clients should be using
        ignoreSearchTab if they don't want to jump here.

        * UserInterface/Views/DOMTreeDataGridNode.js:
        (WI.DOMTreeDataGridNode.prototype._goToArrowWasClicked):
        * UserInterface/Views/LayerTreeDataGridNode.js:
        (WI.LayerTreeDataGridNode.prototype._goToArrowWasClicked):
        Use ignoreSearchTab just in case when showing a DOM Tree.

        * UserInterface/Views/ContentBrowser.js:
        (WI.ContentBrowser.prototype.shown):
        When showing, update our UI to reflect the values of the current content view, which
        for a while may have been owned by another ContentBrowser.

        (WI.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
        (WI.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
        (WI.ContentBrowser.prototype._contentViewNavigationItemsDidChange):
        We can avoid work in a few places where we might not be the owning ContentBrowser
        of a ContentView that is changing.

2017-11-05  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r221338): Web Inspector: NavigationBar incorrectly calculates minimumWidth
        https://bugs.webkit.org/show_bug.cgi?id=179292

        Reviewed by Devin Rousso.

        * UserInterface/Views/NavigationBar.js:
        (WI.NavigationBar.prototype._calculateMinimumWidth):
        totalItemWidth was the minimumWidth of the last item.

2017-11-05  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: selecting Frame tree element should update preview/slider, does nothing
        https://bugs.webkit.org/show_bug.cgi?id=179072
        <rdar://problem/35278711>

        Reviewed by Matt Baker.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):

        * UserInterface/Views/RecordingActionTreeElement.css:
        (.item.action > .titles .parameter.swizzled):
        (.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon): Deleted.
        (body:not(.window-inactive, .window-docked-inactive) .item.action > .titles .parameter.swizzled): Deleted.
        Drive-by: remove extra :focus selectors to prevent icon flashing when the window is blurred.

2017-11-04  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add contextmenu item to arbitrarily add HTML/Child to DOMTree
        https://bugs.webkit.org/show_bug.cgi?id=179042

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Models/DOMNode.js:
        (WI.DOMNode.prototype.insertAdjacentHTML.inspectedPage_node_insertAdjacentHTML):
        (WI.DOMNode.prototype.insertAdjacentHTML):
        Call-through to `insertAdjacentHTML` on the corresponding node in the inspected page.

        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement):
        (WI.DOMTreeElement.prototype._populateNodeContextMenu):
        (WI.DOMTreeElement.prototype._startEditingAsHTML.dispose):
        (WI.DOMTreeElement.prototype._startEditingAsHTML):
        (WI.DOMTreeElement.prototype._insertAdjacentHTML.commitCallback):
        (WI.DOMTreeElement.prototype._insertAdjacentHTML):
        (WI.DOMTreeElement.prototype.updateTitle):
        (WI.DOMTreeElement.prototype._singleTextChild):
        (WI.DOMTreeElement.prototype._nodeTitleInfo):
        (WI.DOMTreeElement.prototype._addHTML):
        (WI.DOMTreeElement.prototype._addPreviousSibling):
        (WI.DOMTreeElement.prototype._addNextSibling):
        (WI.DOMTreeElement.prototype._editAsHTML):
        Adjust where the editing element is placed depending on the options passed to `_editAsHTML`.
        If the placement is as a child, put it inside the child list. If the placement is as a
        sibling, place it before/after the selected TreeElement. Otherwise, add it as a child.

        * UserInterface/Views/DOMTreeOutline.css:
        (.tree-outline.dom):
        (.tree-outline.dom li):
        (.tree-outline.dom li:not(.editing)):
        (.tree-outline.dom li.editing):
        (body[dir=ltr] .tree-outline.dom li): Deleted.
        (body[dir=rtl] .tree-outline.dom li): Deleted.
        Don't add padding when the list item is being edited.

2017-11-03  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Uncaught Exception: null is not an object (evaluating 'selector.specificity.map') (at SpreadsheetCSSStyleDeclarationSection.js:199:51)
        https://bugs.webkit.org/show_bug.cgi?id=179225
        <rdar://problem/35329019>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
        selector.specificity may not exist when the selector is dynamic and doesn't match the selected element.

2017-11-03  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Move Show Compositing Borders/Paint Flashing buttons from Elements tab to Layers tab
        https://bugs.webkit.org/show_bug.cgi?id=179211

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DOMTreeContentView.js:
        (WI.DOMTreeContentView.prototype.get navigationItems):
        (WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings):
        Guard old buttons with experimental flag.

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.get navigationItems):
        (WI.Layers3DContentView.prototype.shown):
        (WI.Layers3DContentView.prototype.closed):
        (WI.Layers3DContentView.prototype._showPaintRectsSettingChanged):
        (WI.Layers3DContentView.prototype._togglePaintFlashing):
        (WI.Layers3DContentView.prototype._updateCompositingBordersButtonState):
        (WI.Layers3DContentView.prototype._toggleCompositingBorders):
        Add buttons to new home.
        No need to guard for get/setCompositingBordersVisible anymore, as these were introduced in iOS 7.

2017-11-03  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: move top-level namespace functions in ImageUtilities to static class
        https://bugs.webkit.org/show_bug.cgi?id=179207

        Reviewed by Brian Burg.

        * .eslintrc:
        * UserInterface/Base/ImageUtilities.js:
        (WI.ImageUtilities.useSVGSymbol):
        (WI.ImageUtilities.scratchCanvasContext2D):
        (WI.ImageUtilities.imageFromImageData):
        (WI.ImageUtilities.imageFromCanvasGradient):
        (WI.ImageUtilities):
        (useSVGSymbol): Deleted.
        (WI.scratchCanvasContext2D): Deleted.
        (WI.imageFromImageData): Deleted.
        (WI.imageFromCanvasGradient): Deleted.

        * UserInterface/Models/Recording.js:
        (WI.Recording.prototype.async swizzle):
        * UserInterface/Views/ButtonNavigationItem.js:
        (WI.ButtonNavigationItem.prototype.set image):
        * UserInterface/Views/CallFrameTreeElement.js:
        (WI.CallFrameTreeElement.prototype._updateStatus):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype._updateBreakpointStatus):
        * UserInterface/Views/MultipleScopeBarItem.js:
        (WI.MultipleScopeBarItem):
        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._generateDOM):
        (WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):
        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
        * UserInterface/Views/ResourceMetricsContentView.js:
        (WI.ResourceMetricsContentView.prototype._refreshResourceSizeSection):
        * UserInterface/Views/ScopeRadioButtonNavigationItem.js:
        (WI.ScopeRadioButtonNavigationItem):
        * UserInterface/Views/ThreadTreeElement.js:
        (WI.ThreadTreeElement.prototype._updateStatus):
        * UserInterface/Views/TimelineTreeElement.js:
        (WI.TimelineTreeElement.prototype._showCloseButton):
        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WI.VisualStyleCommaSeparatedKeywordEditor):
        * UserInterface/Views/VisualStyleKeywordIconList.js:
        (WI.VisualStyleKeywordIconList):
        * UserInterface/Views/VisualStylePropertyEditorLink.js:
        (WI.VisualStylePropertyEditorLink):
        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WI.VisualStyleSelectorSection):
        * UserInterface/Views/WebSocketDataGridNode.js:
        (WI.WebSocketDataGridNode.prototype.createCellContent):

2017-11-03  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Hide legacy Layers sidebar on Search tab
        https://bugs.webkit.org/show_bug.cgi?id=179257

        Reviewed by Joseph Pecoraro.

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

2017-11-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Table - Include a secure lock indicator in the domain column
        https://bugs.webkit.org/show_bug.cgi?id=179233
        <rdar://problem/34070883>

        Reviewed by Devin Rousso.

        * UserInterface/Views/NetworkTableContentView.css:
        (.network-table .cell.domain > .lock):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.tablePopulateCell):
        (WI.NetworkTableContentView.prototype._populateDomainCell):
        Add a small lock icon by the domain if the request was https/wss.

2017-11-03  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas2D Profiling: highlight expensive context commands in the captured command log
        https://bugs.webkit.org/show_bug.cgi?id=178302
        <rdar://problem/33158849>

        Reviewed by Brian Burg.

        * UserInterface/Models/RecordingFrame.js:
        (WI.RecordingFrame):
        (WI.RecordingFrame.fromPayload):
        (WI.RecordingFrame.prototype.get duration):
        (WI.RecordingFrame.prototype.toJSON):

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype.set recording):
        * UserInterface/Views/RecordingNavigationSidebarPanel.css:
        (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .status):

2017-11-02  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: show supported GL extensions for selected canvas
        https://bugs.webkit.org/show_bug.cgi?id=179070
        <rdar://problem/35278276>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Protocol/CanvasObserver.js:
        (WI.CanvasObserver.prototype.extensionEnabled):

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

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.prototype.get extensions):
        (WI.Canvas.prototype.enableExtension):
        Maintain a Set of enabled extensions, and dispatch an event whenever an extension is enabled.

        * UserInterface/Views/CanvasDetailsSidebarPanel.css:
        (.sidebar > .panel.details.canvas .details-section.canvas-extensions .content > ul):
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.set canvas):
        (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WI.CanvasDetailsSidebarPanel.prototype.layout):
        (WI.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):
        (WI.CanvasDetailsSidebarPanel.prototype._refreshExtensionsSection):
        Drive-by: hide Attributes section when the canvas has no attributes.

2017-11-02  Joseph Pecoraro  <pecoraro@apple.com>

        Make ServiceWorker a Remote Inspector debuggable target
        https://bugs.webkit.org/show_bug.cgi?id=179043
        <rdar://problem/34126008>

        Reviewed by Brian Burg.

        Customize the Web Inspector frontend for a ServiceWorker target.
        Currently this just behaves like a JavaScript Context target because
        we haven't yet added support for Networking capabilities.

        * UserInterface/Controllers/DebuggerManager.js:
        (WI.DebuggerManager.prototype.get knownNonResourceScripts):
        Drive-by fix a bug where lazily initializing the Resources / Debugger tabs
        would show Console evaluation scripts. We should ignore them, like we
        do in other places.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/AppController.js:
        (WI.AppController):
        (WI.AppController.debuggableTypeFromHost):
        * UserInterface/Controllers/AppControllerBase.js:
        * UserInterface/Controllers/TimelineManager.js:
        (WI.TimelineManager.defaultTimelineTypes):
        (WI.TimelineManager.availableTimelineTypes):
        * UserInterface/Models/TimelineRecording.js:
        (WI.TimelineRecording.sourceCodeTimelinesSupported):
        * UserInterface/Protocol/MainTarget.js:
        (WI.MainTarget.prototype.get displayName):
        * UserInterface/Test/TestAppController.js:
        * UserInterface/Views/DashboardContainerView.css:
        (body:not(.web) .toolbar .dashboard-container):
        (body.javascript .toolbar .dashboard-container): Deleted.
        * UserInterface/Views/DefaultDashboardView.css:
        (body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)):
        (body.javascript .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Deleted.
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel):
        (WI.ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel):
        (WI.ResourceSidebarPanel.prototype.initialLayout):
        (WI.ResourceSidebarPanel.prototype._addScript):
        (WI.ResourceSidebarPanel.prototype._extraDomainsActivated):
        * UserInterface/Views/Toolbar.js:

2017-11-02  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas: recording parameters that include an Image should show an InlineSwatch (2D canvas)
        https://bugs.webkit.org/show_bug.cgi?id=177032

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Test.html:
        * UserInterface/Base/ImageUtilities.js:
        (WI.scratchCanvasContext2D):
        Creates a static canvas that can be used for scratch purposes, such as converting ImageData
        to an Image, or rendering the result of a CanvasGradient. The canvas is reset after each
        call of the function so it can be reused by other callers.

        (WI.imageFromImageData):
        (WI.imageFromCanvasGradient):
        Utility functions for getting a dataURL image of ImageData/CanvasGradient after drawing it
        onto WI.scratchCanvasContext2D.

        * UserInterface/Models/Recording.js:
        (WI.Recording.prototype.async.swizzle):
        Set the Image used to create a CanvasPattern as an expando property for later use.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction.prototype.getImageParameters):

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._generateDOM):
        Add Image InlineSwatch elements for parameters that are viewable as an image. For ImageData
        and CanvasGradient, WI.scratchCanvasContext2D is used to draw the ImageData/CanvasGradient
        and get a dataURL to be used as the image.

        (WI.RecordingActionTreeElement._createSwatchForColorParameters):
        Drive-by: add checks that the parameter is not a CanvasGradient or CanvasPattern.

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
        Add Image InlineSwatch elements for fillStyle/strokeStyle when the value is a CanvasGradient
        or a CanvasPattern.

        * UserInterface/Views/InlineSwatch.js:
        (WI.InlineSwatch):
        (WI.InlineSwatch.prototype._updateSwatch):
        (WI.InlineSwatch.prototype._swatchElementClicked):
        * UserInterface/Views/InlineSwatch.css:
        (.inline-swatch):
        (.inline-swatch:matches(.color, .gradient)):
        (.inline-swatch:matches(.bezier, .spring, .variable)):
        (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):hover):
        (.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):active):
        (.inline-swatch:not(.read-only):active > span):
        (.inline-swatch:matches(.bezier, .spring, .variable) > span):
        (.inline-swatch.image > span):
        (.inline-swatch:matches(.bezier, .spring, .variable):hover): Deleted.
        (.inline-swatch:matches(.bezier, .spring, .variable):active): Deleted.
        (.inline-swatch:active > span): Deleted.
        (.inline-swatch:matches(.bezier, .spring) > span): Deleted.
        Add Image type for showing previews of images.
        Drive-by: simplify some styles.

        * UserInterface/Views/RecordingActionTreeElement.css:
        (.item.action > .titles .parameters > .inline-swatch):
        (.tree-outline:matches(:focus, .force-focus) .item.action > .titles .parameters > .inline-swatch): Deleted.
        Drive-by: remove the :focus requirement, as it would cause the InlineSwatch to shift when
        the user clicked out of the WebInspector window.

2017-11-02  Joseph Pecoraro  <pecoraro@apple.com>

        Inspector should display service worker served responses properly
        https://bugs.webkit.org/show_bug.cgi?id=178597
        <rdar://problem/35186111>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        New Service Worker related strings.

        * UserInterface/Controllers/HARBuilder.js:
        (WI.HARBuilder.entry):
        (WI.HARBuilder.timings):
        Only output timing data when we have real resource timing data.

        (WI.HARBuilder.fetchType):
        Output a new string for a Service Worker load in our custom field.

        * UserInterface/Models/ResourceTimingData.js:
        (WI.ResourceTimingData.prototype.get responseStart):
        Fallback further to the responseEnd. This can happen if the response
        itself is an error/failure and there was no response, so treat it as
        the same as response end.

        * UserInterface/Models/Resource.js:
        (WI.Resource.responseSourceFromPayload):
        (WI.Resource.prototype.updateForRedirectResponse):
        (WI.Resource.prototype.updateForResponse):
        A fetch response won't change the URL, so if the URL is empty
        don't change it from what the request's URL was.

        (WI.Resource.prototype.hasResponse):
        Failure is like finished. We should likely transition to an "isComplete" method.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._populateTransferSizeCell):
        (WI.NetworkTableContentView.prototype._generateSortComparator):
        Output "(service worker)" in the transfer size field, to indicate this came
        from a Service worker. Sort such loads together.

        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
        (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
        Include the Service Worker response source in this details view. Also include
        a FIXME, since we would like to link directly to the service worker in the future.

2017-11-02  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: turn on CSS spreadsheet editor by default
        https://bugs.webkit.org/show_bug.cgi?id=179100
        <rdar://problem/35285990>

        Reviewed by Brian Burg.

        Add a "Legacy Style Editor" checkbox and remove the experimental "Spreadsheet Style Editor" checkbox.

        Remove settings of the legacy styles editor:
        - Show inline warnings
        - Automatically insert newline
        - Select text on first click

        These settings are not applicable for the spreadsheet styles editor and
        now are always enabled for the legacy styles editor.

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

2017-11-01  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: consolidate DOMTreeElement contextmenu items into submenus
        https://bugs.webkit.org/show_bug.cgi?id=178996

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Views/ContextMenu.js:
        (WI.ContextSubMenuItem.prototype.appendItem):
        (WI.ContextSubMenuItem.prototype.appendSubMenuItem):
        (WI.ContextSubMenuItem.prototype.appendCheckboxItem):
        (WI.ContextSubMenuItem.prototype.pushItem):
        (WI.ContextSubMenuItem.prototype._pushItem): Deleted.
        Made `pushItem` public so that it is possible to create a ContextMenuItem without
        immediately adding it to the ContextMenu.

        (WI.ContextSubMenuItem.prototype._buildDescriptor):
        (WI.ContextMenu.prototype._buildDescriptor):
        Filter out submenus that have no items.

        * UserInterface/Views/ContextMenuUtilities.js:
        (WI.appendContextMenuItemsForDOMNode):
        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype.toggleElementVisibility):
        (WI.DOMTreeElement.prototype._populateTagContextMenu):
        (WI.DOMTreeElement.prototype._populateTextContextMenu):
        (WI.DOMTreeElement.prototype._populateNodeContextMenu):
        (WI.DOMTreeElement.prototype._populateForcedPseudoStateItems): Deleted.
        Add relevant items to the provided submenus and reorder the entire contextmenu for better
        readability and consistency.

        * UserInterface/Views/DOMTreeOutline.js:
        (WI.DOMTreeOutline.prototype.populateContextMenu):
        Create submenus for Add, Edit, Copy, and Delete, and pass them to the DOMTreeElement
        "populate*ContextMenu" functions so that they can add items to each submenu.

        (WI.DOMTreeOutline.prototype._hideElement):
        Move to DOMTreeElement so that it can be used by a contextmenu item.

2017-11-01  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Improve UX of Layers tab visualization
        https://bugs.webkit.org/show_bug.cgi?id=178966

        Reviewed by Devin Rousso.

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.initialLayout):
        (WI.Layers3DContentView.prototype._canvasMouseDown):
        (WI.Layers3DContentView.prototype._createLayerGroup): Renamed from _addLayerGroup.
        (WI.Layers3DContentView.prototype._updateLayerGroupPosition): Merged into _updateLayers.
        Set up zoom and pan.

        (WI.Layers3DContentView.prototype._animate):
        (WI.Layers3DContentView.prototype._restrictPan):
        Restrict pan to bounding box on XY plane.

        (WI.Layers3DContentView.prototype.layout):
        (WI.Layers3DContentView.prototype._updateDocument):
        (WI.Layers3DContentView.prototype._resetCamera):
        On new document, throw out all old layers and center the camera on the new document layer.

        (WI.Layers3DContentView.prototype.selectLayerById):
        (WI.Layers3DContentView.prototype._centerOnSelection):
        Recenter the camera when layer group selection is updated programmatically.

        (WI.Layers3DContentView.prototype._updateLayers):
        (WI.Layers3DContentView.prototype._createLayerMesh):
        Fix visual artifact due to "depthWrite" flag.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
        Suppress selection update event when the data grid selection is updated programmatically.

        * UserInterface/Views/DataGridNode.js:
        (WI.DataGridNode.prototype.revealAndSelect):
        Allow forwarding of select()'s parameter.

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

        Web Inspector: Combine all storage icon files into a single file
        https://bugs.webkit.org/show_bug.cgi?id=179134

        Reviewed by Devin Rousso.

        * UserInterface/Main.html:
        * UserInterface/Views/CookieIcon.css: Removed.
        * UserInterface/Views/DOMStorageIcons.css: Removed.
        * UserInterface/Views/DatabaseIcon.css: Removed.
        * UserInterface/Views/DatabaseTableIcon.css: Removed.
        * UserInterface/Views/StorageIcons.css: Added.
        (.application-cache-manifest .icon):
        (.application-cache-frame .icon):
        (.cookie-icon .icon):
        (.local-storage-icon .icon):
        (.session-storage-icon .icon):
        (.database-icon .icon):
        (.database-table-icon .icon):

2017-11-01  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Hovering over a selector should highlight matching elements on the page
        https://bugs.webkit.org/show_bug.cgi?id=179040

        Reviewed by Devin Rousso.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        Use mouseenter/mouseleave events instead of mousein/mouseout (as in the old styles sidebar)
        to avoid unnecessary events being fired.

        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._highlightNodesWithSelector):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._hideDOMNodeHighlight):

2017-10-30  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [PARITY] Styles Redesign: Ability to modify style attributes
        https://bugs.webkit.org/show_bug.cgi?id=178328
        <rdar://problem/35000990>

        Reviewed by Joseph Pecoraro.

        Before this patch, modifying a property of a style attribute duplicated the old property
        and appended the new one. This happened because WI.TextRange.prototype.resolveOffsets
        didn't resolve offsets correctly when text didn't end with a trailing new line.

        Since WI.TextRange.prototype.resolveOffsets is used elsewhere and this could be expected
        behavior, append a line break before resolving a range.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype._updateOwnerStyleText):

2017-10-30  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Clicking filler in data grid should clear selection
        https://bugs.webkit.org/show_bug.cgi?id=179027

        Reviewed by Brian Burg.

        * UserInterface/Views/DataGrid.js:
        (WI.DataGrid.prototype._mouseDownInDataTable):

2017-10-30  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: no path components shown in recording content view after selecting a recording via View Recordings... dropdown
        https://bugs.webkit.org/show_bug.cgi?id=178807
        <rdar://problem/35176463>

        Reviewed by Brian Burg.

        When the first Recording is taken of a canvas, it is immediately added as a child. When the
        CanvasTreeElement is `attached`, however, it will attempt to regenerate its children if
        necessary. This is especially true for canvases with ShaderPrograms, as they are added with
        `addRepresentedObjectToNewChildQueue`, meaning that the child TreeElements aren't actually
        added until the next tick, preventing the ContentBrowser logic from generating path
        components correctly.

        This patch switches to using `addChildForRepresentedObject` so that there is no delay when
        adding children, and also ensures that any existing recordings are also added on regeneration.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.prototype._recordingAdded):
        Move logic for adding TreeElements for new Recordings to CanvasTreeElement.

        * UserInterface/Views/CanvasTreeElement.js:
        (WI.CanvasTreeElement.createRecordingTreeElement):
        (WI.CanvasTreeElement):
        (WI.CanvasTreeElement.prototype.onattach):
        (WI.CanvasTreeElement.prototype.ondetach):
        (WI.CanvasTreeElement.prototype.onpopulate):
        (WI.CanvasTreeElement.prototype._handleItemAdded):
        (WI.CanvasTreeElement.prototype._handleItemRemoved):
        (WI.CanvasTreeElement.prototype._shaderProgramAdded): Deleted.
        (WI.CanvasTreeElement.prototype._shaderProgramRemoved): Deleted.

2017-10-30  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add Path.svg
        https://bugs.webkit.org/show_bug.cgi?id=178432

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/Path.svg: Added.

2017-10-30  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [PARITY] Styles Redesign: clicking on the white space after the property should create a blank property
        https://bugs.webkit.org/show_bug.cgi?id=178022
        <rdar://problem/34861687>

        Reviewed by Matt Baker.

        - Clicking on the whitespace on the right side of a property should insert a blank property after the clicked one.
        - Clicking on the whitespace at the end of a CSS rule should append a blank property.
        - Clicking on the whitespace before the first property should insert a blank property before the first one.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.remove):
        (WI.CSSProperty.prototype._updateOwnerStyleText):
        Remove method previously didn't do anything for a newly added property.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration.prototype.newBlankProperty):
        Update indices of all properties after the newly added property.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.isFocused):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty): Deleted.
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused): Deleted.
        Re-layout SpreadsheetCSSStyleDeclarationEditor after adding a new property. Preserve edited property
        so we can restore editing state after the re-layout.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
        Clicking should add a new property only when we aren't editing an existing property.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.updateClassNames):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
        Remove newlyAdded property of SpreadsheetStyleProperty. During layout SpreadsheetCSSStyleDeclarationEditor
        recreates SpreadsheetStyleProperty views and newlyAdded property gets lost.

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype.get valueBeforeEditing):
        (WI.SpreadsheetTextField.prototype.startEditing):
        (WI.SpreadsheetTextField.prototype.stopEditing):
        (WI.SpreadsheetTextField.prototype._discardChange):

2017-10-27  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: no way to see backtrace of where a canvas context was created
        https://bugs.webkit.org/show_bug.cgi?id=178799
        <rdar://problem/35175805>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.fromPayload):
        (WI.Canvas.prototype.get backtrace):

        * UserInterface/Views/CanvasDetailsSidebarPanel.css:
        (.sidebar > .panel.details.canvas .details-section.canvas-backtrace .call-frame):

        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WI.CanvasDetailsSidebarPanel.prototype.layout):
        (WI.CanvasDetailsSidebarPanel.prototype._refreshBacktraceSection):

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

2017-10-26  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: canvas path components from old page stick around when page is reloaded
        https://bugs.webkit.org/show_bug.cgi?id=178806
        <rdar://problem/35176360>

        Reviewed by Brian Burg.

        Before this change, the CanvasCollection was regenerated each time the Canvas tab was
        attached. This also caused the invisible TreeOutline, used for the path components and to
        manage selection, to be reset as well. Whenever the page refreshed, however, the old
        canvases, and associated recordings, were not removed. This patch reworks all of this logic
        to create the CanvasCollection on construction of the tab and add/remove canvases as needed.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.canvasAdded):
        (WI.CanvasManager.prototype.canvasRemoved):
        (WI.CanvasManager.prototype._removeCanvas):
        (WI.CanvasManager.prototype._mainResourceDidChange):
        Replaced the "Cleared" event by instead firing "CanvasRemoved" for every tracked canvas. This
        massively simplifies the logic for when the page navigates, as everything goes through a
        single event listener.
        Drive-by: changed existing event names to remove unnecessary words.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView):
        (WI.CanvasTabContentView.prototype.attached):
        (WI.CanvasTabContentView.prototype.detached):
        (WI.CanvasTabContentView.prototype._addCanvas):
        (WI.CanvasTabContentView.prototype._removeCanvas):
        (WI.CanvasTabContentView.prototype._handleCanvasAdded):
        (WI.CanvasTabContentView.prototype._handleCanvasRemoved):
        (WI.CanvasTabContentView.prototype._canvasAdded): Deleted.
        (WI.CanvasTabContentView.prototype._canvasRemoved): Deleted.
        (WI.CanvasTabContentView.prototype._mainResourceDidChange): Deleted.
        Rework logic for the way that the CanvasCollection is maintained. It is no longer
        created/destroyed each time the view is attached/detached, and instead a diff is calculated
        for the added/existing/removed canvases and the content views are added/removed as such.

        * UserInterface/Views/CanvasOverviewContentView.js:
        (WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged):
        Drive-by: if an imported recording is selected on the Canvas Overview view, we should show it.

2017-10-26  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: canvases overview should support navigation via keyboard
        https://bugs.webkit.org/show_bug.cgi?id=178800
        <rdar://problem/35175856>

        Reviewed by Brian Burg.

        Create a KeyboardShorcut for each of the following:
         - Up: selects the previous canvas in the selected column
         - Down: selects the next canvas in the selected column
         - Right: selects the next canvas in the selected row
         - Left: selects the previous canvas in the selected row
         - Space: toggle recording of the selected canvas
         - Shift+Space: toggle single-frame recording of the selected canvas

        The calculation for selected row/colum is based on the `offsetWidth` of the parent element
        and the selected item's content view element. Since this view uses a flexbox, all of the
        items are expected to have the same dimensions, meaning that this value is uniform. The
        intended functionality is that of a spreadsheet, where pressing pressing left/right will
        never change the selected row and up/down will never change the selected column.

        * UserInterface/Views/CanvasOverviewContentView.css:
        (.content-view.canvas-overview):
        (.content-view.canvas-overview .content-view.canvas):
        Move margin value to a CSS variable so that it can be easily retrieved via JavaScript.

        * UserInterface/Views/CanvasOverviewContentView.js:
        (WI.CanvasOverviewContentView):
        (WI.CanvasOverviewContentView.prototype.contentViewAdded):
        (WI.CanvasOverviewContentView.prototype.contentViewRemoved):
        (WI.CanvasOverviewContentView.prototype.attached):
        (WI.CanvasOverviewContentView.prototype.detached):
        (WI.CanvasOverviewContentView.prototype.get _itemMargin):
        (WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically):
        (WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally):
        (WI.CanvasOverviewContentView.prototype._updateNavigationItems):
        (WI.CanvasOverviewContentView.prototype._handleUp):
        (WI.CanvasOverviewContentView.prototype._handleRight):
        (WI.CanvasOverviewContentView.prototype._handleDown):
        (WI.CanvasOverviewContentView.prototype._handleLeft):
        (WI.CanvasOverviewContentView.prototype._handleSpace):
        (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
        Drive-by: call `_updateNavigationItems` whenever an item is added/removed so that if there
        are no items the navigation items cannot be clicked.

2017-10-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Make "Style Attribute" text darker and non-focusable
        https://bugs.webkit.org/show_bug.cgi?id=178837

        Reviewed by Brian Burg.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration .selector.style-attribute):
        Use the same shade of gray as in the "Inherited from" sections.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        Only editable selectors should be focusable.

2017-10-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add CanvasOverview.svg and Canvas.svg
        https://bugs.webkit.org/show_bug.cgi?id=178426

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/Canvas.svg: Added.
        * UserInterface/Images/gtk/CanvasOverview.svg: Added.

2017-10-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: provide a way to enable/disable event listeners
        https://bugs.webkit.org/show_bug.cgi?id=177451
        <rdar://problem/34994925>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

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

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WI.DOMNodeDetailsSidebarPanel.prototype.attached):
        (WI.DOMNodeDetailsSidebarPanel.prototype.detached):
        (WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
        (WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
        (WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
        Listen for `WI.DOMNode.Event.EventListenersChanged` on all instances of WI.DOMNode, since we
        will still want to refresh the event listeners section in the event that an event listener
        is removed from a parent node.

        * UserInterface/Views/EventListenerSectionGroup.js:
        (WI.EventListenerSectionGroup):
        (WI.EventListenerSectionGroup.prototype._eventText):
        (WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
        (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
        (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):
        * UserInterface/Views/EventListenerSectionGroup.css:
        (.event-listener-section > .content input[type="checkbox"]):

        * UserInterface/Views/DetailsSectionSimpleRow.js:
        (WI.DetailsSectionSimpleRow.prototype.get label):
        (WI.DetailsSectionSimpleRow.prototype.set label):

2017-10-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: replace TypeVerifier with subclasses of WI.Collection
        https://bugs.webkit.org/show_bug.cgi?id=178045
        <rdar://problem/35174307>

        Reviewed by Brian Burg.

        * UserInterface/Models/Collection.js:
        (WI.Collection):
        (WI.Collection.prototype.get displayName):
        (WI.Collection.prototype.objectIsRequiredType):
        (WI.Collection.prototype.add):
        (WI.Collection.prototype.get typeVerifier): Deleted.
        Instead of exposing the typeVerifier, we create a public predicate that returns whether the
        given object matches the expected type of the Collection. Subclasses can override it to
        limit the scope of the collection to a particular type.

        * UserInterface/Models/CollectionTypes.js:
        (WI.FrameCollection.prototype.get displayName):
        (WI.FrameCollection.prototype.objectIsRequiredType):
        (WI.FrameCollection): Deleted.
        (WI.ScriptCollection.prototype.get displayName):
        (WI.ScriptCollection.prototype.objectIsRequiredType):
        (WI.ScriptCollection): Deleted.
        (WI.CSSStyleSheetCollection.prototype.get displayName):
        (WI.CSSStyleSheetCollection.prototype.objectIsRequiredType):
        (WI.CSSStyleSheetCollection): Deleted.
        (WI.CanvasCollection.prototype.get displayName):
        (WI.CanvasCollection.prototype.objectIsRequiredType):
        (WI.CanvasCollection): Deleted.
        (WI.ShaderProgramCollection.prototype.get displayName):
        (WI.ShaderProgramCollection.prototype.objectIsRequiredType):
        (WI.ShaderProgramCollection): Deleted.
        (WI.RecordingCollection.prototype.get displayName):
        (WI.RecordingCollection.prototype.objectIsRequiredType):
        (WI.RecordingCollection): Deleted.
        * UserInterface/Models/ResourceCollection.js:
        (WI.ResourceCollection):
        (WI.ResourceCollection.prototype.get displayName):
        (WI.ResourceCollection.prototype.objectIsRequiredType):
        (WI.ResourceCollection.verifierForType): Deleted.
        * UserInterface/Views/TreeOutlineGroup.js:
        (WI.TreeOutlineGroup.prototype.objectIsRequiredType):
        (WI.TreeOutlineGroup): Deleted.
        Introduce additional subclasses of Collection for other model types. Modify existing
        subclasses to remove `typeVerifier` and instead extend `objectIsRequiredType`.

        * UserInterface/Models/Canvas.js:
        (WI.Canvas):
        * UserInterface/Models/Frame.js:
        (WI.Frame):
        * UserInterface/Protocol/Target.js:
        (WI.Target):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
        (WI.ResourceSidebarPanel.prototype._addScript):

        * UserInterface/Views/CollectionContentView.js:
        (WI.CollectionContentView):
        (WI.CollectionContentView.titleForCollection): Delete.
        * UserInterface/Views/ResourceCollectionContentView.js:
        (WI.ResourceCollectionContentView):
        Require that subclasses of Collection override `get displayName` if the CollectionContentView
        is not provided with a `contentPlaceholderText`.

        (WI.CollectionContentView.prototype.initialLayout):
        We don't need to create and add ContentView for each item of the Collection, as this is
        already done by attached().

        (WI.CollectionContentView.prototype._showContentPlaceholder):
        Remove the 250ms delay before showing the placeholder TitleView.

        * UserInterface/Views/FolderizedTreeElement.js:
        (WI.FolderizedTreeElement.prototype._settingsForRepresentedObject):

2017-10-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Display fetch() initiated loads as "fetch" instead of "xhr" in the Network Tab
        https://bugs.webkit.org/show_bug.cgi?id=178826

        Reviewed by Youenn Fablet.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.shortDisplayNameForResourceType):
        Fetch and XHR loads are still grouped under the succinct "XHR" filter, but
        at least display the better type name in the "Type" column of the table.

2017-10-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: selected canvas card loses selection outline style while recording
        https://bugs.webkit.org/show_bug.cgi?id=178814
        <rdar://problem/35177317>

        Reviewed by Brian Burg.

        * UserInterface/Views/CanvasOverviewContentView.css:
        (.content-view.canvas-overview .content-view.canvas):
        (.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)):
        (.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, 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 > .preview):
        (.content-view.canvas-overview .content-view.canvas > footer):
        (.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)): Deleted.
        Instead of applying the border to the entire element, apply parts of the border to each of
        its children so that we can choose what colors to use for each part.

2017-10-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [PARITY] Styles Redesign: Add color gradient, bezier curve, and spring inline widgets
        https://bugs.webkit.org/show_bug.cgi?id=178404
        <rdar://problem/35035992>

        Reviewed by Devin Rousso.

        Add inline widgets for the following CSS values:
        - Gradients, e.g. `background-image: linear-gradient(yellow, orange)`
        - Bezier curves, e.g. `transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55)`
        - Spring functions, e.g. `transition-timing-function: spring(1, 2, 2, 4)`

        * UserInterface/Models/Color.js:
        (WI.Color.prototype.toString):
        Don't throw. The are never try/catch blocks on the callsites.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._renderValue):
        (WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
        (WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
        (WI.SpreadsheetStyleProperty.prototype._addColorTokens):
        (WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):

2017-10-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Newly added invalid property isn't immediately shown as invalid
        https://bugs.webkit.org/show_bug.cgi?id=178488

        Reviewed by Brian Burg.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration.prototype.newBlankProperty):
        Call this.update to update _properties, _allProperties, _visibleProperties, and _allVisibleProperties.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled)):
        (.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled)):
        (.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
        When the property name is valid, but the value isn't, display red line-through only for the value.
        This is how it works in the old styles sidebar as well.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.updateClassNames):
        (WI.SpreadsheetStyleProperty.prototype._update):
        Introduce updateClassNames method. Unlike _update, it doesn't change text selection or focus and
        can be safely called on a property while it's being edited.

2017-10-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas Tab: clicking on a canvas card causes details sidebar to show and mess up card arrangement
        https://bugs.webkit.org/show_bug.cgi?id=178803
        <rdar://problem/35176082>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CanvasDetailsSidebarPanel.css:
        (.sidebar > .panel.details.canvas > .content > .empty-content-placeholder):
        (.sidebar > .panel.details.canvas > .content > .empty-content-placeholder > .message):
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel):
        (WI.CanvasDetailsSidebarPanel.prototype.inspect):
        (WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WI.CanvasDetailsSidebarPanel.prototype.layout):

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.disallowInstanceForClass): Deleted.
        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel.disallowInstanceForClass): Deleted.
        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
        (WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass): Deleted.
        Drive-by: these sidebar panels are now only used by the Canvas tab, so we no longer need to
        provide support for multiple instances of them.

2017-10-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: preserve Recordings for each Canvas after closing the Canvas tab
        https://bugs.webkit.org/show_bug.cgi?id=178767
        <rdar://problem/35167239>

        Reviewed by Brian Burg.

        * UserInterface/Test.html:
        Include CollectionTypes for tests.

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

        * UserInterface/Models/Canvas.js:
        (WI.Canvas):
        (WI.Canvas.prototype.get recordingCollection):

        * UserInterface/Models/CollectionTypes.js:
        (WI.CanvasCollection):
        (WI.RecordingCollection):

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

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.prototype.attached):
        (WI.CanvasTabContentView.prototype._recordingAdded):

2017-10-24  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r222181): Web Inspector: Augmenting Agents Domains are not getting activated
        https://bugs.webkit.org/show_bug.cgi?id=178768
        <rdar://problem/35081334>

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        Simplify event dispatch.

        * UserInterface/Controllers/AppController.js:
        (WI.AppController.prototype.activateExtraDomains):
        Pass the domains on.

2017-10-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Console Drawer resizing doesn't match cursor position
        https://bugs.webkit.org/show_bug.cgi?id=178753
        <rdar://problem/35160484>

        Reviewed by Brian Burg.

        * UserInterface/Views/ConsoleDrawer.js:
        (WI.ConsoleDrawer.prototype._updateDrawerHeight):
        Drive-by fix an early return that would never have worked.

        * UserInterface/Views/Main.css:
        (#content):
        Give the #content a flex grow of 1. This causes the space to grow as it
        already was but now it does not affect the size of the fixed height sibling.

2017-10-24  Eric Carlson  <eric.carlson@apple.com>

        Web Inspector: Enable WebKit logging configuration and display
        https://bugs.webkit.org/show_bug.cgi?id=177027
        <rdar://problem/33964767>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js: Add new localized strings.

        * UserInterface/Controllers/LogManager.js:
        (WI.LogManager): Initialize _loggingChannelSources, fetch _customLoggingChannels.
        (WI.LogManager.supportsLogChannels): New.
        (WI.LogManager.prototype.get customLoggingChannels): New.
        (WI.LogManager.prototype.get logChannelSources): New.

        * UserInterface/Main.html:
        * UserInterface/Models/ConsoleMessage.js: Add Media and WebRTC.

        * UserInterface/Models/IssueMessage.js:
        (WI.IssueMessage): Add media and webrtc.

        * UserInterface/Models/LoggingChannel.js: Added.
        (WI.LoggingChannel):
        (WI.LoggingChannel.fromPayload):
        (WI.LoggingChannel.prototype.get source):
        (WI.LoggingChannel.prototype.get level):

        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView): Add new scope buttons for "Log", "Info", and "Debug". Create log channel
            scope buttons once logging has started.
        (WI.LogContentView.prototype.get navigationItems): Add the log message scope bar when necessary.
        (WI.LogContentView.prototype._scopeFromMessageSource): New.
        (WI.LogContentView.prototype._scopeFromMessageLevel): Don't group Info, Log, and Debug.
        (WI.LogContentView.prototype._messageAdded): Force a UI update the first time a WebKit log
            message is added.

        (WI.LogContentView.prototype._messageShouldBeVisible): New, deal with message source bar buttons.
        (WI.LogContentView.prototype._messageSourceBarSelectionDidChange): New.
        (WI.LogContentView.prototype._filterMessageElements): Deal with message source bar buttons.

        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createGeneralSettingsView): Create and initialize menus
            for each log channel.

2017-10-24  Joseph Pecoraro  <pecoraro@apple.com>

        Uncaught Exception: TypeError: null is not an object (evaluating 'this.treeOutline.isXMLMimeType')
        https://bugs.webkit.org/show_bug.cgi?id=178745

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeUpdater.js:
        (WI.DOMTreeUpdater.prototype._updateModifiedNodes):
        An earlier tree element update might have caused this other tree element's
        waiting to be updated to actually be removed. So just skip past them.

2017-10-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add Recording.svg
        https://bugs.webkit.org/show_bug.cgi?id=175045

        Reviewed by Brian Burg.

        * UserInterface/Images/gtk/Recording.svg: Added.

2017-10-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: allow ShaderProgram to be shown in CanvasContentView
        https://bugs.webkit.org/show_bug.cgi?id=178714

        Reviewed by Brian Burg.

        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype.inspect):
        Allow ShaderProgram to show the related Canvas information.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
        (WI.CanvasTabContentView.prototype.showRepresentedObject):
        (WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
        If a ShaderProgram is selected in the path component, display a ShaderProgramContentView.

2017-10-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: remove canvases from Resources and experimental setting/UI
        https://bugs.webkit.org/show_bug.cgi?id=178711

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WI.tabContentViewClassForRepresentedObject):
        * UserInterface/Base/Setting.js:
        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.canvasAdded):
        (WI.CanvasManager.prototype.canvasRemoved):
        * UserInterface/Models/Canvas.js:
        * UserInterface/Models/Frame.js:
        (WI.Frame):
        (WI.Frame.prototype.get extraScriptCollection):
        (WI.Frame.prototype.commitProvisionalLoad):
        (WI.Frame.prototype.get canvasCollection): Deleted.
        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView.isTabAllowed):
        * UserInterface/Views/FrameTreeElement.js:
        (WI.FrameTreeElement):
        (WI.FrameTreeElement.prototype.onattach):
        (WI.FrameTreeElement.prototype.ondetach):
        (WI.FrameTreeElement.prototype.onpopulate):
        (WI.FrameTreeElement.prototype._styleSheetAdded):
        (WI.FrameTreeElement.prototype._canvasWasAdded): Deleted.
        (WI.FrameTreeElement.prototype._canvasWasRemoved): Deleted.
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel):
        (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WI.ResourcesTabContentView):
        (WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

2017-10-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Show recordings in CanvasTabContentView
        https://bugs.webkit.org/show_bug.cgi?id=177606
        <rdar://problem/34715819>

        Reviewed by Brian Burg.

        Original patch by Matt Baker <mattbaker@apple.com>.

        This patch folds canvas recordings into the new Canvas tab, which now
        supports showing both CanvasCollections and Recordings.

        When viewing recordings, a back button is shown at the start of the
        navigation bar, allowing the user to return to the overview. It has been
        styled with a back arrow, to make its function as clear as possible.
        Like other navigation path components, the item for the recording can
        clicked to select another recording taken from the same canvas.

        The recording action scrubber has been moved from the content browser's
        navigation bar to a more prominent location in the recording content view.
        Selecting a frame tree element in the navigation sidebar no longer selects
        the last action for that frame. This was changed to prevent the scrubber
        position from behaving non-monotonically when selecting actions in sequential
        order.

        While this patch retains support for importing recordings, the feature
        is not polished. Currently it is not possible to return to an imported
        recording after leaving closing the view. In the future we may want to
        consider including a navigation sidebar panel for the overview, which
        could list canvas recordings (and eventually shaders).

        * .eslintrc:
        Drive-by: remove duplicate key.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        (WI.tabContentViewClassForRepresentedObject):
        * UserInterface/Main.html:
        * UserInterface/Views/RecordingTabContentView.js: Removed.
        Remove RecordingTabContentView.

        * UserInterface/Images/Recording.svg:
        New recording icon, used for tree elements and canvas preview UI.

        * UserInterface/Models/Recording.js:
        (WI.Recording):
        (WI.Recording.prototype.get visualActionIndexes):
        Visual action indexes should be computed by the recording.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView):
        (WI.CanvasContentView.prototype.refresh):
        (WI.CanvasContentView.prototype.initialLayout):
        (WI.CanvasContentView.prototype.attached):
        (WI.CanvasContentView.prototype._recordingStopped):
        (WI.CanvasContentView.prototype._handleRecordingSelectElementChange):
        New UI for showing CanvasContentView as a CollectionView item. Includes
        recordings button and select for choosing a recording to view.

        * UserInterface/Views/CanvasOverviewContentView.css:
        (.content-view.canvas-overview .content-view.canvas > header):
        Switch to 13px, which is more frequently used.

        (.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
        Switch to literal em dash. Surrounding spaces were ignored when using
        the backslash-escaped character.

        (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar):
        (.content-view.canvas-overview .content-view.canvas > footer > .recordings):
        (.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
        (.content-view.canvas-overview .content-view.canvas > footer > .recordings > select):
        (.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus):
        (.content-view.canvas-overview .content-view.canvas > footer > .flexible-space):
        (.popover-content > .tree-outline .item.recording > .icon):
        (.popover-content > .tree-outline .item.recording:hover):
        (.popover-content > .tree-outline .item.recording:hover > .icon):
        (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar): Deleted.
        (.content-view.canvas-overview .content-view.canvas > footer): Deleted.
        New styles for the recording picker.

        * UserInterface/Views/CanvasOverviewContentView.js:
        (WI.CanvasOverviewContentView):
        (WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
        (WI.CanvasOverviewContentView.prototype.contentViewAdded):
        (WI.CanvasOverviewContentView.prototype.contentViewRemoved):
        (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
        (WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged): Deleted.
        (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent): Deleted.
        Canvas tree elements are now managed by CanvasTabContentView, which is
        now responsible for maintaining the tree of canvas objects. For now the
        tree holds canvases and recordings, but will eventually include shader programs.

        * UserInterface/Views/CanvasTabContentView.css:
        (.content-view.tab.canvas .navigation-bar > .item .recording > .icon):
        (.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon): Deleted.
        Add styles for recording path components.

        * UserInterface/Views/CanvasTabContentView.js:
        (WI.CanvasTabContentView):
        (WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
        (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
        (WI.CanvasTabContentView.prototype.showRepresentedObject):
        (WI.CanvasTabContentView.prototype.shown):
        (WI.CanvasTabContentView.prototype.restoreStateFromCookie):
        (WI.CanvasTabContentView.prototype.attached):
        (WI.CanvasTabContentView.prototype.detached):
        (WI.CanvasTabContentView.prototype._canvasAdded):
        (WI.CanvasTabContentView.prototype._canvasRemoved):
        (WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
        (WI.CanvasTabContentView.prototype._recordingStopped):
        (WI.CanvasTabContentView.prototype._navigationSidebarImport):
        (WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
        (WI.CanvasTabContentView.prototype._recordingAdded):
        (WI.CanvasTabContentView.prototype._recordingActionIndexChanged):
        (WI.CanvasTabContentView.prototype._updateActionIndex):
        (WI.CanvasTabContentView.prototype.restoreFromCookie): Deleted.
        (WI.CanvasTabContentView.prototype._overviewPathComponentClicked): Deleted.

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

        * UserInterface/Views/RecordingActionTreeElement.css:
        (body:not(.window-inactive, .window-docked-inactive) .tree-outline:matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
        (body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,): Deleted.

        * UserInterface/Views/RecordingContentView.css:
        (.content-view:not(.tab).recording):
        (.content-view:not(.tab).recording > header):
        (.content-view:not(.tab).recording > header > .slider-container):
        (.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
        (.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-runnable-track):
        (.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-thumb):
        (.content-view:not(.tab).recording > .preview-container):

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):
        (WI.RecordingContentView.prototype.updateActionIndex):
        (WI.RecordingContentView.prototype.initialLayout):
        (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
        (WI.RecordingContentView.prototype._updateSliderValue):
        (WI.RecordingContentView.prototype._sliderChanged):
        (WI.RecordingContentView.prototype.get supplementalRepresentedObjects): Deleted.

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype.set recording):
        (WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):

        * UserInterface/Views/ResourceIcons.css:
        (.canvas .icon):
        (.canvas.canvas-2d .icon): Deleted.
        (.canvas:matches(.webgl, .webgl2, .webgpu) .icon): Deleted.

2017-10-24  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Layer mutations should be purely based on layerId, not based on nodeId
        https://bugs.webkit.org/show_bug.cgi?id=178554

        Reviewed by Devin Rousso.

        * UserInterface/Controllers/LayerTreeManager.js:
        (WI.LayerTreeManager.prototype.layerTreeMutations):
        Looking for special cases involving nodeIds is incorrect, as nodeIds need not be unique in the layer list (such
        as when an element and a pseudo-element thereof each give rise to a layer). A layer object marked "preserved" in
        this way shares no data with its predecessor, meaning that no consumer can act upon this so-called preservation.
        A preserved layer should be nothing more or less than a recycled layerId (the thing that *is* unique).

2017-10-23  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Inline widgets don't hide when starting editing by tabbing from property name
        https://bugs.webkit.org/show_bug.cgi?id=178638

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
        Blur event on the property name text field caused WI.SpreadsheetStyleProperty.prototype._renderValue,
        which displayed inline swatches. Display inline swatches only after blur event on the property value.

2017-10-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Please support HAR Export for network traffic
        https://bugs.webkit.org/show_bug.cgi?id=146692
        <rdar://problem/7463672>

        Reviewed by Brian Burg.

        * UserInterface/Main.html:
        * UserInterface/Test.html:
        New resources.

        * UserInterface/Base/Platform.js:
        Include a build number as well.
        
        * UserInterface/Base/URLUtilities.js:
        (parseLocationQueryParameters): Deleted.
        Remove unused function.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WI.FrameResourceManager.prototype.frameDidNavigate):
        (WI.FrameResourceManager.prototype.resourceRequestWillBeSent):
        (WI.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
        (WI.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
        (WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
        Pass along a walltime.

        * UserInterface/Protocol/NetworkObserver.js:
        (WI.NetworkObserver.prototype.requestWillBeSent):
        Pass along a walltime. This new parameter shifts old parameters.

        * UserInterface/Controllers/HARBuilder.js: Added.
        (WI.HARBuilder.async.buildArchive):
        (WI.HARBuilder.creator):
        (WI.HARBuilder.pages):
        (WI.HARBuilder.pageTimings):
        (WI.HARBuilder.entry):
        (WI.HARBuilder.request):
        (WI.HARBuilder.response):
        (WI.HARBuilder.cookies):
        (WI.HARBuilder.headers):
        (WI.HARBuilder.content):
        (WI.HARBuilder.postData):
        (WI.HARBuilder.cache):
        (WI.HARBuilder.timings):
        (WI.HARBuilder.ipAddress):
        (WI.HARBuilder.date):
        (WI.HARBuilder.fetchType):
        HAR construction and helpers.

        * UserInterface/Models/Cookie.js:
        (WI.Cookie.prototype.expirationDate):
        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.get queryStringParameters):
        (WI.Resource.prototype.get requestFormParameters):
        (WI.Resource.prototype.get requestSentWalltime):
        (WI.Resource.prototype.get requestSentDate):
        (WI.Resource.prototype.hasRequestFormParameters):
        Helpers for HAR generation and sub-sets of data.

        * UserInterface/Models/SourceCode.js:
        (WI.SourceCode.prototype._processContent):
        Capture the raw, unmodified, base64 encoded flag and content. This ends
        up getting used by HAR generation and is otherwise lost.

        * UserInterface/Test/TestHarness.js:
        (TestHarness.prototype.json):
        Helper for just logging JSON data with a filter. This defaults to
        a reasonable 2 space indent for JSON logs in our test output.

        * UserInterface/Views/DOMTreeContentView.js:
        (WI.DOMTreeContentView.prototype.get saveData):
        (WI.DOMTreeContentView.get saveData.saveHandler): Deleted.
        Drive-by simplify while looking at other save handlers.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.get supportsSave):
        (WI.NetworkTableContentView.prototype.get saveData):
        (WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
        (WI.NetworkTableContentView.prototype._HARResources):
        (WI.NetworkTableContentView.prototype._exportHAR):
        Provide a context menu and save keyboard handler to export a HAR.
        This matches other browsers.

        * UserInterface/Views/ResourceClusterContentView.js:
        (WI.ResourceClusterContentView.prototype._canShowRequestContentView):
        Use code that is now available in Resource.

2017-10-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: scrolling the editor while debugging shouldn't trigger popovers
        https://bugs.webkit.org/show_bug.cgi?id=178325

        Reviewed by Devin Rousso.

        Ignore the next "mousemove" event immediately following a "mousewheel",
        when determining the hovered item for purposes of triggering a popover.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WI.CodeMirrorTokenTrackingController):
        (WI.CodeMirrorTokenTrackingController.prototype._startTracking):
        (WI.CodeMirrorTokenTrackingController.prototype._stopTracking):
        (WI.CodeMirrorTokenTrackingController.prototype.handleEvent):
        (WI.CodeMirrorTokenTrackingController.prototype._mouseMovedOverEditor):

2017-10-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: preview content view for MIME type application/json should be a collapsible tree outline
        https://bugs.webkit.org/show_bug.cgi?id=158938
        <rdar://problem/26891128>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New files and strings.

        * UserInterface/Views/JSONResourceContentView.css: Added.
        (.content-view.resource.json):
        (.content-view.resource.json .object-tree .prototype-property):
        Some padding and scrolling for the JSON content view.

        * UserInterface/Views/JSONResourceContentView.js: Added.
        (WI.JSONResourceContentView):
        (WI.JSONResourceContentView.customContentViewDisplayName):
        (WI.JSONResourceContentView.prototype.contentAvailable):
        (WI.JSONResourceContentView.prototype.closed):
        JSON view evaluates the JSON content on the page and shows an ObjectTree
        for the resulting object.

        * UserInterface/Views/ResourceClusterContentView.js:
        (WI.ResourceClusterContentView):
        (WI.ResourceClusterContentView.prototype.get customResponseContentView):
        (WI.ResourceClusterContentView.prototype.get selectionPathComponents):
        (WI.ResourceClusterContentView.prototype.restoreFromCookie):
        (WI.ResourceClusterContentView.prototype.showResponse):
        (WI.ResourceClusterContentView.prototype._canShowRequestContentView):
        (WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView):
        (WI.ResourceClusterContentView.prototype._pathComponentForContentView):
        (WI.ResourceClusterContentView.prototype._identifierForContentView):
        (WI.ResourceClusterContentView.prototype._showContentViewForIdentifier):
        (WI.ResourceClusterContentView.prototype._resourceTypeDidChange):
        (WI.ResourceClusterContentView.prototype._resourceLoadingDidFinish):
        (WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentView):
        (WI.ResourceClusterContentView.prototype._customContentViewConstructorForResource):
        Allow a custom content view to be used for a resource based on the response.
        Currently the only custom content view is the JSON content view.

2017-10-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Turn on the new tab by default, remove the legacy network tab
        https://bugs.webkit.org/show_bug.cgi?id=178559
        <rdar://problem/34985503>

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        * UserInterface/Base/Setting.js:
        * UserInterface/Main.html:
        * UserInterface/Views/LegacyNetworkSidebarPanel.css: Removed.
        * UserInterface/Views/LegacyNetworkSidebarPanel.js: Removed.
        * UserInterface/Views/LegacyNetworkTabContentView.js: Removed.
        * UserInterface/Views/NetworkGridContentView.css: Removed.
        * UserInterface/Views/NetworkGridContentView.js: Removed.
        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Remove LegacyNetwork tab, its NetworkGridContentView, and associated content.

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView.isTabAllowed):
        Simplify now that this is the only Network tab.

        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
        Remove experimental setting.


2017-10-19  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed localized strings update.

        * Localizations/en.lproj/localizedStrings.js:
        Add missing string after r223735.

2017-10-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab: Metrics Detail View
        https://bugs.webkit.org/show_bug.cgi?id=178323
        <rdar://problem/34071929>

        Reviewed by Devin Rousso.

        Provide a Metrics detail view for resources in the Network tab.
        This detail view shows:
        
          - Transfer Size information (Header + Body bytes)
          - Resource Size information (Compression, MIME)
          - Timing information (ResourceTiming, Waterfall breakdown)

        The display of timing information isn't quite final. But this
        is a good starting point for all the information.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New resources and strings.

        * UserInterface/Base/MIMETypeUtilities.js:
        (WI.shouldTreatMIMETypeAsText):
        Helper for detecting text resources.

        * UserInterface/Images/Receiving.svg: Added.
        * UserInterface/Images/Sending.svg: Added.
        * UserInterface/Images/gtk/Receiving.svg: Added.
        * UserInterface/Images/gtk/Sending.svg: Added.
        Same images for main and linux ports with different licenses.

        * UserInterface/Views/NetworkResourceDetailView.js:
        (WI.NetworkResourceDetailView):
        (WI.NetworkResourceDetailView.prototype.metricsContentViewGoToHeaders):
        (WI.NetworkResourceDetailView.prototype.metricsContentViewGoToRequestBody):
        (WI.NetworkResourceDetailView.prototype.metricsContentViewGoToResponseBody):
        (WI.NetworkResourceDetailView.prototype.initialLayout):
        (WI.NetworkResourceDetailView.prototype._showPreferredContentView):
        (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
        Replace "Timing" and "Details" stubs with a single "Metrics" section.
        Handle delegate cases from the Metrics content view.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.displayNameForResource):
        (WI.NetworkTableContentView.prototype._displayType): Deleted.
        (WI.NetworkTableContentView.prototype._entryForResource):
        Promote this to a static helper in case anyone else wants it.

        (WI.NetworkTableContentView.prototype.closed):
        (WI.NetworkTableContentView.prototype.reset):
        (WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
        Reorder code a bit to reduce work since hiding the detail view currently
        forces a layout.

        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView):
        (WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
        (WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
        (WI.ResourceHeadersContentView.prototype._goToRequestDataClicked): Deleted.
        Simplify by making the delegate required.

        * UserInterface/Views/ResourceMetricsContentView.css: Added.
        (.resource-metrics):
        (.resource-metrics > .content):
        (.resource-metrics > .content .label):
        General metrics styles.

        (.resource-metrics > .content > section):
        (.resource-metrics > .content > section .subtitle):
        (.resource-metrics > .content > section:not(:last-of-type)):
        (.resource-metrics > .content > section.split):
        (.resource-metrics > .content > section.split > .subsection):
        (.resource-metrics > .content > section.split > .subsection > table):
        (.resource-metrics > .content > section.split > .divider):
        (.resource-metrics > .content > section.network > .subsection > .container):
        (.resource-metrics > .content > section.network .bytes-group):
        (.resource-metrics > .content > section.network .bytes):
        (body[dir=ltr] .resource-metrics > .content > section.network table > tr > td.label):
        (body[dir=rtl] .resource-metrics > .content > section.network table > tr > td.label):
        (.resource-metrics > .content > section.network .suffix):
        (.resource-metrics > .content > section.network img):
        (.resource-metrics > .content > section.network .go-to-arrow):
        (.resource-metrics > .content > section.network .warning):
        Styles for Sizes sections.

        (.resource-metrics > .content > section.timing):
        (.resource-metrics > .content > section.timing .subtitle):
        (.resource-metrics > .content > section.timing > ul):
        (.resource-metrics > .content > section.timing > ul > li):
        (.resource-metrics > .content > section.timing > .waterfall):
        (.resource-metrics > .content > section.timing > .waterfall .block):
        (.resource-metrics > .content > section.timing > ul > li > .row-label):
        (body[dir=ltr] .resource-metrics > .content > section.timing > ul > li > .row-label):
        (body[dir=rtl] .resource-metrics > .content > section.timing > ul > li > .row-label):
        (.resource-metrics > .content > section.timing > ul > li > .time-label):
        (.resource-metrics > .content > section.timing > ul > li.total .block):
        (.resource-metrics > .content > section.timing > ul > li.total .time-label):
        (.resource-metrics > .content > section.timing .indeterminate-progress-spinner):
        (.resource-metrics > .content > section.timing .empty):
        Styles for Timing section.

        * UserInterface/Views/ResourceMetricsContentView.js: Added.
        (WI.ResourceMetricsContentView):
        (WI.ResourceMetricsContentView.prototype.initialLayout.createSizeComponents):
        (WI.ResourceMetricsContentView.prototype.initialLayout):
        (WI.ResourceMetricsContentView.prototype.layout):
        (WI.ResourceMetricsContentView.prototype.closed):
        (WI.ResourceMetricsContentView.prototype._sizeComponents):
        (WI.ResourceMetricsContentView.prototype._refreshTransferSizeSections.appendGoToArrow):
        (WI.ResourceMetricsContentView.prototype._refreshTransferSizeSections):
        (WI.ResourceMetricsContentView.prototype._refreshResourceSizeSection):
        (WI.ResourceMetricsContentView.prototype._refreshTimingSection.createBlock):
        (WI.ResourceMetricsContentView.prototype._refreshTimingSection.createTimeLabel):
        (WI.ResourceMetricsContentView.prototype._refreshTimingSection.createRow):
        (WI.ResourceMetricsContentView.prototype._refreshTimingSection):
        (WI.ResourceMetricsContentView.prototype._resourceSizeDidChange):
        (WI.ResourceMetricsContentView.prototype._resourceTransferSizeDidChange):
        (WI.ResourceMetricsContentView.prototype._resourceMetricsDidChange):
        (WI.ResourceMetricsContentView.prototype._resourceTimestampsDidChange):
        Metrics content. This just creates all of the elements, and saves a
        few to get populated with data later on.

2017-10-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Improve graphical representation of network waterfall
        https://bugs.webkit.org/show_bug.cgi?id=147897
        <rdar://problem/27482198>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New strings and resources.

        * UserInterface/Views/Variables.css:
        (:root):
        Global styles.

        * UserInterface/Views/NetworkTableContentView.css:
        (.network-table .header .cell.waterfall):
        (.network-table .timeline-ruler):
        (.network-table .timeline-ruler > .header):
        Styles for having a TimelineRuler in the Waterfall's table header.

        (.network-table :not(.header) .cell.waterfall):
        (.network-table :not(.header) .cell.waterfall .waterfall-container):
        (.waterfall .block):
        (.waterfall .block.request,):
        (.waterfall .block.mouse):
        (.waterfall .block.queue):
        (.waterfall .block.dns):
        (.waterfall .block.connect):
        (.waterfall .block.secure):
        (.waterfall .block.request):
        (.waterfall .block.response):
        Waterfall styles inside the Network Table.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.reset):
        (WI.NetworkTableContentView.prototype.tablePopulateCell):
        (WI.NetworkTableContentView.prototype.initialLayout):
        (WI.NetworkTableContentView.prototype._updateWaterfallTimelineRuler):
        (WI.NetworkTableContentView.prototype._updateEntryForResource):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
        (WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
        (WI.NetworkTableContentView.prototype._tableWaterfallColumnDidChangeWidth):
        Update the TimelineRuler and Waterfall column when the column's
        size changes or the time bounds change. The time bounds right now
        are the earliest and latest time of resources. Later we hope to
        bound this by a timeline selection.

        (WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
        (WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
        (WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
        (WI.NetworkTableContentView.prototype._populateWaterfallGraph):
        (WI.NetworkTableContentView.prototype._hidePopover):
        Create and manage a popover for the waterfall column.

        * UserInterface/Views/Popover.js:
        (WI.Popover):
        (WI.Popover.prototype.get element):
        (WI.Popover.prototype.get visible):
        (WI.Popover.prototype.get backgroundStyle):
        (WI.Popover.prototype.set backgroundStyle):
        (WI.Popover.prototype._drawBackground):
        Provide an option to have a white background popover.

        * UserInterface/Views/ResourceTimingBreakdownView.css: Added.
        (.resource-timing-breakdown):
        (.resource-timing-breakdown .waterfall):
        (.resource-timing-breakdown .waterfall .block):
        (.resource-timing-breakdown .waterfall .block.request):
        (body[dir=ltr] .resource-timing-breakdown .waterfall .block.queue,):
        (body[dir=ltr] .resource-timing-breakdown .waterfall .block.response):
        (body[dir=rtl] .resource-timing-breakdown .waterfall .block.queue,):
        (body[dir=rtl] .resource-timing-breakdown .waterfall .block.response):
        (.resource-timing-breakdown .numbers):
        (body[dir=ltr] .resource-timing-breakdown .numbers):
        (body[dir=rtl] .resource-timing-breakdown .numbers):
        Waterfall styles and sizes in the popover's breakdown view.

        (.resource-timing-breakdown .numbers > p):
        (.resource-timing-breakdown .numbers > p > .swatch):
        (.resource-timing-breakdown .numbers .swatch.queue):
        (.resource-timing-breakdown .numbers .swatch.dns):
        (.resource-timing-breakdown .numbers .swatch.connect):
        (.resource-timing-breakdown .numbers .swatch.secure):
        (.resource-timing-breakdown .numbers .swatch.request):
        (.resource-timing-breakdown .numbers .swatch.response):
        (.resource-timing-breakdown .numbers > p > .label):
        (.resource-timing-breakdown .numbers > p.total):
        Number and label styles in the popover's breakdown view.

        * UserInterface/Views/ResourceTimingBreakdownView.js: Added.
        (WI.ResourceTimingBreakdownView):
        (WI.ResourceTimingBreakdownView.prototype.initialLayout):
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.appendBlock):
        (WI.ResourceTimingBreakdownView.prototype.initialLayout.appendRow):
        Show a section for a waterfall visualization and a section for the numbers.

        * UserInterface/Views/Table.js:
        (WI.Table.prototype.reloadVisibleColumnCells):
        (WI.Table.prototype.cellForRowAndColumn):
        (WI.Table.prototype.addColumn):
        (WI.Table.prototype.showColumn):
        (WI.Table.prototype.hideColumn):
        (WI.Table.prototype.resizerDragging):
        (WI.Table.prototype.resizerDragEnded):
        (WI.Table.prototype._resizeColumnsAndFiller):
        (WI.Table.prototype._applyColumnWidths):
        (WI.Table.prototype._positionHeaderViews):
        * UserInterface/Views/TableColumn.js:
        (WI.TableColumn.prototype.get headerView):
        Provide a way to include a WI.View with a TableColumn Header. This
        matches what we do with DataGrid, and ends up being pretty concise.

        * UserInterface/Views/TimelineRuler.css:
        (.timeline-ruler > .header):
        Make the height a variable so that other code can work off of it.

2017-10-19  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Remove superfluous file External/.eslintrc
        https://bugs.webkit.org/show_bug.cgi?id=178474

        Reviewed by Joseph Pecoraro.

        * UserInterface/External/.eslintrc: Removed.

2017-10-19  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Inspector UI does not use system font despite -webkit-system-font being supported
        https://bugs.webkit.org/show_bug.cgi?id=178388

        Reviewed by Joseph Pecoraro.

        Change ocurrences of the "-apple-system" generic font name to
        "-webkit-system-font", which is also implemented by the GTK+ port.

        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror .CodeMirror-linenumber):
        (.CodeMirror .CodeMirror-placeholder):
        * UserInterface/Views/ConsoleMessageView.css:
        (.console-user-command.special-user-log > .console-message-text):
        (.console-message .console-message-extra-parameters-container > li::before):
        (.console-message .console-message-location):
        * UserInterface/Views/DataGrid.css:
        (.data-grid td):
        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default > .item):
        * UserInterface/Views/HeapSnapshotInstancesContentView.css:
        (.heap-snapshot-instance-popover-content > .title):
        * UserInterface/Views/HierarchicalPathComponent.css:
        (.hierarchical-path-component):
        * UserInterface/Views/LogContentView.css:
        (.console-messages):
        * UserInterface/Views/Main.css:
        (body):
        * UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
        (.object-tree-array-index .index-name):
        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
        (.object-tree-property .property-name,):
        * UserInterface/Views/ObjectTreeView.css:
        (.tree-outline.object li .empty-message):
        * UserInterface/Views/RecordingActionTreeElement.css:
        (.item.action:not(.initial-state)::before):
        * UserInterface/Views/SourceCodeTextEditor.css:
        (.source-code.text-editor > .CodeMirror .line-indicator-widget > .text):
        (.popover .debugger-popover-content > .title):
        * UserInterface/Views/TypeTreeView.css:
        (.type-tree):
        * UserInterface/Views/VisualStyleFontFamilyTreeElement.js:

2017-10-18  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Layers sidebar footer should not have white background with full-width quick console
        https://bugs.webkit.org/show_bug.cgi?id=178493

        Reviewed by Matt Baker.

        * UserInterface/Views/LayerDetailsSidebarPanel.css:
        Update CSS for new sidebar.

        * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
        Update CSS for legacy sidebar.

2017-10-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add Layers.svg
        https://bugs.webkit.org/show_bug.cgi?id=178430

        Reviewed by Michael Catanzaro.

        * UserInterface/Images/gtk/Layers.svg: Added.

2017-10-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r223321.
        https://bugs.webkit.org/show_bug.cgi?id=178476

        This protocol change broke some internal builds (Requested by
        brrian__ on #webkit).

        Reverted changeset:

        "Web Inspector: provide a way to enable/disable event
        listeners"
        https://bugs.webkit.org/show_bug.cgi?id=177451
        https://trac.webkit.org/changeset/223321

2017-10-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [PARITY] Styles Redesign: Add color picker inline widget
        https://bugs.webkit.org/show_bug.cgi?id=178354

        Reviewed by Joseph Pecoraro.

        Show color picker using the existing WI.InlineSwatch.

        * UserInterface/Models/Color.js:
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-comment):
        Syntax highlight comments in values.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._renderValue):
        (WI.SpreadsheetStyleProperty.prototype._addColorTokens):
        Find colors in CodeMirror tokens and replace them with color token elements.

2017-10-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: Command-click on a property name should jump to definition in Resources tab
        https://bugs.webkit.org/show_bug.cgi?id=174329
        <rdar://problem/33225564>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        Add "meta-key-pressed" class to <body> when Command key is pressed.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.meta-key-pressed .spreadsheet-css-declaration:not(.locked) :matches(.name, .value):not(.editing):hover):
        Use the same styles as in CodeMirrorTokenTrackingController.css.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype._setupJumpToSymbol):
        This is very similar to WI.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked,
        except it doesn't include special cases for CSS variables and links yet.

2017-10-16  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: apply syntax highlighting to property values
        https://bugs.webkit.org/show_bug.cgi?id=178176

        Reviewed by Matt Baker.

        - Highlight links blue and CSS strings dark red.
        - Truncate URLs and strings over 150 characters.

        * UserInterface/Views/CodeMirrorAdditions.js:
        Parse CSS values using CodeMirror.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-link):
        (.spreadsheet-style-declaration-editor .property:not(.disabled) .token-string):

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldWillStartEditing):
        Replace trancated values with their full version.

        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
        (WI.SpreadsheetStyleProperty.prototype._renderValue):
        Highlight links and CSS strings in values when not editing.

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField.prototype.startEditing):
        Disabling of syntax highlighting moved to spreadsheetTextFieldWillStartEditing.

        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.syntax-highlighted a):
        * UserInterface/Views/Variables.css:
        (:root):
        Make link color a variable.

2017-10-16  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Layers tab mistakenly throws out the root element's layer.
        https://bugs.webkit.org/show_bug.cgi?id=178222

        Reviewed by Brian Burg.

        * UserInterface/Controllers/LayerTreeManager.js:
        (WI.LayerTreeManager.prototype.layersForNode):
        Fix the issue at the manager level.

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView.prototype.layout):
        Update new sidebar based on simplified manager API.

        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WI.LayerTreeDetailsSidebarPanel.prototype.layout):
        Move overtailored code from manager to legacy sidebar.

2017-10-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Modify CSS number values with up key and down key
        https://bugs.webkit.org/show_bug.cgi?id=170779
        <rdar://problem/33170633>

        Reviewed by Matt Baker.

        Up key increments a number, Down key decrements it.

        Holding modifier keys changes the step value:
        - Option modifies the value by 0.1
        - Shift modifies the value by 10
        - Command modifies the value by 100

        * UserInterface/Test.html:
        * UserInterface/Views/EditingSupport.js:
        (WI.incrementElementValue):
        Abstract away incrementElementValue into a public method.

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

2017-10-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: show warning when recorded Canvas action caused no visual change
        https://bugs.webkit.org/show_bug.cgi?id=175282

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction):
        (WI.RecordingAction.prototype.get valid):
        (WI.RecordingAction.prototype.get hasVisibleEffect):
        (WI.RecordingAction.prototype.markInvalid):
        (WI.RecordingAction.prototype.apply):
        (WI.RecordingAction.prototype.async._swizzle):
        If the selected action is visual, save a copy of the preview canvas' dataURL before
        applying the action and compare it to its dataURL after. If there is no difference, the
        action had no visual effect.

        * UserInterface/Models/Recording.js:
        (WI.Recording):

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement):
        (WI.RecordingActionTreeElement.prototype._handleValidityChanged):
        (WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):
        * UserInterface/Views/RecordingActionTreeElement.css:
        (.item.action.visual.no-visible-effect:not(.invalid) > .status > .warning):

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):
        (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
        (WI.RecordingContentView.prototype._applyAction): Deleted.

2017-10-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: [PARITY] Styles Redesign: clicking on the go-to arrow in Computed tab should work
        https://bugs.webkit.org/show_bug.cgi?id=178286
        <rdar://problem/34986379>

        Reviewed by Joseph Pecoraro.

        Highlight the matching property using a yellow background and focus on the property value
        if the property is editable (e.g., not a User Agent style).

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor):
        (.spreadsheet-style-declaration-editor .property):
        Move left padding to the property element so there's no awkward gap on the left side
        when the property is highlighted.

        (.spreadsheet-style-declaration-editor .property.highlighted):
        (@keyframes style-property-highlight):
        Use the same animation duration as we used in `.text-editor > .CodeMirror .highlighted`.
        The highlight color was changed from light blue to yellow.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
        Use the same logic as in WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty
        to find matching style property to highlight.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.highlightProperty):
        Use the same logic as in WI.CSSStyleDeclarationSection.prototype.highlightProperty.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
        Copied from WI.RulesStyleDetailsPanel.

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

2017-10-14  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r223310): Web Inspector: Class list container is transparent and unreadable
        https://bugs.webkit.org/show_bug.cgi?id=178311

        Reviewed by Devin Rousso.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container):
        Fix 1px hole below the class container.

2017-10-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas tab: recordings should have a unique name
        https://bugs.webkit.org/show_bug.cgi?id=178188
        <rdar://problem/34943364>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        New format string "Recording %d".

        * UserInterface/Base/FileUtilities.js:
        (WI.loadDataFromFile):
        Pass chosen filename to callback.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.recordingFinished):
        Create a unique name for the recording.

        * UserInterface/Models/Recording.js:
        (WI.Recording):
        (WI.Recording.fromPayload):
        (WI.Recording.prototype.get displayName):
        (WI.Recording.prototype.createDisplayName):

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView.prototype.get saveData):
        Use encodeURI so that special characters can be used in filenames, and
        to be consistent with other `saveData` implementations.

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype.set recording):
        (WI.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
        Drive-by fix: wait until actions are resolved before updating UI.

        * UserInterface/Views/RecordingTabContentView.js:
        (WI.RecordingTabContentView.prototype._navigationSidebarImport):
        Try to use the imported filename as the recording name. If the name
        collides with that of another imported recording, append a unique suffix.

2017-10-14  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: provide a way to enable/disable event listeners
        https://bugs.webkit.org/show_bug.cgi?id=177451

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

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

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WI.DOMNodeDetailsSidebarPanel.prototype.attached):
        (WI.DOMNodeDetailsSidebarPanel.prototype.detached):
        (WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
        (WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
        (WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
        Listen for `WI.DOMNode.Event.EventListenersChanged` on all instances of WI.DOMNode, since we
        will still want to refresh the event listeners section in the event that an event listener
        is removed from a parent node.

        * UserInterface/Views/EventListenerSectionGroup.js:
        (WI.EventListenerSectionGroup):
        (WI.EventListenerSectionGroup.prototype._eventText):
        (WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
        (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
        (WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):
        * UserInterface/Views/EventListenerSectionGroup.css:
        (.event-listener-section > .content input[type="checkbox"]):

        * UserInterface/Views/DetailsSectionSimpleRow.js:
        (WI.DetailsSectionSimpleRow.prototype.get label):
        (WI.DetailsSectionSimpleRow.prototype.set label):

2017-10-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: make split console full width of view
        https://bugs.webkit.org/show_bug.cgi?id=176635

        Reviewed by Timothy Hatcher.

        * UserInterface/Main.html:
        * UserInterface/Views/Main.css:
        (#main):
        (#content):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):
        (.sidebar > .panel.details.css-style > .content ~ .options-container):

2017-10-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: fix ESLint errors
        https://bugs.webkit.org/show_bug.cgi?id=175065

        Reviewed by Joseph Pecoraro.

        Removed trailing whitespace, extra parenthesis, and some unnecessary escape characters.
        Added missing semicolons, spacing around default values for parameters, and changed `==` to
        `===` where applicable.

        Specific changes to each file were removed for brevity.

        * .eslintrc:
        Alphabetize each list of global variables and add some missing utility functions.

        * UserInterface/Base/EventListener.js:
        * UserInterface/Base/EventListenerSet.js:
        * UserInterface/Base/Main.js:
        * UserInterface/Base/Setting.js:
        * UserInterface/Base/TextUtilities.js:
        * UserInterface/Base/URLUtilities.js:
        * UserInterface/Base/Utilities.js:
        * UserInterface/Base/YieldableTask.js:
        * UserInterface/Controllers/AppControllerBase.js:
        * UserInterface/Controllers/CanvasManager.js:
        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        * UserInterface/Controllers/DOMDebuggerManager.js:
        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        * UserInterface/Controllers/RuntimeManager.js:
        * UserInterface/Controllers/SourceMapManager.js:
        * UserInterface/Debug/DebugContentView.js:
        * UserInterface/Debug/UncaughtExceptionReporter.js:
        * UserInterface/Models/CSSKeywordCompletions.js:
        * UserInterface/Models/DOMNode.js:
        * UserInterface/Models/DOMNodeStyles.js:
        * UserInterface/Models/KeyboardShortcut.js:
        * UserInterface/Models/ProfileNode.js:
        * UserInterface/Models/Resource.js:
        * UserInterface/Models/ResourceCollection.js:
        * UserInterface/Models/Script.js:
        * UserInterface/Models/ScriptSyntaxTree.js:
        * UserInterface/Models/ScriptTimelineRecord.js:
        * UserInterface/Protocol/Connection.js:
        * UserInterface/Test/FrontendTestHarness.js:
        * UserInterface/Test/TestHarness.js:
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        * UserInterface/Views/ChartDetailsSectionRow.js:
        * UserInterface/Views/CodeMirrorAdditions.js:
        * UserInterface/Views/CodeMirrorFormatters.js:
        * UserInterface/Views/CodeMirrorRegexMode.js:
        * UserInterface/Views/ContentBrowserTabContentView.js:
        * UserInterface/Views/DataGrid.js:
        * UserInterface/Views/DataGridNode.js:
        * UserInterface/Views/FindBanner.js:
        * UserInterface/Views/GroupNavigationItem.js:
        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        * UserInterface/Views/NetworkTableContentView.js:
        * UserInterface/Views/NetworkTimelineView.js:
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        * UserInterface/Views/ObjectTreeView.js:
        * UserInterface/Views/RecordingContentView.js:
        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        * UserInterface/Views/ResourceCookiesContentView.js:
        * UserInterface/Views/ResourceDetailsSection.js:
        * UserInterface/Views/ResourceHeadersContentView.js:
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        * UserInterface/Views/SettingEditor.js:
        * UserInterface/Views/Sidebar.js:
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        * UserInterface/Views/Table.js:
        * UserInterface/Views/TextEditor.js:
        * UserInterface/Views/TimelineDataGridNode.js:
        * UserInterface/Views/TreeElement.js:
        * UserInterface/Views/TreeOutline.js:
        * UserInterface/Views/WebSocketDataGridNode.js:
        * UserInterface/Workers/Formatter/EsprimaFormatter.js:
        * UserInterface/Workers/Formatter/FormatterWorker.js:

2017-10-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: hook up autocompletion to property names and values
        https://bugs.webkit.org/show_bug.cgi?id=177313
        <rdar://problem/34577057>

        Reviewed by Joseph Pecoraro.

        - Arrow Right accept the current completion item and places the text caret after it.
        - Arrow Left hides the completion popover.
        - Arrow Up selects the previous completion item.
        - Arrow Down selects the next completion item.
        - Enter and Tab accept the current completion item and navigate to the next focusable item.
        - Escape hides the completion popover, if there is one.

        * UserInterface/Views/CompletionSuggestionsView.js:
        (WI.CompletionSuggestionsView):
        (WI.CompletionSuggestionsView.prototype._mouseDown):
        Add a preventBlur option so clicking on an completion item doesn't change the focus and
        doesn't cause "blur" event on the target text field.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .completion-hint):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
        Call detached on every SpreadsheetTextField to hide CompletionSuggestionsView once
        SpreadsheetCSSStyleDeclarationEditor is removed from the DOM.

        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
        Remove index argument since it is no longer used.

        * UserInterface/Views/SpreadsheetStyleProperty.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.detached):
        (WI.SpreadsheetStyleProperty.prototype._remove):
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
        (WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
        Add an extra parameter to SpreadsheetTextField to pass a completion data provider.

        * UserInterface/Views/SpreadsheetTextField.js:
        (WI.SpreadsheetTextField):
        (WI.SpreadsheetTextField.prototype.get suggestionHint):
        (WI.SpreadsheetTextField.prototype.set suggestionHint):
        (WI.SpreadsheetTextField.prototype.startEditing):
        (WI.SpreadsheetTextField.prototype.stopEditing):
        (WI.SpreadsheetTextField.prototype.detached):
        (WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
        (WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
        (WI.SpreadsheetTextField.prototype._getPrefix):
        (WI.SpreadsheetTextField.prototype._handleBlur):
        (WI.SpreadsheetTextField.prototype._handleKeyDown):
        (WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
        (WI.SpreadsheetTextField.prototype._handleInput):
        (WI.SpreadsheetTextField.prototype._updateCompletions):
        (WI.SpreadsheetTextField.prototype._getCaretRect):
        (WI.SpreadsheetTextField.prototype._getCompletionPrefix):
        (WI.SpreadsheetTextField.prototype._applyCompletionHint):
        (WI.SpreadsheetTextField.prototype._hideCompletions):
        Provide text completion based on the existing CompletionSuggestionsView when completionProvider is passed to SpreadsheetTextField.

2017-10-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Switch Clear navigation item back to the Trash icon (Console, Timelines, Network)
        https://bugs.webkit.org/show_bug.cgi?id=178244
        <rdar://problem/34966525>

        Reviewed by Brian Burg.

        * UserInterface/Images/NavigationItemClear.svg: Removed.
        * UserInterface/Images/gtk/NavigationItemClear.svg: Removed.
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView):
        * UserInterface/Views/NetworkGridContentView.js:
        (WI.NetworkGridContentView):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WI.TimelineRecordingContentView):
        Many users found the new Clear icon confusing. Revert to the Trash icon.

2017-10-11  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Make 3D objects selectable in Layers visualization
        https://bugs.webkit.org/show_bug.cgi?id=178136

        Reviewed by Devin Rousso.

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.initialLayout):
        (WI.Layers3DContentView.prototype._canvasMouseDown):
        (WI.Layers3DContentView.prototype._updateLayerGroupSelection):
        Implement selection of 3D layer objects.
        
        (WI.Layers3DContentView.prototype._addLayerGroup): Renamed from _addLayer.
        (WI.Layers3DContentView.prototype._updateLayerGroupPosition):
        (WI.Layers3DContentView.prototype._createLayerMesh):
        Refactor -- one group per layer (visible plane and composited outline), not groups by shape.

        (WI.Layers3DContentView.prototype.layout):
        (WI.Layers3DContentView.prototype._updateLayers):
        (WI.Layers3DContentView.prototype._clearLayers): Deleted.
        Don't destroy all 3D objects on every LayerTreeDidChange; make use of layerTreeMutations.
        (Not only a performance improvement, but also necessary to properly preserve highlighting.) 
        
        (WI.Layers3DContentView.prototype.selectLayerById):
        Allow selection to be updated from the outside.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
        (WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
        Allow selection to be updated from the outside.

        (WI.LayerDetailsSidebarPanel.prototype.inspect):
        (WI.LayerDetailsSidebarPanel.prototype._updateLayers): Renamed from _updateDisplayWithLayers.
        (WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):
        (WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
        (WI.LayerDetailsSidebarPanel.prototype._contentForPopover):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridNodeForLayer): Deleted.
        Cleanup.
        
        * UserInterface/Views/LayersTabContentView.js:
        (WI.LayersTabContentView):
        (WI.LayersTabContentView.prototype._detailsSidebarSelectedLayerChanged):
        (WI.LayersTabContentView.prototype._contentViewSelectedLayerChanged):
        Orchestrate communication of selection state between visualization and sidebar.

2017-10-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Avoid "100.00ms" vs "100.0ms" jitter in TimelineRuler labels
        https://bugs.webkit.org/show_bug.cgi?id=178143

        Reviewed by Brian Burg.

        * UserInterface/Base/Utilities.js:
        Allow a small slop factor that wouldn't have changed the display value's
        significant figures anyways. This addresses cases where 100.0000000000001
        were being treated slightly differently from 100.0.

2017-10-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Show initially loaded resources even if network info not logged
        https://bugs.webkit.org/show_bug.cgi?id=178098
        <rdar://problem/34073529>

        Reviewed by Devin Rousso.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.hasResponse):
        Resources loaded by Page.getFrameTree have a response but no status code data.
        So include finished resources as having a resource.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.closed):
        (WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
        (WI.NetworkTableContentView.prototype._mainFrameDidChange):
        Listen for the first main frame change to perform an initial population.

        (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
        This path is not currently taken when table is null, but change the code so
        that if it is reached without the table it would behave gracefully.

        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
        On first open none of the resources have a statusCode. Show an emDash.

2017-10-10  Brian Burg  <bburg@apple.com>

        Web Inspector: Quick Open: source mapped files are not shown as search results
        https://bugs.webkit.org/show_bug.cgi?id=178151
        <rdar://problem/31561718>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/OpenResourceDialog.js:
        (WI.OpenResourceDialog.prototype._addResource):
        Also consider matching the query string against SourceMapResources
        attached to a resource's source maps.

2017-10-10  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Set column initial widths to try allow waterfall column to expand more by default
        https://bugs.webkit.org/show_bug.cgi?id=178142
        <rdar://problem/34918233>

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.initialLayout):
        Provide initial widths for many columns where the max could fit
        but we'd prefer a smaller than max initial width in wide cases.

        * UserInterface/Views/Table.js:
        (WI.Table.prototype._resizeColumnsAndFiller):
        When auto sizing all columns use the preferred initial widths.

        * UserInterface/Views/TableColumn.js:
        (WI.TableColumn.prototype.get preferredInitialWidth):
        Save the initial width.

2017-10-10  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Views should explicitly remove event listeners from managers/Frame
        https://bugs.webkit.org/show_bug.cgi?id=175951

        Reviewed by Brian Burg.

        * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
        (WI.ApplicationCacheDetailsSidebarPanel.prototype.closed):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WI.DOMNodeDetailsSidebarPanel.prototype.closed):
        * UserInterface/Views/DebuggerDashboardView.js:
        (WI.DebuggerDashboardView.prototype.closed):
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype.closed):
        * UserInterface/Views/NetworkGridContentView.js:
        (WI.NetworkGridContentView.prototype.closed):
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        (WI.ProbeDetailsSidebarPanel.prototype.closed):
        * UserInterface/Views/QuickConsole.js:
        (WI.QuickConsole.prototype.closed):
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WI.ScopeChainDetailsSidebarPanel.prototype.closed):
        * UserInterface/Views/TimelineOverview.js:
        (WI.TimelineOverview.prototype.closed):

2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Include remote address in the Headers view
        https://bugs.webkit.org/show_bug.cgi?id=178094
        <rdar://problem/34895221>

        Reviewed by Devin Rousso.

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

2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed, minified WebInspector opens blank.
        <rdar://problem/34892307>

        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
        Regression introduced in r223006. The minified build has a SyntaxError
        causing WebInspector top open blank. Add the missing semicolon.

2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Filter resources based on URL / Text Content
        https://bugs.webkit.org/show_bug.cgi?id=178071
        <rdar://problem/34071562>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        New strings.

        * UserInterface/Views/FilterBar.css:
        (.filter-bar.active > input[type="search"]::-webkit-search-decoration):
        (.filter-bar.indicating-progress > input[type="search"]::-webkit-search-decoration):
        New icon for progress / active states.

        * UserInterface/Views/FilterBar.js:
        (WI.FilterBar.prototype.get inputField):
        (WI.FilterBar.prototype.get placeholder):
        (WI.FilterBar.prototype.set placeholder):
        (WI.FilterBar.prototype.get incremental):
        (WI.FilterBar.prototype.set incremental):
        (WI.FilterBar.prototype.get indicatingProgress):
        (WI.FilterBar.prototype.set indicatingProgress):
        (WI.FilterBar.prototype.get indicatingActive):
        (WI.FilterBar.prototype.set indicatingActive):
        (WI.FilterBar.prototype._handleFilterInputEvent):
        When incremental is set to false on the FilterBar still dispatch an
        event when the textfield clears.

        * UserInterface/Images/FilterFieldActiveGlyph.svg: Added.
        * UserInterface/Images/gtk/FilterFieldActiveGlyph.svg: Added.
        New blue icon for active state.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WI.FrameResourceManager.prototype.resourceForIdentifier):
        Accessor for arbitrary resource.

        * UserInterface/Views/NetworkTableContentView.css:
        (.content-view.network .navigation-bar .filter-bar):
        (.content-view.network .warning-banner):
        (body[dir=ltr] .content-view.network .warning-banner):
        (body[dir=rtl] .content-view.network .warning-banner):
        (.content-view.network .warning-banner > a):
        Warning banner when the filter produces no results. This matches the
        warning in the Debugger tab when breakpoints are disabled.

        * UserInterface/Views/ScopeBar.js:
        (WI.ScopeBar.prototype.resetToDefault):
        Provide a way to easily reset a scope bar to the default item.

        * UserInterface/Views/RadioButtonNavigationItem.css:
        (.navigation-bar .item.radio.button.text-only:active):
        * UserInterface/Views/ScopeBar.css:
        (.scope-bar > li:active):
        Cleanup some styles that should be using a variable.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.get filterNavigationItems):
        (WI.NetworkTableContentView.prototype.layout):
        (WI.NetworkTableContentView.prototype._processPendingEntries):
        (WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource):
        (WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource):
        (WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator):
        (WI.NetworkTableContentView.prototype._updateEmptyFilterResultsWarning):
        (WI.NetworkTableContentView.prototype._showEmptyFilterResultsWarning):
        (WI.NetworkTableContentView.prototype._hideEmptyFilterResultsWarning):
        (WI.NetworkTableContentView.prototype._positionEmptyFilterMessage):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
        (WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
        (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
        (WI.NetworkTableContentView.prototype._hasTypeFilter):
        (WI.NetworkTableContentView.prototype._hasTextFilter):
        (WI.NetworkTableContentView.prototype._hasActiveFilter):
        (WI.NetworkTableContentView.prototype._passTypeFilter):
        (WI.NetworkTableContentView.prototype._passTextFilter):
        (WI.NetworkTableContentView.prototype._passFilter):
        (WI.NetworkTableContentView.prototype._updateFilteredEntries):
        (WI.NetworkTableContentView.prototype._resetFilters):
        (WI.NetworkTableContentView.prototype._textFilterDidChange):
        (WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
        There are now two filters.

          - FilterBar - Filters URL and Full Text Content
          - ScopeBar  - Filters Resource Type

        The text content filter is asynchronous. We reuse the existing Search
        functionality when filtering on text. We need to defer text content
        filtering until the resource finishes loading.

2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab: Row wrapping (waterfall displaying behind next row's name)
        https://bugs.webkit.org/show_bug.cgi?id=178015
        <rdar://problem/34858720>

        Reviewed by Brian Burg.

        * UserInterface/Views/Table.css:
        (.table > .header):
        (.table > .data-container > .data-list > li):
        Disallow wrapping.

2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Cookies Detail View
        https://bugs.webkit.org/show_bug.cgi?id=177988
        <rdar://problem/34071927>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Test.html:
        New strings and resources.

        * UserInterface/Models/Cookie.js: Added.
        (WI.Cookie):
        (WI.Cookie.parseCookieRequestHeader):
        (WI.Cookie.parseSetCookieResponseHeader):
        Encapsulation for Cookie attributes.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.get requestCookies):
        (WI.Resource.prototype.get responseCookies):
        (WI.Resource.prototype.updateForRedirectResponse):
        (WI.Resource.prototype.updateForResponse):
        (WI.Resource.prototype.updateWithMetrics):
        New computed accessors for requestCookies and responseCookies.

        * UserInterface/Views/NetworkResourceDetailView.js:
        (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
        Show the new Cookie View.

        * UserInterface/Views/NetworkTableContentView.css:
        (.content-view.network .network-table .icon):
        (.network-table li:not(.filler) .cell.name):
        (.network-table .cache-type):
        (.network-table .error):
        (body[dir=ltr] .network-table .cell.name > .status):
        (body[dir=rtl] .network-table .cell.name > .status):
        (.network-table .cell.name > .status .indeterminate-progress-spinner):
        (.showing-detail .network-table .cell:not(.name)):
        (.showing-detail .network-table .resizer:not(:first-of-type)):
        (.network-table :not(.header) .cell:first-of-type):
        Rework these styles to be specific to the .network-table.

        * UserInterface/Views/Table.css:
        (.table :not(.header) .cell:first-of-type): Deleted.
        Move this to the network table styles, it shouldn't apply to all tables. 

        * UserInterface/Views/ResourceCookiesContentView.css:
        (.resource-cookies > section > .details.has-table):
        (.resource-cookies .table):
        (.resource-cookies .table > .header):
        Styles for Cookies view and table.

        * UserInterface/Views/ResourceCookiesContentView.js: Added.
        (WI.ResourceCookiesContentView):
        (WI.ResourceCookiesContentView.prototype.tableNumberOfRows):
        (WI.ResourceCookiesContentView.prototype.tableSortChanged):
        (WI.ResourceCookiesContentView.prototype.tablePopulateCell):
        (WI.ResourceCookiesContentView.prototype.initialLayout):
        (WI.ResourceCookiesContentView.prototype._incompleteSectionWithMessage):
        (WI.ResourceCookiesContentView.prototype._incompleteSectionWithLoadingIndicator):
        (WI.ResourceCookiesContentView.prototype._dataSourceForTable):
        (WI.ResourceCookiesContentView.prototype._generateSortComparator):
        (WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
        (WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
        (WI.ResourceCookiesContentView.prototype._sizeForTable):
        (WI.ResourceCookiesContentView.prototype._resourceRequestHeadersDidChange):
        (WI.ResourceCookiesContentView.prototype._resourceResponseReceived):
        Tables for Request and Response cookies. They are simliar with slightly different columns.
        Handle simple display and sorting for the tables.

        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
        Break out Set-Cookie headers as multiple headers. THey should never be combined.

        * UserInterface/Views/Table.js:
        (WI.Table.prototype.showColumn):
        (WI.Table.prototype.hideColumn):
        (WI.Table.prototype._handleHeaderContextMenu):
        * UserInterface/Views/TableColumn.js:
        (WI.TableColumn.prototype.get hideable):
        (WI.TableColumn.prototype.set hidden):
        (WI.TableColumn):
        (WI.TableColumn.prototype.setHidden): Deleted.
        Make it so some columns can not be hidden. For example the "value" column
        in the Cookie tables.

2017-10-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Search Headers Detail View
        https://bugs.webkit.org/show_bug.cgi?id=177981

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype.performSearch):
        Rename "Dom" to "DOM" in utility function.

        * UserInterface/Views/ResourceHeadersContentView.css:
        (.resource-headers.showing-find-banner .search-highlight):
        Search highlight styles.

        * UserInterface/Views/ResourceHeadersContentView.js:
        (WI.ResourceHeadersContentView.prototype.get supportsSearch):
        (WI.ResourceHeadersContentView.prototype.get numberOfSearchResults):
        (WI.ResourceHeadersContentView.prototype.get hasPerformedSearch):
        (WI.ResourceHeadersContentView.prototype.set automaticallyRevealFirstSearchResult):
        (WI.ResourceHeadersContentView.prototype.performSearch):
        (WI.ResourceHeadersContentView.prototype.searchCleared):
        (WI.ResourceHeadersContentView.prototype.revealPreviousSearchResult):
        (WI.ResourceHeadersContentView.prototype.revealNextSearchResult):
        (WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
        (WI.ResourceHeadersContentView.prototype._revealSearchResult):
        Implement ContentView search behavior.

2017-10-08  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add autocompletion for min/max within a CSS calc
        https://bugs.webkit.org/show_bug.cgi?id=178068

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/CSSKeywordCompletions.js:
        (WI.CSSKeywordCompletions.forFunction):

2017-10-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add Canvas tab and CanvasOverviewContentView
        https://bugs.webkit.org/show_bug.cgi?id=177604
        <rdar://problem/34714650>

        Reviewed by Devin Rousso.

        This patch adds experimental feature support for the Canvas tab. Initially
        the tab provides only an overview of the canvases in the page, and will
        exist side-by-side with the existing experimental Canvas UI.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        * UserInterface/Base/Setting.js:

        * UserInterface/Images/Canvas.svg: Added.
        * UserInterface/Images/CanvasOverview.svg: Added.
        * UserInterface/Main.html:
        Add new art and canvas UI classes.

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.requestNode):
        (WI.Canvas.prototype.requestContent):
        (WI.Canvas.prototype.requestCSSCanvasClientNodes):
        (WI.Canvas.prototype.requestSize.calculateSize.getAttributeValue):
        (WI.Canvas.prototype.requestSize.calculateSize):
        (WI.Canvas.prototype.requestSize.getPropertyValue):
        (WI.Canvas.prototype.requestSize):
        Use promises to retrieve canvas data asynchronously.

        * UserInterface/Models/CollectionTypes.js: Added.
        (WI.CanvasCollection):
        New location for concrete collection types. Having a class to type check
        makes using a collection as a represented object a bit simpler.

        * UserInterface/Views/CanvasContentView.css:
        (.content-view.canvas:not(.tab)):
        (.content-view.canvas:not(.tab) > .preview):
        (.content-view.canvas:not(.tab) > .preview > img):
        (.content-view.canvas:not(.tab) > :matches(header, footer)):
        (.content-view.canvas): Deleted.
        (.content-view.canvas > .preview): Deleted.
        (.content-view.canvas > .preview > img): Deleted.
        During the transition to the new Canvas tab, CanvasContentView needs to
        support being shown as a full-size content view, and as an item in a
        CollectionContentView. Hide header and footer elements by default.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView):
        (WI.CanvasContentView.prototype.refresh):
        (WI.CanvasContentView.prototype.initialLayout):
        (WI.CanvasContentView.prototype.layout):
        (WI.CanvasContentView.prototype.shown):
        (WI.CanvasContentView.prototype.attached):
        (WI.CanvasContentView.prototype.detached):
        (WI.CanvasContentView.prototype._showError):
        (WI.CanvasContentView.prototype._refreshPixelSize):
        (WI.CanvasContentView.prototype._showGridButtonClicked):
        (WI.CanvasContentView.prototype._updateImageGrid):
        (WI.CanvasContentView.prototype._updateMemoryCost):
        (WI.CanvasContentView.prototype._updatePixelSize):
        (WI.CanvasContentView.prototype._updateRecordNavigationItem):
        (WI.CanvasContentView.prototype.hidden): Deleted.
        (WI.CanvasContentView.prototype.closed): Deleted.
        (WI.CanvasContentView.prototype._showPreview): Deleted.
        Added new UI for display in the Canvas overview. These elements are always
        created, but only appear when the canvas is viewed as a "card".

        Canvas previews are no longer shown as soon as they are available from
        the backend. Instead, once the canvas content is ready a layout is scheduled.
        This guarantees that refreshing all canvases at once causes no flicker,
        and introduces no perceptible delay.

        Finally, the "Cancel recording" tooltip has been renamed "Stop recording",
        to match the behavior of the command.

        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.): Deleted.
        Canvas.prototype.requestNode now returns a promise.

        * UserInterface/Views/CanvasOverviewContentView.css: Added.
        (.content-view.canvas-overview):
        (.content-view.canvas-overview .content-view.canvas):
        (.content-view.canvas-overview .content-view.canvas.selected:not(.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 > .titles,):
        (.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
        (.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
        (.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
        (.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title):
        (.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
        (.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item):
        (.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
        (.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar):
        (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled):
        (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop):
        (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover):
        (.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active):
        (.content-view.canvas-overview .content-view.canvas > .preview):
        (.content-view.canvas-overview .content-view.canvas > .preview > img):
        (.content-view.canvas-overview .content-view.canvas > .preview > .message-text-view):
        (.content-view.canvas-overview .content-view.canvas > footer):
        (.content-view.canvas-overview .content-view.canvas > footer .memory-cost):
        Add header, navigation bar, and footer styles to CanvasContentView when
        it is being shown as an item in a CollectionContentView.

        * UserInterface/Views/CanvasOverviewContentView.js: Added.
        (WI.CanvasOverviewContentView):
        (WI.CanvasOverviewContentView.prototype.get navigationItems):
        (WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
        (WI.CanvasOverviewContentView.prototype.hidden):
        (WI.CanvasOverviewContentView.prototype.contentViewAdded):
        (WI.CanvasOverviewContentView.prototype.contentViewRemoved):
        (WI.CanvasOverviewContentView.prototype.attached):
        (WI.CanvasOverviewContentView.prototype.detached):
        (WI.CanvasOverviewContentView.prototype._refreshPreviews):
        (WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged):
        (WI.CanvasOverviewContentView.prototype._showGridButtonClicked):
        (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent):
        (WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
        (WI.CanvasOverviewContentView.prototype._updateNavigationItems):
        (WI.CanvasOverviewContentView.prototype._updateShowImageGrid):
        (WI.CanvasOverviewContentView.prototype._contentViewMouseEnter):
        (WI.CanvasOverviewContentView.prototype._contentViewMouseLeave):
        The overview extends CollectionContentView, adding buttons for global canvas actions
        (refresh all and show/hide grid for all), and maintains a non-visible
        outline of CanvasTreeElements to facilitate display of the hierarchical
        path in the navigation bar.

        * UserInterface/Views/CanvasTabContentView.css: Added.
        (.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon):
        (.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon):
        (.content-view.tab.canvas .navigation-bar > .item .canvas .icon):

        * UserInterface/Views/CanvasTabContentView.js: Added.
        (WI.CanvasTabContentView):
        (WI.CanvasTabContentView.tabInfo):
        (WI.CanvasTabContentView.isTabAllowed):
        (WI.CanvasTabContentView.prototype.get type):
        (WI.CanvasTabContentView.prototype.get supportsSplitContentBrowser):
        (WI.CanvasTabContentView.prototype.canShowRepresentedObject):
        (WI.CanvasTabContentView.prototype.shown):
        (WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
        (WI.CanvasTabContentView.prototype.restoreFromCookie):
        (WI.CanvasTabContentView.prototype.saveStateToCookie):
        (WI.CanvasTabContentView.prototype.attached):
        (WI.CanvasTabContentView.prototype.detached):
        (WI.CanvasTabContentView.prototype._canvasAdded):
        (WI.CanvasTabContentView.prototype._canvasRemoved):
        (WI.CanvasTabContentView.prototype._overviewPathComponentClicked):
        (WI.CanvasTabContentView.prototype._mainResourceDidChange):

        * UserInterface/Views/CollectionContentView.js:
        (WI.CollectionContentView):
        (WI.CollectionContentView.prototype.setSelectedItem):
        (WI.CollectionContentView.prototype.addContentViewForItem):
        (WI.CollectionContentView.prototype.removeContentViewForItem):
        (WI.CollectionContentView.prototype.initialLayout):
        (WI.CollectionContentView.prototype._showContentPlaceholder):
        (WI.CollectionContentView.prototype._hideContentPlaceholder):
        Placeholder content should be created lazily, and shown after a slight delay
        to give represented objects a chance to load. Make sure to call the
        shown or hidden method after adding or removing a content view.

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

        * UserInterface/Views/Variables.css:
        (:root):
        (body.window-inactive *):

        * UserInterface/Views/View.js:
        (WI.View.fromElement):

2017-10-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Headers Detail View
        https://bugs.webkit.org/show_bug.cgi?id=177896
        <rdar://problem/34071924>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New resources and strings.

        * UserInterface/Base/URLUtilities.js:
        (parseURL):
        (WI.h2Authority):
        (WI.h2Path):
        Utility methods to get the :authority and :path pseudo-headers from a URL.
        This required adding user info (user:pass@) support to URL parsing.

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.get navigationItems):
        (WI.NetworkTableContentView.prototype.get filterNavigationItems):
        Move the NetworkTab's filter controls to the left. Since these are not
        dynamic just vend them from the TableContentView and place them in the
        navigation bar.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.updateWithMetrics):
        New event whenever metrics change. This is the first event that will allow
        a client to react to a resource.protocol change.

        * UserInterface/Views/NetworkResourceDetailView.css:
        (.content-view.resource-details):
        Base styles for the sub detail views.

        * UserInterface/Views/NetworkResourceDetailView.js:
        (WI.NetworkResourceDetailView):
        (WI.NetworkResourceDetailView.prototype.headersContentViewGoToRequestData):
        (WI.NetworkResourceDetailView.prototype.initialLayout):
        (WI.NetworkResourceDetailView.prototype._showPreferredContentView):
        (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
        Create a Header view and provide a way to switch to a particular view. This wil
        be useful to jump from the Header's Request Data directly to the Preview's
        Request ContentView.

        * UserInterface/Views/ResourceDetailsSection.css:
        (.resource-details > section):
        (.resource-details > section > .title):
        (.resource-details > section > .details):
        (.resource-details > section > .details > p):
        (.resource-details > section.incomplete > .details):
        * UserInterface/Views/ResourceDetailsSection.js:
        (WI.ResourceDetailsSection):
        (WI.ResourceDetailsSection.prototype.get element):
        (WI.ResourceDetailsSection.prototype.get titleElement):
        (WI.ResourceDetailsSection.prototype.get detailsElement):
        (WI.ResourceDetailsSection.prototype.toggleIncomplete):
        (WI.ResourceDetailsSection.prototype.toggleError):
        Simple sections with a title and details div with a border.
        It may be common to have an incomplete load / error so this
        provides some APIs and styles for sections marked incomplete
        or with errors.

        * UserInterface/Views/ResourceHeadersContentView.css:
        (.resource-headers > section > .details):
        (.resource-headers > section.headers > .details):
        (.resource-headers > section.error > .details):
        (.resource-headers > section.error .key):
        Style the left border different colors for different sections or cases.

        (.resource-headers .details):
        (.resource-headers .details .pair):
        (.resource-headers .details .key):
        (.resource-headers .value):
        (.resource-headers .header > .key):
        (.resource-headers .h1-status > .key):
        (.resource-headers .h2-pseudo-header > .key):
        Wrapped text for key/value pairs and different colors for different
        sections or cases.

        (.resource-headers .go-to-arrow):
        Go-to arrow styles for a request data section.

        * UserInterface/Views/ResourceHeadersContentView.js: Added.
        (WI.ResourceHeadersContentView):
        (WI.ResourceHeadersContentView.prototype.initialLayout):
        (WI.ResourceHeadersContentView.prototype.layout):
        (WI.ResourceHeadersContentView.prototype._incompleteSectionWithMessage):
        (WI.ResourceHeadersContentView.prototype._incompleteSectionWithLoadingIndicator):
        (WI.ResourceHeadersContentView.prototype._appendKeyValuePair):
        (WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
        (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
        (WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
        (WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
        (WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
        (WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
        (WI.ResourceHeadersContentView.prototype._resourceMetricsDidChange):
        (WI.ResourceHeadersContentView.prototype._resourceRequestHeadersDidChange):
        (WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
        (WI.ResourceHeadersContentView.prototype._goToRequestDataClicked):
        Summary, Request, Response, Query String, and Request Data sections.
        The sections refresh as data becomes available.

        * UserInterface/Views/Table.css:
        (.table):
        These variables are already defined globally.

        * UserInterface/Views/Variables.css:
        (:root):
        New variables for the colors we use. They closely match, and are
        sometimes identical to ones used in Timelines / Memory views.

2017-10-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Make selection in the table more reliable (mousedown instead of click)
        https://bugs.webkit.org/show_bug.cgi?id=177990

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.tableCellClicked): Deleted.
        * UserInterface/Views/Table.js:
        (WI.Table.prototype._handleMouseDown):
        (WI.Table.prototype._handleClick): Deleted.
        Switch to mousedown.

2017-10-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve setting the default / initial sort of a Table
        https://bugs.webkit.org/show_bug.cgi?id=177989

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype.initialLayout):
        Set the default / initial sort.

        * UserInterface/Views/Table.js:
        (WI.Table):
        (WI.Table.prototype.set sortOrder):
        (WI.Table.prototype.set sortColumnIdentifier):
        During setup we should always update header views.

2017-10-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Add support for keyboard navigation (Tab, Shift-Tab, Enter, Esc)
        https://bugs.webkit.org/show_bug.cgi?id=177711

        Reviewed by Joseph Pecoraro.

        Enter, Tab, Shift-Tab should commit changes.
        Escape should discard changes.

        Tab and Enter should navigate forward (focus on the next field).
        Shift-Tab should navigate backward (focus on the previous field).
        Esc should not change the focus.

        When navigating forward from:

        - Selector: Focus on the first property name. If it doesn’t exist, create a blank property.

        - Property name:
          - If property name is blank, discard the property and focus on the next editable field (property name or selector of the next rule).
          - If property is not blank, focus on the value.

        - Property value:
          - If the last value in the rule, create a blank property and focus on its name.
          - If not the last value in the rule, focus on the next editable field (property name or selector of the next rule).

        When navigating backward from:

        - Selector: create a blank property on the previous editable rule and focus on its name.

        - Property name:
          - Focus on the rule's selector.

        - Property value:
          - Focus on the property name.

        * UserInterface/Base/Utilities.js:
        (Event.prototype.stop):
        * UserInterface/Main.html:
        Add new files. Keep one class per file.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.remove):
        (WI.CSSProperty.prototype.set name):
        (WI.CSSProperty.prototype.set rawValue):
        (WI.CSSProperty.prototype.get editable):
        (WI.CSSProperty.prototype._updateStyleText):
        (WI.CSSProperty.prototype._updateOwnerStyleText):
        Update indices and ranges of properties following the edited one to prevent data corruption.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration.prototype.get selectorEditable):
        (WI.CSSStyleDeclaration.prototype.set text):
        (WI.CSSStyleDeclaration.prototype.newBlankProperty):
        (WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):
        (WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
        Implement adding new blank properties.

        * UserInterface/Models/TextRange.js:
        (WI.TextRange.prototype.cloneAndModify):
        Add an assert to catch negative number errors.

        (WI.TextRange.prototype.collapseToEnd):
        Add a utility function akin Selection.prototype.collapseToEnd.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey):
        (WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey):
        (WI.CSSStyleDeclarationTextEditor.prototype._formattedContent):
        Move PrefixWhitespace from a view to a model (WI.CSSStyleDeclaration.PrefixWhitespace),
        since it's already used in the model.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        Give SpreadsheetCSSStyleDeclarationEditor a delegate so that it can move focus to a CSS selector, or previous and next CSS rules.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get propertiesEditor):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get editable):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorStartEditingRuleSelector):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule):
        Give SpreadsheetCSSStyleDeclarationSection a delegate so that it can move focus to previous and next CSS rules.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule):
        (WI.SpreadsheetRulesStyleDetailsPanel):
        Implement focusing on the next and previous CSS rules.

        * UserInterface/Views/SpreadsheetSelectorField.js: Added.
        (WI.SpreadsheetSelectorField):
        (WI.SpreadsheetSelectorField.prototype.get editing):
        (WI.SpreadsheetSelectorField.prototype.startEditing):
        (WI.SpreadsheetSelectorField.prototype.stopEditing):
        (WI.SpreadsheetSelectorField.prototype._selectText):
        (WI.SpreadsheetSelectorField.prototype._handleClick):
        (WI.SpreadsheetSelectorField.prototype._handleFocus):
        (WI.SpreadsheetSelectorField.prototype._handleBlur):
        (WI.SpreadsheetSelectorField.prototype._handleKeyDown):
        Move SpreadsheetSelectorField into its own file.

        * UserInterface/Views/SpreadsheetStyleProperty.js: Added.
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.get element):
        (WI.SpreadsheetStyleProperty.prototype.get nameTextField):
        (WI.SpreadsheetStyleProperty.prototype.get valueTextField):
        (WI.SpreadsheetStyleProperty.prototype._remove):
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
        (WI.SpreadsheetStyleProperty.prototype._handleNameChange):
        (WI.SpreadsheetStyleProperty.prototype._handleValueChange):
        Move SpreadsheetStyleProperty into its own file.

        * UserInterface/Views/SpreadsheetTextField.js: Added.
        (WI.SpreadsheetTextField):
        (WI.SpreadsheetTextField.prototype.get element):
        (WI.SpreadsheetTextField.prototype.get editing):
        (WI.SpreadsheetTextField.prototype.get value):
        (WI.SpreadsheetTextField.prototype.set value):
        (WI.SpreadsheetTextField.prototype.startEditing):
        (WI.SpreadsheetTextField.prototype.stopEditing):
        (WI.SpreadsheetTextField.prototype._selectText):
        (WI.SpreadsheetTextField.prototype._discardChange):
        (WI.SpreadsheetTextField.prototype._handleFocus):
        (WI.SpreadsheetTextField.prototype._handleBlur):
        (WI.SpreadsheetTextField.prototype._handleKeyDown):
        (WI.SpreadsheetTextField.prototype._handleInput):
        Introduce SpreadsheetTextField that is used for editing CSS property names and values.

2017-10-05  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r222868): Web Inspector: Timeline ScopeBar Navigation Bar items too large
        https://bugs.webkit.org/show_bug.cgi?id=177979

        Reviewed by Matt Baker.

        * UserInterface/Views/ButtonNavigationItem.css:
        (.navigation-bar .item.button.text-only):
        Make the height of text-only items the size of the text, not 100%.

2017-10-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: When scrolled Network Table reduces the number of rows it may appear as blank
        https://bugs.webkit.org/show_bug.cgi?id=177914
        <rdar://problem/34827613>

        Reviewed by Matt Baker.

        * UserInterface/Views/Table.js:
        (WI.Table.prototype._updateVisibleRows):
        (WI.Table.prototype._updateFillerRowWithNewHeight):
        Reduce the scrollTop when the table was scrolled and was then reloaded with a
        smaller number of rows. This can happen in two ways. Either the number of rows
        was reduced so much that we enter non-scrollable mode with a non-zero filler
        row. This can always reset the scrollTop to 0. Or when a large number of rows
        is reduced to a smaller number than our current scrollTop but still more than
        fit on one screen. In that case we can reduce the scrollTop to whatever would
        scroll the table to its max position.

2017-10-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Improve CanvasManager recording events
        https://bugs.webkit.org/show_bug.cgi?id=177762

        Reviewed by Devin Rousso.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.startRecording):
        (WI.CanvasManager.prototype.stopRecording):
        (WI.CanvasManager.prototype.recordingFinished):
        Replace the RecordingFinished event with a pair of events. RecordingStarted
        is sent when CanvasAgent.startRecording succeeds. RecordingStopped is
        sent when a recordingFinished event is received from the backend, or
        when a call to CanvasAgent.stopRecording fails.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView.prototype.initialLayout):
        (WI.CanvasContentView.prototype._toggleRecording):
        (WI.CanvasContentView.prototype._recordingStarted):
        (WI.CanvasContentView.prototype._recordingFinished): Deleted.
        Update recording status when CanvasManager fires recording events,
        instead of immediately after clicking the record button.

2017-10-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Detail Views for resources in Network Tab
        https://bugs.webkit.org/show_bug.cgi?id=177553

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New strings and resources.

        * UserInterface/Base/Main.js:
        (WI._focusedContentBrowser):
        Detect nested content browsers instead of only top level tab content browsers.

        * UserInterface/Base/Setting.js:
        Add a new global setting for which Network Detail view is preferred.

        * UserInterface/Views/ContentBrowser.css:
        (.content-browser > .navigation-bar .item):
        (.content-browser > .navigation-bar > .item): Deleted.
        Generalize a navigation item style so it works on items nested inside a group.

        * UserInterface/Views/ContentBrowser.js:
        (WI.ContentBrowser.prototype._updateContentViewSelectionPathNavigationItem):
        (WI.ContentBrowser.prototype._updateContentViewNavigationItems):
        (WI.ContentBrowser.prototype._removeAllNavigationItems):
        Give ContentBrowser a way to group all ContentView specific navigation items
        inside a GroupNavigationItem. This lets the client decide what to do with
        those navigation items, instead of default behavior in the navigation bar.

        * UserInterface/Views/ContentViewContainer.js:
        (WI.ContentViewContainer.prototype.showContentView):
        Avoid a flash when showContentView is called with the current content view.

        * UserInterface/Views/FlexibleSpaceNavigationItem.css:
        (:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item):
        (:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item):
        When containing a navigation item decide where you want the items to align to.

        * UserInterface/Views/FlexibleSpaceNavigationItem.js:
        (WI.FlexibleSpaceNavigationItem):
        (WI.FlexibleSpaceNavigationItem.prototype.updateLayout):
        Provide an option to embed a NavigationItem within a FlexibleSpace. Its behavior right
        now is rather simple. If the embedded Item fits in the current available space it is
        shown. If it doesn't fit, it is hidden and we have just a flexible space. This is used
        in the network detail view's navigation bar to keep the main navigation items centered
        while allowing for buttons to show up on the side without affecting the centering.

        * UserInterface/Views/NavigationBar.js:
        (WI.NavigationBar):
        (WI.NavigationBar.prototype._mouseDown):
        (WI.NavigationBar.prototype._mouseUp):
        Simplify event registration. This would also help avoid cases where we
        might have registered multiple mousedown handlers.

        * UserInterface/Views/GroupNavigationItem.js:
        (WI.GroupNavigationItem):
        (WI.GroupNavigationItem.prototype.get navigationItems):
        (WI.GroupNavigationItem.prototype.set navigationItems):
        (WI.GroupNavigationItem.prototype.get width):
        (WI.GroupNavigationItem.prototype.get minimumWidth):
        (WI.GroupNavigationItem.prototype._updateItems):
        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WI.HierarchicalPathNavigationItem):
        (WI.HierarchicalPathNavigationItem.prototype.set components):
        (WI.HierarchicalPathNavigationItem.prototype.updateLayout):
        (WI.HierarchicalPathNavigationItem.prototype._updateComponentsIfNeeded):
        Defer DOM modifications until layout for NavigationItems container classes
        that change items/components dynamically. This reduces UI flashing in the
        bar when items/components change by coalescing all DOM updates at the same
        time; when the NavigationBar does its next layout.

        * UserInterface/Views/NetworkResourceDetailView.css:
        (.network-resource-detail):
        (.network-resource-detail .navigation-bar):
        (.network-resource-detail .item.close > .glyph):
        (.network-resource-detail .item.close > .glyph:hover):
        (.network-resource-detail .item.close > .glyph:active):
        (.network .network-resource-detail .navigation-bar .item.radio.button.text-only):
        (.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
        (.network-resource-detail > .content-browser):
        Styles for the detail view's navigation bar.

        * UserInterface/Views/NetworkResourceDetailView.js: Added.
        (WI.NetworkResourceDetailView):
        (WI.NetworkResourceDetailView.prototype.get resource):
        (WI.NetworkResourceDetailView.prototype.shown):
        (WI.NetworkResourceDetailView.prototype.hidden):
        (WI.NetworkResourceDetailView.prototype.dispose):
        (WI.NetworkResourceDetailView.prototype.initialLayout):
        (WI.NetworkResourceDetailView.prototype._showPreferredContentView):
        (WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
        (WI.NetworkResourceDetailView.prototype._navigationItemSelected):
        (WI.NetworkResourceDetailView.prototype._handleCloseButton):
        ContentBrowser with customized navigation bar. This container has a fixed
        list of ContentViews all relating to the Resource. The detail view has
        a single delegate method for its close button. Since it maintains a
        ContentBrowser it needs to expose shown/hidden/dispose logic to ensure
        proper ContentView lifecycle events.

        * UserInterface/Views/NetworkTableContentView.css:
        (.showing-detail .table .cell:not(.name)):
        (.showing-detail .table .resizer:not(:first-of-type)):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.shown):
        (WI.NetworkTableContentView.prototype.hidden):
        (WI.NetworkTableContentView.prototype.closed):
        (WI.NetworkTableContentView.prototype.reset):
        (WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
        (WI.NetworkTableContentView.prototype.tableSortChanged):
        (WI.NetworkTableContentView.prototype.tableCellClicked):
        (WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
        (WI.NetworkTableContentView.prototype.layout):
        (WI.NetworkTableContentView.prototype._hideResourceDetailView):
        (WI.NetworkTableContentView.prototype._showResourceDetailView):
        (WI.NetworkTableContentView.prototype._positionDetailView):
        (WI.NetworkTableContentView.prototype._updateFilteredEntries):
        (WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
        (WI.NetworkTableContentView.prototype._restoreSelectedRow):
        (WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
        Behavior for selecting a row and showing / hiding the detail view.
        The detail view is positioned beside the Network Table's "name" column
        and resizes when that column resizes.

        * UserInterface/Views/Resizer.css:
        (.resizer):
        * UserInterface/Views/Table.css:
        (.table > .resizers):
        * UserInterface/Views/Table.js:
        (WI.Table):
        (WI.Table.prototype.get scrollContainer):
        (WI.Table.prototype._positionResizerElements):
        To let clients customize the table a bit, put resizers into their own
        container and expose the scroll container.

        * UserInterface/Views/Variables.css:
        (:root):
        Add a new button hover color, slightly lighter than the existing button active color.

2017-10-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix Beacon and Ping folderization issues
        https://bugs.webkit.org/show_bug.cgi?id=177885

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.shortDisplayNameForResourceType):
        Use common capitalized UIString "Ping". It gets lowercased later.

        * UserInterface/Models/ResourceCollection.js:
        Add missing verifier.

2017-10-04  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove unused `representedObject` parameter from GeneralTreeElementPathComponent constructor
        https://bugs.webkit.org/show_bug.cgi?id=177561

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/GeneralTreeElementPathComponent.js:
        (WI.GeneralTreeElementPathComponent):
        (WI.GeneralTreeElementPathComponent.prototype.get generalTreeElement):
        (WI.GeneralTreeElementPathComponent.prototype.get previousSibling):
        (WI.GeneralTreeElementPathComponent.prototype.get nextSibling):

2017-10-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: After enabling the new Network Tab in experimental settings, the network tab disappears
        https://bugs.webkit.org/show_bug.cgi?id=177774
        <rdar://problem/34771647>

        Reviewed by Devin Rousso.

        * UserInterface/Views/SettingsTabContentView.js:
        When enabling the new network tab, ensure it gets added to the list of open tabs.
        Place it where the old network tab was so the UI is as consistent as possible.

2017-10-03  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Layers tab sidebar's DOM highlight should be by row hover, not row selection
        https://bugs.webkit.org/show_bug.cgi?id=177690

        Reviewed by Devin Rousso.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel):
        (WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridMouseMove):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridMouseLeave):
        (WI.LayerDetailsSidebarPanel.prototype._hideDOMNodeHighlight):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridFocused): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._dataGridBlurred): Deleted.
        (WI.LayerDetailsSidebarPanel.prototype._highlightSelectedNode): Deleted.

2017-10-03  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: support editing of rule selectors
        https://bugs.webkit.org/show_bug.cgi?id=177012

        Reviewed by Matt Baker.

        Clicking or focusing (by tabbing from another field) on a CSS selector should select the text and make the selector
        field editable.

        Keyboard behavior while editing:
        - Enter should commit changes.
        - Escape should discard changes.
        - Tab should commit changes and navigate to the first property name.
        - Shift-Tab should commit changes and navigate to the last rule's property value, if there's one.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetStyleProperty.prototype._update):
        Add tabIndex so the keyboard navigation (Tab & Shift-Tab) to and from selectors works as expected.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration .selector:focus,):
        (.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
        (.spreadsheet-css-declaration .selector.spreadsheet-selector-field.editing):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get selectorEditable):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
        Split layout into _renderOrigin and _renderSelector, so selector field can be updated separately
        from everything else.

        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidDiscard):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._discardSelectorChange):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderOrigin):

        (WI.SpreadsheetSelectorField):
        (WI.SpreadsheetSelectorField.prototype.get editing):
        (WI.SpreadsheetSelectorField.prototype.startEditing):
        (WI.SpreadsheetSelectorField.prototype.stopEditing):
        (WI.SpreadsheetSelectorField.prototype._handleClick):
        (WI.SpreadsheetSelectorField.prototype._handleFocus):
        (WI.SpreadsheetSelectorField.prototype._handleBlur):
        (WI.SpreadsheetSelectorField.prototype._handleKeyDown):

2017-10-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add View layout tests, make views more testable
        https://bugs.webkit.org/show_bug.cgi?id=161274
        <rdar://problem/28038615>

        Reviewed by Devin Rousso.

        This patch adds support for View testing. Since view layouts are scheduled
        using requestAnimationFrame, FrontendTestHarness now provides a timer-based
        polyfill, to allow nonintrusive testing of the frontend View hierarchy.

        * UserInterface/Test.html:
        Make WI.View available to tests.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.redirectRequestAnimationFrame):

        * UserInterface/Views/View.js:
        (WI.View.rootView):
        (WI.View.prototype.replaceSubview):
        (WI.View.prototype._didMoveToWindow):
        (WI.View._cancelScheduledLayoutForView):
        Fixed issues caught while writing tests for the expected View behavior.

2017-10-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Escape more characters in posix string conversion
        https://bugs.webkit.org/show_bug.cgi?id=177761
        <rdar://problem/34506832>

        Reviewed by Brian Burg.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.generateCURLCommand.escapeStringPosix):
        Escape '!' to '\041' in posix strings ($'...') since '!' may have special behavior at times.

2017-10-02  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Selecting child layers with keyboard causes Compositing Reason popover to become misaligned
        https://bugs.webkit.org/show_bug.cgi?id=150551

        Reviewed by Matt Baker.

        `content` setter should only be used when NOT repositioning the popover.
        `presentNewContentWithFrame` exists to update content and position at once.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode):
        (WI.LayerDetailsSidebarPanel.prototype._presentPopover):
        Fix new sidebar.

        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WI.LayerTreeDetailsSidebarPanel.prototype._updatePopoverForSelectedNode):
        Fix legacy sidebar.

2017-10-02  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Ensure popovers are not malformed on window resize.
        https://bugs.webkit.org/show_bug.cgi?id=177771

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/Popover.js:
        Ensure stale `arrow-*` CSS classes are removed on update, even if our content didn't change.

2017-10-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include Beacon and Ping requests in Network tab
        https://bugs.webkit.org/show_bug.cgi?id=177641
        <rdar://problem/33086839>

        Reviewed by Chris Dumez.

        * Localizations/en.lproj/localizedStrings.js:
        New strings for Beacon/Ping.

        * UserInterface/Images/Beacon.svg: Added.
        * UserInterface/Views/ResourceIcons.css:
        (.resource-icon.resource-type-ping .icon,):
        (body:not(.mac-platform, .windows-platform) .resource-icon.resource-type-ping .icon,):
        (body:not(.mac-platform, .windows-platform) .large .resource-icon.resource-type-ping .icon,):
        New icon for Beacon/Ping. They share an icon since they are similiar in concept:
        a request that is sent and the page doesn't expect a response.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
        When a sub-resource and a main-resource have the same URL we were not
        distinguishing them. Use the resource type to distinguish them better.

        * UserInterface/Models/SourceCode.js:
        (WI.SourceCode.prototype._processContent):
        Safer handling if the body was base64 encoded but an empty string.

        * UserInterface/Models/Resource.js:
        (WI.Resource.displayNameForType):
        * UserInterface/Models/ResourceCollection.js:
        (WI.ResourceCollection.verifierForType):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.shortDisplayNameForResourceType):
        * UserInterface/Views/ResourceClusterContentView.js:
        (WI.ResourceClusterContentView.prototype.get responseContentView):
        New resource types.

        * UserInterface/Views/ResourceContentView.js:
        (WI.ResourceContentView.prototype.showMessage):
        * UserInterface/Views/TextResourceContentView.js:
        (WI.TextResourceContentView.prototype._contentDidPopulate):
        Nicer display for empty content, which may be common for these requests.

2017-09-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: support undo/redo of manual edits
        https://bugs.webkit.org/show_bug.cgi?id=177314

        Reviewed by Joseph Pecoraro.

        Make sure Command-Z and Command-Shift-Z undo changes in the styles sidebar
        when not focused on a contentEditable field.

        * UserInterface/Views/EditingSupport.js:
        (WI.isEventTargetAnEditableField):
        Make sure WI._undoKeyboardShortcut doesn't call WI.undo() when editing inside of a contentEditable element.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        Call style setter to setup event listeners during instantiation.

        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
        Update style declaration section when it isn't focused.
        This is the same logic as in the old styles sidebar (CSSStyleDeclarationTextEditor style setter).

2017-09-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Open Resource Dialog icons are blurry (24x24 instead of 32x32)
        https://bugs.webkit.org/show_bug.cgi?id=177631
        <rdar://problem/34729636>

        Reviewed by Matt Baker.

        * UserInterface/Views/OpenResourceDialog.css:
        (.open-resource-dialog > .tree-outline.large .item):
        (.open-resource-dialog > .tree-outline.large .item .icon):
        (.open-resource-dialog .tree-outline.large .item .titles):
        Make the rows large enough to fit the full 32x32 icon instead of a blurry 24x24.

2017-09-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Uncaught exception with populate find keyboard shortcut
        https://bugs.webkit.org/show_bug.cgi?id=177672

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        The focusedContentView can be null so bail if that is the case.

2017-09-28  Devin Rousso  <webkit@devinrousso.com>

        WebInspector: Uncaught Exception: TypeError: this._delegate.completionControllerCSSFunctionValuesNeeded is not a function.
        https://bugs.webkit.org/show_bug.cgi?id=177619

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
        Remove accidental `typeof` keyword.

2017-09-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove Error icon in error message for resources it looks poor
        https://bugs.webkit.org/show_bug.cgi?id=177613

        Reviewed by Matt Baker.

        * UserInterface/Views/Main.css:
        (.message-text-view.error::before): Deleted.

2017-09-28  Tim Horton  <timothy_horton@apple.com>

        Remove constant() in favor of env()
        https://bugs.webkit.org/show_bug.cgi?id=177581
        <rdar://problem/34701321>

        Reviewed by Dean Jackson.

        * UserInterface/Models/CSSCompletions.js:
        * UserInterface/Models/CSSKeywordCompletions.js:
        (WI.CSSKeywordCompletions.forProperty):
        (WI.CSSKeywordCompletions.forFunction):

2017-09-27  Joseph Pecoraro  <pecoraro@apple.com>

        Uncaught Exception: Attempted to assign to readonly property (at ContentView.js:​206:​34)​
        https://bugs.webkit.org/show_bug.cgi?id=177587

        Reviewed by Matt Baker.

        We allow a representedObject to be a string. In strict mode attempting to set
        a property on a string results in a TypeError. So we should be careful not to
        do this in the rare cases where our representedObject is the a string.

        * UserInterface/Views/ContentView.js:
        (WI.ContentView.contentViewForRepresentedObject):
        (WI.ContentView.closedContentViewForRepresentedObject):
        Avoid setting a property on strings. ContentViews backed by a String aren't typically
        shared anyways, so the property case would not be useful. If a client really wants
        to share they could use `new String(...)` as the representedObject.

2017-09-27  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Missing checks in DebuggerSidebarPanel for DOM debugging support
        https://bugs.webkit.org/show_bug.cgi?id=177574

        Reviewed by Joseph Pecoraro.

        Check before using class members that are conditionally constructed based
        on DOM debugging support.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WI.DebuggerSidebarPanel.prototype.closed):
        (WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):

2017-09-27  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Create ResourceCollectionContentView and make CollectionContentView easier to extend
        https://bugs.webkit.org/show_bug.cgi?id=177419

        Reviewed by Devin Rousso.

        CollectionContentView should be generic, work with any represented object
        Collection, and not perform any type checking. It should just map items
        to ContentViews using the provided ContentView constructor.

        The behavior when clicking a ContentView in the collection has been extended.
        If selection is enabled, clicking a ContentView will cause a "selected" class
        to be applied to its element, and a SupplementalRepresentedObjectsDidChange
        event is dispatched.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New file, move CollectionContentView above subclasses.

        * UserInterface/Models/ResourceCollection.js:
        (WI.ResourceCollection.prototype.get resourceType):
        Make resource type publicly available.

        * UserInterface/Views/CollectionContentView.js:
        Move type checking of the collection out of the base class and assert
        that ContentViews are created when invoking `contentViewConstructor`.
        (WI.CollectionContentView):
        (WI.CollectionContentView.titleForCollection):
        (WI.CollectionContentView.prototype.get supplementalRepresentedObjects):
        (WI.CollectionContentView.prototype.get selectionEnabled):
        (WI.CollectionContentView.prototype.set selectionEnabled):
        (WI.CollectionContentView.prototype.addContentViewForItem):
        (WI.CollectionContentView.prototype.removeContentViewForItem):
        (WI.CollectionContentView.prototype.contentViewAdded):
        (WI.CollectionContentView.prototype.contentViewRemoved):
        (WI.CollectionContentView.prototype.initialLayout):
        (WI.CollectionContentView.prototype.attached):
        (WI.CollectionContentView.prototype.detached):
        (WI.CollectionContentView.prototype._handleItemAdded):
        (WI.CollectionContentView.prototype._handleItemRemoved):
        (WI.CollectionContentView.prototype._selectItem):
        (WI.CollectionContentView.prototype._addContentViewForItem): Deleted.
        (WI.CollectionContentView.prototype._removeContentViewForItem): Deleted.

        * UserInterface/Views/ContentView.js:
        (WI.ContentView.createFromRepresentedObject):
        Create a ResourceCollectionContentView. In the future, additional
        Collection types can be mapped to their associated CollectionContentView.

        * UserInterface/Views/ResourceCollectionContentView.js: Added.
        New class for resource-specific logic previously in CollectionContentView.
        (WI.ResourceCollectionContentView):
        (WI.ResourceCollectionContentView.prototype.contentViewAdded):
        (WI.ResourceCollectionContentView.prototype._handleContentError):
        Remove ContentView without removing the resource from its collection.

2017-09-27  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Fix Layers tab sidebar popover.
        https://bugs.webkit.org/show_bug.cgi?id=177477

        Reviewed by Matt Baker.

        * UserInterface/Views/LayerDetailsSidebarPanel.js:
        (WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Added.
        (WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
        (WI.LayerDetailsSidebarPanel.prototype._sortDataGrid):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridFocused):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridBlurred):
        (WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Refactored.
        (WI.LayerDetailsSidebarPanel.prototype._presentPopover):
        (WI.LayerDetailsSidebarPanel.prototype._dataGridClicked): Deleted -- not actually desired behavior.
        (WI.LayerDetailsSidebarPanel.prototype._updatePopoverForSelectedNode): Deleted -- code simplification.
        (WI.LayerDetailsSidebarPanel.prototype._hidePopover): Deleted -- no longer needed.

2017-09-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add Canvas2D.svg and Canvas3D.svg
        https://bugs.webkit.org/show_bug.cgi?id=175364

        Reviewed by Carlos Garcia Campos.

        Add more free icons.

        * UserInterface/Images/gtk/Canvas2D.svg: Copied from Source/WebInspectorUI/UserInterface/Images/gtk/Canvas.svg.
        * UserInterface/Images/gtk/Canvas3D.svg: Added.

2017-09-26  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: Style unused, overridden, and invalid properties differently
        https://bugs.webkit.org/show_bug.cgi?id=177461

        Reviewed by Matt Baker.

        Style properties the same way as in the current styles sidebar with two minor changes:
        - Commented out properties are never strikethrough.
        - Non-inherited properties of inherited rules are no longer strikethrough (but still semi-transparent).

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor .property:matches(.invalid, .other-vendor, .overridden):not(.disabled)):
        Use the same styles as in the old sidebar, with exception of `-webkit-text-stroke-width: 0.000000000000001px`
        hack, which was replaced by -webkit-text-decoration-color.

        (.spreadsheet-style-declaration-editor .property.invalid:not(.disabled)):
        (.spreadsheet-style-declaration-editor .property.not-inherited):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype._update):

2017-09-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve Table scrolling performance
        https://bugs.webkit.org/show_bug.cgi?id=177468

        Reviewed by Brian Burg.

        This reduces work during scrolling updates in two ways.

        1. Avoid recalculating the width/height of the Table on scroll.
          - We only need to recalculate sizes if the view changes size.
        2. Avoid resetting sizes on all cells if the sizes did not change.
          - Enumerating and setting style.width values was showing up in profiles.

        * UserInterface/Views/Table.js:
        (WI.Table):
        New member variables for a cached width/height of the scrollable region.
        _cachedWidth is the same as _cachedScrollableHeight but they could be
        different so I just kept them separate for now. Also switch to
        getBoundingClientRect which gets us a better value then
        offsetWidth/offsetHeight.

        (WI.Table.prototype.resize):
        Clear cached size and relayout.

        (WI.Table.prototype.layout):
        If we did not resize, layout without recalculating sizes.

        (WI.Table.prototype.resizerDragging):
        (WI.Table.prototype._getOrCreateRow):
        When column widths change increment the width generation. This will let
        us quickly check if a row's cells are appropriately sized or not.

        (WI.Table.prototype._resizeColumnsAndFiller):
        Cache width values after recalculating. Provide a fast path if values
        have not changed.

        (WI.Table.prototype._updateVisibleRows):
        (WI.Table.prototype._updateFillerRowWithNewHeight):
        Factor out updating the filler row into a function.
        
        (WI.Table.prototype._applyColumnWidths):
        Always update the width generation of a row after setting its cell widths.

        (WI.Table.prototype._applyColumnWidthsToColumnsIfNeeded):
        Fast path only updates row cell widths if they need to change.

2017-09-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: move Console.addInspectedNode to DOM.setInspectedNode
        https://bugs.webkit.org/show_bug.cgi?id=176827

        Reviewed by Joseph Pecoraro.

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

        * UserInterface/Views/DOMTreeContentView.js:
        (WI.DOMTreeContentView.prototype._selectedNodeDidChange):

2017-09-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add loading indicator next to resources in the Network Tab
        https://bugs.webkit.org/show_bug.cgi?id=177469

        Reviewed by Matt Baker.

        * UserInterface/Models/Resource.js:
        (WI.Resource.prototype.isLoading):
        Provide a useful accessor to check if the Resource is considered loading or not.

        * UserInterface/Views/NetworkGridContentView.js:
        (WI.NetworkGridContentView.prototype._networkTimelineRecordAdded):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WI.ResourceTimelineDataGridNode.prototype._updateStatus):
        * UserInterface/Views/ResourceTreeElement.js:
        (WI.ResourceTreeElement.prototype._updateStatus):
        Switch existing code to use the new isLoading() function and make the similiar
        code more consistent.

        * UserInterface/Views/NetworkTableContentView.css:
        (body[dir=ltr] .content-view.network .table .cell.name > .status):
        (body[dir=rtl] .content-view.network .table .cell.name > .status):
        (.content-view.network .table .cell.name > .status .indeterminate-progress-spinner):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView.prototype._populateNameCell):
        Add a loading indicator to the Name column in the Network tab.
        It is sized the same as the loading indicator in the Resource tab.

2017-09-25  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Elements tab's Layers sidebar should disappear when Layers tab is present.
        https://bugs.webkit.org/show_bug.cgi?id=177476

        Reviewed by Devin Rousso.

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

2017-09-25  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Add autocompletion suggestions for CSS attr based on the selected element's attributes
        https://bugs.webkit.org/show_bug.cgi?id=177346

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
        Provide a way for delegates to add completion items for CSS functions based on the name of
        the function.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WI.CSSStyleDeclarationTextEditor.prototype.completionControllerCSSFunctionValuesNeeded):
        If the function name is "attr", also return a list of the names of all the selected node's
        attributes.

2017-09-25  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed follow-up to r222470.

        * UserInterface/Main.html:
        Remove reference to css file that doesn't exist yet.

2017-09-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include a table in New Network Tab
        https://bugs.webkit.org/show_bug.cgi?id=177206

        Reviewed by Matt Baker and Brian Burg.

        This includes an initial implementation of the NetworkTableContentView,
        and a generic Table / TableColumn implementation ported from DataGrid.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        New strings and files.

        * UserInterface/Views/NetworkGridContentView.css:
        (.content-view:matches(.network, .network-grid) > .data-grid .cache-type):
        (.cache-type): Deleted.
        * UserInterface/Views/ResourceDetailsSidebarPanel.css:
        (.sidebar > .panel.resource-details .cache-type):
        Make the .cache-type selector more specific for the legacy cases.

        * UserInterface/Views/NetworkTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.css.
        (.content-view.network > .content-browser):
        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView.prototype.shown):
        (WI.NetworkTabContentView.prototype.hidden):
        (WI.NetworkTabContentView.prototype.closed):
        NetworkTabContentView has a ContentBrowser so it should be passing
        ContentBrowser lifecycle events (shown, hidden, closed) through to
        the sub-content browser.

        * UserInterface/Views/TableColumn.js: Added.
        (WI.TableColumn.prototype.get identifier):
        (WI.TableColumn.prototype.get name):
        (WI.TableColumn.prototype.get width):
        (WI.TableColumn.prototype.get minWidth):
        (WI.TableColumn.prototype.get maxWidth):
        (WI.TableColumn.prototype.get hidden):
        (WI.TableColumn.prototype.get defaultHidden):
        (WI.TableColumn.prototype.get sortable):
        (WI.TableColumn.prototype.get align):
        (WI.TableColumn.prototype.get locked):
        (WI.TableColumn.prototype.get flexible):
        (WI.TableColumn.prototype.setWidth):
        (WI.TableColumn.prototype.setHidden):
        Model object for a column. Values are getter only. Columns may express
        size constraints (min width / max width) that are respected as much as
        possible. When a column is resized it dispatches an event.

        * UserInterface/Views/Table.js: Added.
        (WI.Table):
        (WI.Table.prototype.get element):
        (WI.Table.prototype.get identifier):
        (WI.Table.prototype.get dataSource):
        (WI.Table.prototype.get delegate):
        (WI.Table.prototype.get rowHeight):
        (WI.Table.prototype.get selectedRow):
        (WI.Table.prototype.get sortOrder):
        (WI.Table.prototype.set sortOrder):
        (WI.Table.prototype.get sortColumnIdentifier):
        (WI.Table.prototype.set sortColumnIdentifier):
        (WI.Table.prototype.resize):
        (WI.Table.prototype.reloadData):
        (WI.Table.prototype.reloadDataAddedToEndOnly):
        (WI.Table.prototype.reloadRow):
        (WI.Table.prototype.reloadCell):
        (WI.Table.prototype.selectRow):
        (WI.Table.prototype.clearSelectedRow):
        (WI.Table.prototype.columnWithIdentifier):
        (WI.Table.prototype.addColumn):
        (WI.Table.prototype.showColumn):
        (WI.Table.prototype.hideColumn):
        (WI.Table.prototype.restoreScrollPosition):
        (WI.Table.prototype.initialLayout):
        (WI.Table.prototype.layout):
        (WI.Table.prototype.resizerDragStarted):
        (WI.Table.prototype.resizerDragging.growableSize):
        (WI.Table.prototype.resizerDragging.shrinkableSize):
        (WI.Table.prototype.resizerDragging.canGrow):
        (WI.Table.prototype.resizerDragging.canShrink):
        (WI.Table.prototype.resizerDragging.columnToResize):
        (WI.Table.prototype.resizerDragging):
        (WI.Table.prototype.resizerDragEnded):
        (WI.Table.prototype._needsLayout):
        (WI.Table.prototype._createHeaderCell):
        (WI.Table.prototype._createFillerCell):
        (WI.Table.prototype._createCell):
        (WI.Table.prototype._getOrCreateRow):
        (WI.Table.prototype._populatedCellForColumnAndRow):
        (WI.Table.prototype._populateRow):
        (WI.Table.prototype._resizeColumnsAndFiller.distributeRemainingPixels):
        (WI.Table.prototype._resizeColumnsAndFiller.bestFit):
        (WI.Table.prototype._resizeColumnsAndFiller):
        (WI.Table.prototype._updateVisibleRows):
        (WI.Table.prototype._applyColumnWidths):
        (WI.Table.prototype._positionResizerElements):
        (WI.Table.prototype._isRowVisible):
        (WI.Table.prototype._indexToInsertColumn):
        (WI.Table.prototype._handleScroll):
        (WI.Table.prototype._handleKeyDown):
        (WI.Table.prototype._handleClick):
        (WI.Table.prototype._handleContextMenu):
        (WI.Table.prototype._handleHeaderCellClicked):
        (WI.Table.prototype._handleHeaderContextMenu):
        Table is mostly a re-implementation of DataGrid. Much of its functionality
        was a direct copy that was then modified and simplified for a smaller
        and simpler feature set.
        
        Table behaves more like Cocoa's NSTableView. A datasource supplies the
        number of rows, which Table uses to resize appropriately. A delegate is
        then called to populate cells in a row when they become visible. Table
        does minimal caching, and in the event of data source changes
        (resorting, adding rows, modifying rows, etc) the visible rows are
        simply recreated from scratch. Clients should therefore make generating
        a cell's contents as simple and performant as possible.

        Unlike DataGrid, rows are just an <li> with a bunch of cells. Since the
        number of rows are limited to (roughly) those that are visible, most
        operations, like resizing, creates / modifies each of the visible cells.

        Finally, Table's resizing operations behave more like flexible content
        than DataGrid's neighbor only approach. This makes resizing the table
        generally easier to do, but may need refinement to decide which columns
        we would prefer to distribute columns during resizing.

        * UserInterface/Views/Table.css: Added.
        (.table):
        (.table > .header):
        (.table > .header > .sortable:active):
        (.table > .header > :matches(.sort-ascending, .sort-descending)):
        (.table > .header > :matches(.sort-ascending, .sort-descending)::after):
        (body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)):
        (body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)):
        (body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)::after):
        (body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)::after):
        (.table > .header > .sort-ascending::after):
        (.table > .header > .sort-descending::after):
        (.table > .data-container):
        (.table > .data-container.not-scrollable):
        (.table > .data-container > .data-list):
        (.table > .data-container > .data-list.odd-first-zebra-stripe):
        (.table > .data-container > .data-list > li):
        (.table > .data-container > .data-list > li.selected):
        (.table:focus > .data-container > .data-list li.selected):
        (.table .cell):
        (body[dir=ltr] .table .cell:not(:last-child)):
        (body[dir=rtl] .table .cell:not(:last-child)):
        (body[dir=ltr] .table .cell:first-child):
        (body[dir=rtl] .table .cell:first-child):
        (.table :not(.header) .cell:first-of-type):
        (.table .cell.align-right):
        (.table .cell.align-left):
        (.table .cell.align-center):
        Styles mostly taken from DataGrid with a few minor tweaks.

        * UserInterface/Views/NetworkTableContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.css.
        (.content-view.network .table .icon):
        (body[dir=ltr] .content-view.network .table .icon):
        (body[dir=rtl] .content-view.network .table .icon):
        (.content-view.network .table li:not(.filler) .cell.name):
        (.content-view.network .table .cache-type):
        (.content-view.network .table .error):
        * UserInterface/Views/NetworkTableContentView.js:
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.shortDisplayNameForResourceType):
        (WI.NetworkTableContentView.prototype.get navigationItems):
        (WI.NetworkTableContentView.prototype.shown):
        (WI.NetworkTableContentView.prototype.closed):
        (WI.NetworkTableContentView.prototype.reset):
        (WI.NetworkTableContentView.prototype.tableNumberOfRows):
        (WI.NetworkTableContentView.prototype.tableSortChanged):
        (WI.NetworkTableContentView.prototype.tableCellClicked):
        (WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
        (WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
        (WI.NetworkTableContentView.prototype.tablePopulateCell):
        (WI.NetworkTableContentView.prototype._populateNameCell):
        (WI.NetworkTableContentView.prototype._populateTransferSizeCell):
        (WI.NetworkTableContentView.prototype._generateSortComparator):
        (WI.NetworkTableContentView.prototype.initialLayout):
        (WI.NetworkTableContentView.prototype.layout):
        (WI.NetworkTableContentView.prototype._processPendingEntries):
        (WI.NetworkTableContentView.prototype._rowIndexForResource):
        (WI.NetworkTableContentView.prototype._updateEntryForResource):
        (WI.NetworkTableContentView.prototype._mainResourceDidChange):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
        (WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
        (WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
        (WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
        (WI.NetworkTableContentView.prototype._isDefaultSort):
        (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
        (WI.NetworkTableContentView.prototype._displayType):
        (WI.NetworkTableContentView.prototype._entryForResource):
        (WI.NetworkTableContentView.prototype._passFilter):
        (WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):
        (WI.NetworkTableContentView.prototype._updateFilteredEntries):
        (WI.NetworkTableContentView.prototype._generateTypeFilter):
        (WI.NetworkTableContentView.prototype._areFilterListsIdentical):
        (WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
        (WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
        The NetworkTableContentView has a Table and it is the table's data source
        and delegate. It contains a complete list of entries, and a filtered list
        of entries, which is the backing list of rows for the table. As entries
        are created, updated, or filters modified, this generally modifies
        entries, sorts, filters, and reloads the table. As much as possible it
        batches operations in the usual layout loop.

2017-09-24  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Reduce work during resizing
        https://bugs.webkit.org/show_bug.cgi?id=177402

        Reviewed by Matt Baker.

        * UserInterface/Views/ConsolePrompt.js:
        (WI.ConsolePrompt.prototype.layout):
        In the most common case there is no text so avoid doing work in CodeMirror.

2017-09-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove SidebarPanel show/hide and added/removed
        https://bugs.webkit.org/show_bug.cgi?id=177387

        Reviewed by Devin Rousso.

        * UserInterface/Views/DebuggerTabContentView.js:
        (WI.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WI.SearchSidebarPanel.prototype.focusSearchField):
        * UserInterface/Views/Sidebar.js:
        (WI.Sidebar.prototype.insertSidebarPanel):
        (WI.Sidebar.prototype.removeSidebarPanel):
        * UserInterface/Views/SidebarPanel.js:
        (WI.SidebarPanel.prototype.show): Deleted.
        (WI.SidebarPanel.prototype.hide): Deleted.
        (WI.SidebarPanel.prototype.added): Deleted.
        (WI.SidebarPanel.prototype.removed): Deleted.

2017-09-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: View should automatically layout when it becomes attached to the DOM
        https://bugs.webkit.org/show_bug.cgi?id=177189

        Reviewed by Devin Rousso.

        This guarantees that a layout is always scheduled as soon as a view is
        attached to the DOM. Now that nearly all views are created lazily, it
        is safe to make this change even without having a visibility concept in
        the View class that would prevent layouts for background views.

        * UserInterface/Views/View.js:
        (WI.View):
        Remove `this._needsLayoutWhenAttachedToRoot` flag, which is now implicit.
        This was set if a layout was requested before the view had been attached
        to the DOM.

        (WI.View.prototype.get element):
        (WI.View.prototype.get layoutPending):
        (WI.View.prototype.get parentView):
        (WI.View.prototype.get subviews):
        (WI.View.prototype.get isAttached):
        (WI.View.prototype.insertSubviewBefore):
        (WI.View.prototype.removeSubview):
        (WI.View.prototype.removeAllSubviews):
        (WI.View.prototype.attached):
        (WI.View.prototype.detached):
        Hooks for subclasses to define behavior added or removed from the DOM.
        (WI.View.prototype._didMoveToParent):
        (WI.View.prototype._didMoveToWindow):
        (WI.View._scheduleLayoutForView):
        (WI.View.prototype.didMoveToWindow): Deleted.
        (WI.View.prototype.didMoveToParent): Deleted.
        These were only used by View, and have been made private.

2017-09-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: support toggling properties
        https://bugs.webkit.org/show_bug.cgi?id=176643

        Reviewed by Joseph Pecoraro.

        Add a primitive UI to make CSS property names and values editable. Autocomplete, syntax highlighting,
        and proper keyboard navigation will be added later.

        Display !important when it's specified. Before this patch !important wasn't shown in the redesigned
        styles sidebar.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.update):
        (WI.CSSProperty.prototype.get name):
        (WI.CSSProperty.prototype.set name):
        (WI.CSSProperty.prototype.get value):
        (WI.CSSProperty.prototype.get rawValue):
        (WI.CSSProperty.prototype.set rawValue):
        CSSProperty.prototype.value returns the same value as before. !important remains stripped.
        CSSProperty.prototype.rawValue returns a raw value from the payload. It may include !important.

        (WI.CSSProperty.prototype._updateStyle):
        (WI.CSSProperty.prototype._updateOwnerStyleText):
        (WI.CSSProperty):
        * UserInterface/Models/DOMNodeStyles.js:
        (WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor :matches(.name, .value):focus):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetStyleProperty.prototype._update):
        (WI.SpreadsheetStyleProperty.prototype._handleNameChange):
        (WI.SpreadsheetStyleProperty.prototype._handleValueChange):
        (WI.SpreadsheetStyleProperty):

2017-09-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: NavigationBar should coalesce consecutive dividers when items are hidden
        https://bugs.webkit.org/show_bug.cgi?id=177379

        Reviewed by Joseph Pecoraro.

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

2017-09-22  Tim Horton  <timothy_horton@apple.com>

        Add env() as an alias of constant()
        https://bugs.webkit.org/show_bug.cgi?id=177371

        Reviewed by Simon Fraser.

        * UserInterface/Models/CSSKeywordCompletions.js:
        (WI.CSSKeywordCompletions.forProperty):
        (WI.CSSKeywordCompletions.forFunction):
        Add autocomplete support for env().

2017-09-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add autocompletion suggestions for CSS functions (constant(), linear-gradient(), etc)
        https://bugs.webkit.org/show_bug.cgi?id=177264

        Reviewed by Matt Baker.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
        Detect when we are inside of functions and provide completion suggestions
        for the relevant function.

        * UserInterface/Models/CSSCompletions.js:
        Syntax highlight "constant()" like we do for "var()".

        * UserInterface/Models/CSSKeywordCompletions.js:
        (WI.CSSKeywordCompletions.forProperty):
        Always suggest "constant()" everywhere, like we do for "var()".

        (WI.CSSKeywordCompletions.forFunction):
        Provide suggestions for some CSS functions.

2017-09-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove support for CSS Regions
        https://bugs.webkit.org/show_bug.cgi?id=177287

        Reviewed by Matt Baker.

        * UserInterface/Protocol/CSSObserver.js:
        (WI.CSSObserver.prototype.namedFlowCreated):
        (WI.CSSObserver.prototype.namedFlowRemoved):
        (WI.CSSObserver.prototype.regionLayoutUpdated):
        (WI.CSSObserver.prototype.regionOversetChanged):
        (WI.CSSObserver.prototype.registeredNamedFlowContentElement):
        (WI.CSSObserver.prototype.unregisteredNamedFlowContentElement):
        Leave observer functions in for older backends that will send
        these messages, but we just ignore them.

        * UserInterface/Base/Main.js:
        * UserInterface/Controllers/DOMTreeManager.js:
        (WI.DOMTreeManager):
        (WI.DOMTreeManager.prototype._unbind):
        (WI.DOMTreeManager._flowPayloadHashKey): Deleted.
        (WI.DOMTreeManager.prototype._createContentFlowFromPayload): Deleted.
        (WI.DOMTreeManager.prototype._updateContentFlowFromPayload): Deleted.
        (WI.DOMTreeManager.prototype.getNamedFlowCollection.onNamedFlowCollectionAvailable): Deleted.
        (WI.DOMTreeManager.prototype.getNamedFlowCollection): Deleted.
        (WI.DOMTreeManager.prototype.namedFlowCreated): Deleted.
        (WI.DOMTreeManager.prototype.namedFlowRemoved): Deleted.
        (WI.DOMTreeManager.prototype._sendNamedFlowUpdateEvents): Deleted.
        (WI.DOMTreeManager.prototype.regionOversetChanged): Deleted.
        (WI.DOMTreeManager.prototype.registeredNamedFlowContentElement): Deleted.
        (WI.DOMTreeManager.prototype._removeContentNodeFromFlowIfNeeded): Deleted.
        (WI.DOMTreeManager.prototype.unregisteredNamedFlowContentElement): Deleted.
        (WI.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes.nodeRequested): Deleted.
        (WI.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes): Deleted.
        (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.regionNodesAvailable): Deleted.
        (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable): Deleted.
        (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.inspectedPage_node_getFlowInfo.getComputedProperty): Deleted.
        (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.inspectedPage_node_getFlowInfo.getContentFlowName): Deleted.
        (WI.DOMTreeManager.prototype.getNodeContentFlowInfo): Deleted.
        * UserInterface/Images/ContentFlow.svg: Removed.
        * UserInterface/Images/gtk/ContentFlow.svg: Removed.
        * UserInterface/Main.html:
        * UserInterface/Models/Collection.js:
        * UserInterface/Models/ContentFlow.js: Removed.
        * UserInterface/Models/DOMTree.js:
        (WI.DOMTree):
        (WI.DOMTree.prototype.get frame):
        (WI.DOMTree.prototype._framePageExecutionContextChanged):
        (WI.DOMTree.prototype.get contentFlowCollection): Deleted.
        (WI.DOMTree.prototype.requestContentFlowList): Deleted.
        (WI.DOMTree.prototype._isContentFlowInCurrentDocument): Deleted.
        (WI.DOMTree.prototype._contentFlowListWasUpdated): Deleted.
        (WI.DOMTree.prototype._contentFlowWasAdded): Deleted.
        (WI.DOMTree.prototype._contentFlowWasRemoved): Deleted.
        * UserInterface/Test.html:
        * UserInterface/Views/CollectionContentView.js:
        (WI.CollectionContentView):
        * UserInterface/Views/ComputedStyleDetailsPanel.css:
        (.details-section > .content > .group > .row.simple.content-flow-link > .value > span > .icon): Deleted.
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WI.ComputedStyleDetailsPanel.prototype.refresh):
        (WI.ComputedStyleDetailsPanel.prototype.initialLayout):
        (WI.ComputedStyleDetailsPanel.prototype._handleVariablesSectionCollapsedStateChanged):
        (WI.ComputedStyleDetailsPanel):
        (WI.ComputedStyleDetailsPanel.prototype.get regionFlow): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype.set regionFlow): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype.get contentFlow): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype.set contentFlow): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype.get containerRegions): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype.set containerRegions): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype.sizeDidChange): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype._updateFlowNamesSectionVisibility): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype._resetFlowDetails): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype._refreshFlowDetails.contentFlowInfoReady): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype._refreshFlowDetails): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked): Deleted.
        (WI.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked): Deleted.
        * UserInterface/Views/ContentFlowDOMTreeContentView.js: Removed.
        * UserInterface/Views/ContentFlowIcon.css: Removed.
        * UserInterface/Views/ContentFlowTreeElement.js: Removed.
        * UserInterface/Views/ContentView.js:
        (WI.ContentView.createFromRepresentedObject):
        (WI.ContentView.isViewable):
        * UserInterface/Views/FrameTreeElement.js:
        (WI.FrameTreeElement.prototype.onpopulate):
        (WI.FrameTreeElement.prototype.onexpand):
        (WI.FrameTreeElement.prototype._childContentFlowWasAdded): Deleted.
        (WI.FrameTreeElement.prototype._childContentFlowWasRemoved): Deleted.
        (WI.FrameTreeElement.prototype._rootDOMNodeInvalidated): Deleted.
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WI.ResourcesTabContentView):
        (WI.ResourcesTabContentView.prototype.canShowRepresentedObject):

2017-09-21  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Add details sidebar to Layers tab.
        https://bugs.webkit.org/show_bug.cgi?id=177115

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Views/LayerDetailsSidebarPanel.css: Added.
        * UserInterface/Views/LayerDetailsSidebarPanel.js: Added.
        New files and strings for sidebar.

        * UserInterface/Base/Utilities.js:
        Add global identifier for "×" character.
        
        * UserInterface/Models/Layer.js: Added.
        Add a model class for layers so that we can instanceof-check them.

        * UserInterface/Controllers/LayerTreeManager.js:
        (WI.LayerTreeManager.prototype.layersForNode):
        Utilize model class WI.Layer.

        * UserInterface/Views/Layers3DContentView.js:
        (WI.Layers3DContentView):
        (WI.Layers3DContentView.prototype.get supplementalRepresentedObjects):
        (WI.Layers3DContentView.prototype.layout):
        (WI.Layers3DContentView.prototype._addLayer):
        Pass layer data to sidebar and utilize model class WI.Layer.

        * UserInterface/Views/LayersTabContentView.js:
        (WI.LayersTabContentView):
        Attach details sidebar.

2017-09-21  Brian Burg  <bburg@apple.com>

        Web Inspector: keyboard shortcut for "Reload page from origin" doesn't match Safari, and doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=177010
        <rdar://problem/33134548>

        Reviewed by Joseph Pecoraro.

        I seem to have broken reload from origin via Web Inspector in a previous
        patch, because the parameter is 'ignoreCache' instead of 'shouldIgnoreCache'.

        * Localizations/en.lproj/localizedStrings.js:
        Modernize tooltip text.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        Disambiguate two locals with the same name. Modernize the tooltip.
        Make the shortcut Cmd-Opt-R to match Safari. Fix wrong parameter usage.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.reloadPage):
        Fix wrong parameter.

2017-09-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Adopt named groups in complex regexes
        https://bugs.webkit.org/show_bug.cgi?id=177117

        Reviewed by Matt Baker.

        * UserInterface/Base/URLUtilities.js:
        (parseSecurityOrigin):
        (parseDataURL):
        (parseURL):
        * UserInterface/Models/Color.js:
        (WI.Color.fromString):

2017-09-19  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r214494): Web Inspector: Ignore cache button does not work in Network tab
        https://bugs.webkit.org/show_bug.cgi?id=177114
        <rdar://problem/34505265>

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WI.loaded):
        We need to register the settings change handler regardless of what the
        initial value of the setting is.

2017-09-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: RemoteObject.resolveNode should return a Promise
        https://bugs.webkit.org/show_bug.cgi?id=177042

        Reviewed by Joseph Pecoraro.

        Update RemoteObject.resolveNode to return a promise instead of taking a
        callback. If the promise is fulfilled, `remoteObject` will be non-null.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WI.DOMTreeManager.prototype.inspectNodeObject.nodeAvailable):
        (WI.DOMTreeManager.prototype.inspectNodeObject):
        (WI.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved): Deleted.

        * UserInterface/Models/DOMNode.js:
        (WI.DOMNode.prototype.toggleClass.WI.RemoteObject.resolveNode.then):
        (WI.DOMNode.prototype.toggleClass):
        (WI.DOMNode.prototype.scrollIntoView.WI.RemoteObject.resolveNode.then):
        (WI.DOMNode.prototype.scrollIntoView):
        (WI.DOMNode.prototype.toggleClass.resolvedNode.inspectedPage_node_toggleClass): Deleted.
        (WI.DOMNode.prototype.toggleClass.resolvedNode): Deleted.
        (WI.DOMNode.prototype.scrollIntoView.resolvedNode.inspectedPage_node_scrollIntoView): Deleted.
        (WI.DOMNode.prototype.scrollIntoView.resolvedNode): Deleted.

        * UserInterface/Protocol/RemoteObject.js:
        (WI.RemoteObject.resolveNode):

        * UserInterface/Views/BoxModelDetailsSectionRow.js:
        (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.WI.RemoteObject.resolveNode.then):
        (WI.BoxModelDetailsSectionRow.prototype._applyUserInput):
        (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.toggleInlineStyleProperty): Deleted.
        (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.didToggle): Deleted.
        (WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode): Deleted.
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:

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

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved.inspectedPage_node_collectPrototypes): Deleted.
        (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved): Deleted.
        (WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady): Deleted.

        * UserInterface/Views/DOMTreeElement.js:
        (WI.DOMTreeElement.prototype._createTooltipForNode.WI.RemoteObject.resolveNode.then):
        (WI.DOMTreeElement.prototype._createTooltipForNode):
        (WI.DOMTreeElement.prototype._createTooltipForNode.resolvedNode.dimensions): Deleted.
        (WI.DOMTreeElement.prototype._createTooltipForNode.resolvedNode): Deleted.

        * UserInterface/Views/DOMTreeOutline.js:
        (WI.DOMTreeOutline.prototype._hideElement.injectStyleAndToggleClass):
        (WI.DOMTreeOutline.prototype._hideElement):
        (WI.DOMTreeOutline):
        (WI.DOMTreeOutline.prototype._hideElement.resolvedNode.injectStyleAndToggleClass): Deleted.
        (WI.DOMTreeOutline.prototype._hideElement.resolvedNode): Deleted.

2017-09-18  Brian Burg  <bburg@apple.com>

        Web Inspector: introduce an AppController class and shared instance of it
        https://bugs.webkit.org/show_bug.cgi?id=177024

        Reviewed by Matt Baker.

        WebInspectorUI currently has an app controller singleton that's distributed
        among many properties on the WI object, which also serves as a namespace for
        classes, enums, and other frontend objects. The singleton should be a proper
        class so that we can think more easily about what state is global.

        In the process of moving pieces of Main.js into AppController, I intend to move
        most UI related code into a view controller class for the top level view.
        AppController really shouldn't be doing anything to the view hierarchy or DOM.
        It is yet to be determined how responsibility for global DOM events, such as
        those for keyboard shortcuts, will be handled.

        This larger refactoring project will let us more easily do things like connect
        to multiple debuggables in the same Inspector instance, and switch between views
        of different debuggable targets. Even if this never comes to pass, the code will
        be a lot easier to reason about and maintain in the future.

        For the first patch, introduce {AppController, TestAppController} <: AppControllerBase.
        Shared code goes in the base class. In the Main.html and Test.html files, first
        construct the AppController and then call .initialize() to avoid cyclic dependencies
        on the global singleton WI.sharedApp.

        * UserInterface/Main.html:
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WI.loaded):
        * UserInterface/Base/Main.js:
        (WI.loaded):
        Move some shared code out of here into AppControllerBase.constructor.
        Eventually WI.loaded should not exist, and its code will move elsewhere.

        (WI.contentLoaded):
        Adopt global reference.

        * UserInterface/Controllers/AppControllerBase.js: Copied from Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js.
        (WI.AppControllerBase):
        (WI.AppControllerBase.prototype.get hasExtraDomains):
        (WI.AppControllerBase.prototype.get debuggableType):
        (WI.AppControllerBase.prototype.initialize):

        * UserInterface/Controllers/AppController.js: New.
        (WI.AppController):
        (WI.AppController.prototype.get hasExtraDomains):
        (WI.AppController.prototype.get debuggableType):
        (WI.AppController.prototype.activateExtraDomains):

        * UserInterface/Test/TestAppController.js: New.
        (WI.TestAppController):
        (WI.TestAppController.prototype.get hasExtraDomains):
        (WI.TestAppController.prototype.get debuggableType):

        * UserInterface/Controllers/TimelineManager.js:
        (WI.TimelineManager.defaultTimelineTypes):
        (WI.TimelineManager.availableTimelineTypes):
        (WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStarted):
        (WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStopped):
        (WI.TimelineManager.prototype.scriptProfilerTrackingCompleted):
        * UserInterface/Models/TimelineRecording.js:
        (WI.TimelineRecording.sourceCodeTimelinesSupported):
        * UserInterface/Protocol/InspectorObserver.js:
        (WI.InspectorObserver.prototype.inspect):
        (WI.InspectorObserver.prototype.activateExtraDomains):
        (WI.InspectorObserver):
        * UserInterface/Protocol/MainTarget.js:
        (WI.MainTarget):
        (WI.MainTarget.prototype.get displayName):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel):
        (WI.ResourceSidebarPanel.prototype.initialLayout):
        (WI.ResourceSidebarPanel.prototype._addScript):
        (WI.ResourceSidebarPanel.prototype._extraDomainsActivated):
        * UserInterface/Views/Toolbar.js:
        Use WI.sharedApp.{debuggableType, hasExtraDomains}.

2017-09-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: console.assert messages shouldn't end in an exclamation point
        https://bugs.webkit.org/show_bug.cgi?id=177054

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/EventListener.js:
        * UserInterface/Base/EventListenerSet.js:
        (WI.EventListenerSet.prototype.register):
        Drive-by: make assertions the same in both.

        * UserInterface/Views/LayoutTimelineView.js:
        (WI.LayoutTimelineView.prototype._processPendingRecords):

        * UserInterface/Views/Resizer.js:
        (WI.Resizer.prototype._currentPosition):

2017-09-18  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: REGRESSION(r221901): Single frame recordings don't reset the recording navigation item
        https://bugs.webkit.org/show_bug.cgi?id=176893

        Reviewed by Matt Baker.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager.prototype.recordingFinished):
        Set the `_recordingCanvas` to null whenever a recording has finished and been sent to the
        frontend. It is also necessary to do this inside `stopRecording`, as it is possible for the
        user to start and stop a recording before any actions are recorded, meaning that no
        recording would be sent to the frontend and this function will never get called.

2017-09-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: support toggling properties
        https://bugs.webkit.org/show_bug.cgi?id=176643

        Reviewed by Matt Baker.

        Add checkboxes to toggle (comment/uncomment) CSS properties.

        * UserInterface/Base/Utilities.js:
        (String.prototype.get lineCount):
        (String.prototype.get lastLine):
        Add string methods that are used by WI.CSSProperty.prototype._updateOwnerStyleText.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.commentOut):
        (WI.CSSProperty.prototype.set text):
        (WI.CSSProperty.prototype.get editable):
        (WI.CSSProperty.prototype._updateOwnerStyleText):
        Add methods necessary for property toggling.

        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration):
        (WI.CSSStyleDeclaration.prototype.get allVisibleProperties):
        Add a getter that is used by SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesToRender.

        (WI.CSSStyleDeclaration.prototype.get visibleProperties):
        * UserInterface/Models/TextRange.js:
        (WI.TextRange.prototype.clone):
        (WI.TextRange.prototype.cloneAndModify):
        (WI.TextRange.prototype.relativeTo):
        Add methods that are used by WI.CSSProperty.prototype._updateOwnerStyleText.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
        (.spreadsheet-style-declaration-editor):
        (.spreadsheet-style-declaration-editor .property-toggle):
        (.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,):
        (.spreadsheet-style-declaration-editor .property.disabled,):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetStyleProperty):
        (WI.SpreadsheetStyleProperty.prototype.get element):
        (WI.SpreadsheetStyleProperty.prototype._update):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        (WI.SpreadsheetRulesStyleDetailsPanel):
        * UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
        (.cm-s-default .cm-comment,):
        * UserInterface/Views/Variables.css:
        (:root):
        Make comment color a CSS variable.

2017-09-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: REGRESSION(r222057): recording state doesn't update when changing actions
        https://bugs.webkit.org/show_bug.cgi?id=176988

        Reviewed by Matt Baker.

        Replace `updateActionIndex` with `updateAction`, where the currently selected RecordingAction
        is passed to the DetailsSidebarPanel. Also remove the call to `this._recording.actions` in
        order to ensure that all logic performed by both DetailsSidebarPanel is synchronous.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Views/RecordingTabContentView.js:
        (WI.RecordingTabContentView.prototype._updateActionIndex):

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView.prototype.async._generateContentCanvas2D):
        (WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):

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

        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
        (WI.RecordingTraceDetailsSidebarPanel):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.set recording):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex): Deleted.

2017-09-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas: recording parameters that include colors should show an InlineSwatch (2D canvas)
        https://bugs.webkit.org/show_bug.cgi?id=176822
        <rdar://problem/34402170>

        Reviewed by Devin Rousso.

        Show inline swatches in the canvas recording action and state sidebars.

        * UserInterface/Models/Color.js:
        Added helpers for dealing with CMYK and normalized RGB. The latter is
        for RGB components scaled to the range [0, 1]. Also improved handling
        for 8-bit channel values.
        (WI.Color.rgb2hsv):
        (WI.Color.cmyk2rgb):
        (WI.Color.normalized2rgb):
        (WI.Color._eightBitChannel):
        (WI.Color.prototype._toRGBString):
        (WI.Color.prototype._toRGBAString):
        (WI.Color.prototype._componentToHexValue):
        (WI.Color.prototype._rgbToHSL):
        (WI.Color.prototype._componentToNumber): Deleted.
        Replaced by _eightBitChannel.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction):
        (WI.RecordingAction.prototype.getColorParameters):
        Get a subset of parameters that describe a color. This can be an array
        containing one value (e.g. fillStyle), or multiple values, as is the
        case with non-standard API functions that describe color using multiple
        parameters (e.g. setFillColor).

        * UserInterface/Views/InlineSwatch.css:
        (.inline-swatch:not(.read-only):hover > span):
        (.inline-swatch:hover > span): Deleted.
        * UserInterface/Views/InlineSwatch.js:
        (WI.InlineSwatch):
        Read-only colors shouldn't show a context menu or hover effects.

        * UserInterface/Views/RecordingActionTreeElement.css:
        (.tree-outline:matches(:focus, .force-focus) .item.action > .titles .parameters > .inline-swatch):

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._generateDOM.createParameterElement):
        (WI.RecordingActionTreeElement._generateDOM):
        (WI.RecordingActionTreeElement._createSwatchForColorParameters):

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
        (.sidebar > .panel.details.recording-state > .content > .data-grid .inline-swatch):

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.isColorProperty):
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.createInlineSwatch):
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
        (WI.RecordingStateDetailsSidebarPanel):

2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed rollout r222036.
        
        The LayoutTests added with this change is flaky.

        This left in the Test.js, Test.html, InspectorBackend changes
        needed by later patches. They are independent of the flakey test.

        Reverted changeset
        Web Inspector: Timeline should show when events preventDefault() was called on an event or not
        https://bugs.webkit.org/show_bug.cgi?id=176824
        http://trac.webkit.org/changeset/222036

2017-09-14  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: make recording swizzle async
        https://bugs.webkit.org/show_bug.cgi?id=176936

        Reviewed by Joseph Pecoraro.

        Move all swizzle functions, and all logic that depends on swizzled values, to async
        functions so that await can be used to pause execution while objects load. This was
        necessary primarily for swizzling Image values, as the Image is not able to be used (such as
        for creating a CanvasPattern) until its "load" event has fired. Any callers of a Recording's
        actions getter must now adapt to working with a promise that will resolve once all swizzling
        has finished across all actions within that recording.

        * .eslintrc:

        * UserInterface/Models/Recording.js:
        (WI.Recording):
        (WI.Recording.prototype.async swizzle):
        (WI.Recording.prototype.swizzle): Deleted.
        Drive-by: currently, no data is added to the JSON for WebGL objects, so don't try to swizzle
        them and return the placeholder value (0) instead.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction):
        (WI.RecordingAction.prototype.swizzle):
        (WI.RecordingAction.prototype.toJSON):
        (WI.RecordingAction.prototype.async _swizzle.swizzleParameter):
        (WI.RecordingAction.prototype.async _swizzle.async swizzleCallFrame):
        (WI.RecordingAction.prototype.async _swizzle):

        * UserInterface/Models/RecordingInitialStateAction.js:
        (WI.RecordingInitialStateAction):

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView.prototype.updateActionIndex):
        (WI.RecordingContentView.prototype.async _generateContentCanvas2D):
        (WI.RecordingContentView.prototype.async _generateContentCanvasWebGL):
        (WI.RecordingContentView.prototype._updateCanvasPath):
        (WI.RecordingContentView.prototype._generateContentCanvas2D): Deleted.
        (WI.RecordingContentView.prototype._generateContentCanvasWebGL): Deleted.

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype.set recording):
        (WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel):
        (WI.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):

        * UserInterface/Views/RecordingTabContentView.js:
        (WI.RecordingTabContentView.prototype.showRepresentedObject):

        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
        (WI.RecordingTraceDetailsSidebarPanel):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):

2017-09-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Color created from an RGB/HSL triplet returns bad component arrays
        https://bugs.webkit.org/show_bug.cgi?id=176811
        <rdar://problem/34397529>

        Reviewed by Joseph Pecoraro.

        A Color constructed from a format and RGB/HSL triplet should set its
        alpha component to 1 instead of leaving it undefined. Color properties
        and member functions expect the components array to have a length of four.

        * UserInterface/Models/Color.js:
        (WI.Color):

2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>

        Layout test inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html is flaky.
        https://bugs.webkit.org/show_bug.cgi?id=176952

        Reviewed by Matt Baker.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Agent.prototype.dispatchEvent):
        Include the event name since that may be useful in understanding what happened.

        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WI.loaded):
        Register a MemoryObserver and include potentially necessary Model objects
        for the Memory domain.

2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline should show when events preventDefault() was called on an event or not
        https://bugs.webkit.org/show_bug.cgi?id=176824
        <rdar://problem/34290931>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        New string.

        * UserInterface/Controllers/TimelineManager.js:
        (WI.TimelineManager.prototype._processRecord):
        Include the whole data object as extra details.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WI.ScriptTimelineRecord):
        (WI.ScriptTimelineRecord.prototype.get extraDetails):
        Wholesale copy of the extra data instead of just a single property.

        * UserInterface/Views/ScriptDetailsTimelineView.js:
        (WI.ScriptDetailsTimelineView):
        Give the name column more initial space, there is still extra space
        after this adjustment but name is comfortably larger (and the most
        likely to be expanded).

        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WI.ScriptTimelineDataGridNode.prototype.get subtitle):
        Include "default prevented" as the event's subtitle if it was prevented.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Agent.prototype.dispatchEvent):
        (InspectorBackend.Agent):
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WI.loaded):
        Add the ScriptProfilerObserver to tests since it is on by default for Timelines.

2017-09-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r222015.

        The LayoutTests added with this change are flaky.

        Reverted changeset:

        "Web Inspector: Timeline should show when events
        preventDefault() was called on an event or not"
        https://bugs.webkit.org/show_bug.cgi?id=176824
        http://trac.webkit.org/changeset/222015

2017-09-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline should show when events preventDefault() was called on an event or not
        https://bugs.webkit.org/show_bug.cgi?id=176824
        <rdar://problem/34290931>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        New string.

        * UserInterface/Controllers/TimelineManager.js:
        (WI.TimelineManager.prototype._processRecord):
        Include the whole data object as extra details.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WI.ScriptTimelineRecord):
        (WI.ScriptTimelineRecord.prototype.get extraDetails):
        Wholesale copy of the extra data instead of just a single property.

        * UserInterface/Views/ScriptDetailsTimelineView.js:
        (WI.ScriptDetailsTimelineView):
        Give the name column more initial space, there is still extra space
        after this adjustment but name is comfortably larger (and the most
        likely to be expanded).

        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WI.ScriptTimelineDataGridNode.prototype.get subtitle):
        Include "default prevented" as the event's subtitle if it was prevented.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackend.Agent.prototype.dispatchEvent):
        (InspectorBackend.Agent):
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WI.loaded):
        Add the ScriptProfilerObserver to tests since it is on by default for Timelines.

2017-09-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: allow recordings to be saved via ⌘-S in the Recording tab
        https://bugs.webkit.org/show_bug.cgi?id=175284

        Reviewed by Matt Baker.

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView.prototype.get supportsSave):
        (WI.RecordingContentView.prototype.get saveData):

        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
        Use the current content view's saveData when exporting.

2017-09-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Event Listeners section does not update when listeners are added/removed
        https://bugs.webkit.org/show_bug.cgi?id=170570
        <rdar://problem/31501645>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Protocol/DOMObserver.js:
        (WI.DOMObserver.prototype.didAddEventListener):
        (WI.DOMObserver.prototype.willRemoveEventListener):

        * UserInterface/Controllers/DOMTreeManager.js:
        (WI.DOMTreeManager.prototype.didAddEventListener):
        (WI.DOMTreeManager.prototype.willRemoveEventListener):

        * UserInterface/Models/DOMNode.js:
        Add "EventListenersChanged" event. Fired when an event listener is added or removed.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners):
        (WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners):
        (WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
        Refresh the event listeners section whenever a node's event listeners change.

2017-09-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Sort by size issues with Cookies and ApplicationCache DataGrids
        https://bugs.webkit.org/show_bug.cgi?id=176879
        <rdar://problem/34237096>

        Reviewed by Matt Baker.

        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WI.ApplicationCacheFrameContentView.prototype._sortDataGrid):
        (WI.ApplicationCacheFrameContentView.prototype._populateDataGrid):
        This uses very dumb DataGridNodes with a pure data object. In that
        object `size` is a bytes string not a number. Include the number size
        in this data object that can be used during sorting.

        * UserInterface/Views/CookieStorageContentView.js:
        (WI.CookieStorageContentView.prototype._rebuildTable):
        Simplify creation. Also don't reset sort options. Note that here the
        DataGridNodes have access to the Cookie object and can already sort size
        using the cookie's size (a number) and not the data's size (string).

        * UserInterface/Views/DataGrid.js:
        (WI.DataGrid.prototype.sortNodes):
        (WI.DataGrid.prototype._sortNodesCallback):
        If sortNodes was called twice, it would defer the sort and actually
        do the sort with the first comparator and not the latest, preferred
        comparator. Make it use the latest comparator.

2017-09-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: display @media section headers
        https://bugs.webkit.org/show_bug.cgi?id=176289
        <rdar://problem/34228389>

        Reviewed by Devin Rousso.

        Prepend CSS media query selectors to every matching rule.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
        (.spreadsheet-css-declaration .media-label):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader):
        Don't localize "@media" since it's CSS code.
        Don't display "all" or "screen" media query selectors. One of the goals of the
        Styles sidebar redesign is to fit more data.

2017-09-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Frontend should be made to expect and handle disabled properties
        https://bugs.webkit.org/show_bug.cgi?id=166787
        <rdar://problem/34379593>

        Reviewed by Joseph Pecoraro.

        This change introduces WI.CSSStyleDeclaration.prototype.allProperties getter,
        that includes both enabled and disabled (commented out) CSS properties.

        The existing WI.CSSStyleDeclaration.prototype.properties getter only includes enabled CSS properties,
        same as before the backend change.

        There is no behaviour change in the current styles sidebar. The new redesigned styles sidebar will
        use disabled properties and display them as commented out.

        * UserInterface/Models/CSSProperty.js:
        (WI.CSSProperty.prototype.get attached):
        Rename `enabled` to `attached`, as it didn't correspond to `_enabled` property. Attached means that the property
        is enabled and has a ownerStyle with a set index (unless it's a computed style, where index is not applicable).

        (WI.CSSProperty.prototype.get enabled):
        * UserInterface/Models/CSSStyleDeclaration.js:
        (WI.CSSStyleDeclaration.prototype.get allProperties):
        Add allProperties getter that will be used in the new styles sidebar.

        * UserInterface/Models/DOMNodeStyles.js:
        (WI.DOMNodeStyles.prototype._markOverriddenProperties):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty.propertiesMatch):
        Rename "enabled" to "attached" without any behavior change.

2017-09-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Escape in global search field should clear it
        https://bugs.webkit.org/show_bug.cgi?id=176764

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/QuickConsole.js:
        (WI.QuickConsole.prototype._toggleOrFocus):
        Don't implicitly prevent default. So if we didn't cause an action we
        can let the default system action happen.

        * UserInterface/Views/SearchBar.js:
        (WI.SearchBar):
        Remove unused keyboard shortcuts.

2017-09-12  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Experimental setting for new Network tab
        https://bugs.webkit.org/show_bug.cgi?id=176750

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        New files and strings.

        * UserInterface/Base/Setting.js:
        New experimental setting.

        * UserInterface/Views/LegacyNetworkTabContentView.js:
        (WI.LegacyNetworkTabContentView.isTabAllowed):
        Legacy tab availability depends on the setting.

        * UserInterface/Views/NetworkTabContentView.js:
        (WI.NetworkTabContentView):
        (WI.NetworkTabContentView.isTabAllowed):
        (WI.NetworkTabContentView.prototype.get contentBrowser):
        (WI.NetworkTabContentView.prototype.get type):
        (WI.NetworkTabContentView.prototype.canShowRepresentedObject):
        (WI.NetworkTabContentView.prototype.get supportsSplitContentBrowser):
        Modern network tab. Only difference right now is it allows the split console.

        * UserInterface/Views/NetworkTableContentView.js: Added.
        (WI.NetworkTableContentView):
        (WI.NetworkTableContentView.prototype.get selectionPathComponents):
        (WI.NetworkTableContentView.prototype.get navigationItems):
        (WI.NetworkTableContentView.prototype.shown):
        (WI.NetworkTableContentView.prototype.hidden):
        (WI.NetworkTableContentView.prototype.closed):
        (WI.NetworkTableContentView.prototype.reset):
        (WI.NetworkTableContentView.prototype.layout):
        (WI.NetworkTableContentView.prototype.handleClearShortcut):
        (WI.NetworkTableContentView.prototype._resourceCachingDisabledSettingChanged):
        (WI.NetworkTableContentView.prototype._toggleDisableResourceCache):
        Add a stubbed out ContentView. This will be implemented next.

        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
        Add an experimental setting to toggle the new network tab. Only
        show the experimental settings that relate to the debuggable target.
        For JSContext targets, none of the settings are applicable, so don't
        even show the experimental section.

        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Treat all network tabs the same.

2017-09-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Canvas: improve recording controls and state management
        https://bugs.webkit.org/show_bug.cgi?id=176762
        <rdar://problem/34382294>

        Reviewed by Devin Rousso.

        CanvasManager should be responsible for starting/stopping recordings
        and tracking state. Fixing this layering issue lets CanvasContentView
        better manage its recording UI.

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

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.prototype.get isRecording):
        (WI.Canvas.prototype.toggleRecording): Deleted.

        * UserInterface/Views/CanvasContentView.css:
        (.navigation-bar > .item.canvas-record.disabled):

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView.prototype.shown):
        (WI.CanvasContentView.prototype._toggleRecording):
        (WI.CanvasContentView.prototype._recordingFinished):
        (WI.CanvasContentView.prototype._updateRecordNavigationItem):

2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Cleanup and test MIMETypeUtilities
        https://bugs.webkit.org/show_bug.cgi?id=176731

        Reviewed by Matt Baker.

        * UserInterface/Base/FileUtilities.js:
        (WI.saveDataToFile):
        * UserInterface/Models/SourceMapResource.js:
        (WI.SourceMapResource):
        Update callers to handle new return values.

        * UserInterface/Base/MIMETypeUtilities.js:
        (WI.fileExtensionForURL):
        Return null in error cases.
        Only provide the content after the last period.

        (WI.fileExtensionForMIMEType):
        Handle generic "+json" and "+xml" cases.

        * UserInterface/Test.html:
        Include MIMETypeUtilities for testing.

2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Rename NetworkTab / NetworkSidebar to LegacyNetwork*
        https://bugs.webkit.org/show_bug.cgi?id=176739

        Reviewed by Matt Baker.

        * UserInterface/Main.html:
        * UserInterface/Views/LegacyNetworkSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.css.
        * UserInterface/Views/LegacyNetworkSidebarPanel.js: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js.
        * UserInterface/Views/LegacyNetworkTabContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkTabContentView.js.
        Rename resources.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        * UserInterface/Views/NetworkGridContentView.js:
        (WI.NetworkGridContentView):
        (WI.NetworkGridContentView.prototype._networkTimelineRecordAdded):
        * UserInterface/Views/TabBrowser.js:
        (WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Update names at callsites.

2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused parameter to UIString
        https://bugs.webkit.org/show_bug.cgi?id=176738

        Reviewed by Matt Baker.

        * UserInterface/Base/LoadLocalizedStrings.js:
        (WI.UIString):
        Remove unused parameter. We moved to String.format for this behavior a while ago.

2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Do not allow the split console in the Settings tab
        https://bugs.webkit.org/show_bug.cgi?id=176726

        Reviewed by Matt Baker.

        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype.get supportsSplitContentBrowser):

2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include a DebugContentView for debugging
        https://bugs.webkit.org/show_bug.cgi?id=176733

        Reviewed by Matt Baker.

        Provide a DebugContentView which can be used to debug lifecycle
        events of a ContentView (shown, hidden, closed), and displays a
        provided string. It can be created like so:

            `new WI.DebugContentView("Name")`

        * UserInterface/Debug/DebugContentView.css: Added.
        (.content-view.debug):
        * UserInterface/Debug/DebugContentView.js: Added.
        (WI.DebugContentView):
        (WI.DebugContentView.prototype.shown):
        (WI.DebugContentView.prototype.hidden):
        (WI.DebugContentView.prototype.closed):
        Log events for debugging.

        * UserInterface/Main.html:
        Include new Debug resources.

2017-09-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Make Dashboard Timeline icon and Timeline tab icon more similar
        https://bugs.webkit.org/show_bug.cgi?id=176582

        Reviewed by Timothy Hatcher.

        * UserInterface/Images/Time.svg:
        Change the clock hands to match the time of Timelines.svg.

2017-09-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: change style of RecordingNavigationSidebarPanel
        https://bugs.webkit.org/show_bug.cgi?id=175451
        <rdar://problem/34040769>

        Reviewed by Devin Rousso.

        This patch adds UI polish to the Canvas recording navigation sidebar:
         - New icons for Canvas2D operations
         - Removed extraneous colors: zebra striping, frame element background color
         - Visual action color changed to match details sidebar "changed" color
         - Make tree item indent a convenient multiple of the base indent
         - Move RecordingActionTreeElement styles to a separate file

        * UserInterface/Images/Clip.svg: Added.
        * UserInterface/Images/Composite.svg: Added.
        * UserInterface/Images/Fill.svg: Added.
        * UserInterface/Images/LineStyle.svg: Added.
        * UserInterface/Images/Palette.svg: Added.
        * UserInterface/Images/PathArc.svg: Added.
        * UserInterface/Images/PathCurve.svg: Added.
        * UserInterface/Images/PathEllipse.svg: Added.
        * UserInterface/Images/PathLineTo.svg: Added.
        * UserInterface/Images/PathMoveTo.svg: Added.
        * UserInterface/Images/PathRect.svg: Added.
        * UserInterface/Images/Pixels.svg: Added.
        * UserInterface/Images/PointInPath.svg: Added.
        * UserInterface/Images/PointInStroke.svg: Added.
        * UserInterface/Images/Shadow.svg: Added.
        * UserInterface/Images/Stroke.svg: Added.
        * UserInterface/Images/Text.svg: Added.
        * UserInterface/Images/Transform.svg: Added.
        New icons for Canvas2D operations.

        * UserInterface/Main.html:
        New file.

        * UserInterface/Views/GeneralTreeElement.js:
        (WI.GeneralTreeElement.prototype.customTitleTooltip):
        (WI.GeneralTreeElement.prototype._updateTitleTooltip):
        Allow derived classes to supply a custom tooltip, when
        simply getting the title element text is insufficient.

        * UserInterface/Views/RecordingActionTreeElement.css: Added.
        (.item.action.initial-state > .icon):
        (.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon):
        (.item.action:not(.initial-state)::before):
        (body[dir=ltr] .item.action::before):
        (body[dir=rtl] .item.action::before):
        (.tree-outline:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon):
        (body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
        (.tree-outline[data-indent="1"] .item.action::before,):
        (.tree-outline[data-indent="3"] .item.action::before):
        (.tree-outline[data-indent="4"] .item.action::before):
        (.tree-outline[data-indent="5"] .item.action::before):
        (.tree-outline[data-indent="6"] .item.action::before):
        (.tree-outline[data-indent="7"] .item.action::before):
        (body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
        (body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
        (.item.action.visual:not(.selected, .invalid)):
        (.item.action.attribute > .titles .parameters::before):
        (.item.action:not(.attribute) > .titles .parameters::before):
        (.item.action:not(.attribute) > .titles .parameters::after):
        (.item.action > .titles .parameter:not(:last-child)::after):
        (.item.action:not(.selected) > .titles .parameter.swizzled):
        (.item.action.composite > .icon):
        (.item.action.fill > .icon):
        (.item.action.image > .icon):
        (.item.action.line-style > .icon):
        (.item.action.shadow > .icon):
        (.item.action.stroke > .icon):
        (.item.action.style > .icon):
        (.item.action.text > .icon):
        (.item.action.transform > .icon):
        (.item.action.arc > .icon):
        (.item.action.clip > .icon):
        (.item.action.curve > .icon):
        (.item.action.ellipse > .icon):
        (.item.action.line-to > .icon):
        (.item.action.move-to > .icon):
        (.item.action.point-in-path > .icon):
        (.item.action.point-in-stroke > .icon):
        (.item.action.rect > .icon):
        (.item.action.restore > .icon):
        (.item.action.save > .icon):
        (.item.action.invalid > .icon):

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement):
        (WI.RecordingActionTreeElement._generateDOM.createParameterElement):
        (WI.RecordingActionTreeElement._generateDOM):
        (WI.RecordingActionTreeElement._getClassNames):
        Broke out into its own helper, to simplify _generateDOM which had
        too many responsibilities.

        (WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
        (WI.RecordingActionTreeElement._classNameForAction):
        Get an icon for the action "type". Actions are grouped by similar
        operations. For example, lineCap, lineDash, lineJoin, lineWidth, and
        miterLimit are assigned the icon LineStyle.svg.

        (WI.RecordingActionTreeElement.prototype.customTitleTooltip):

        * UserInterface/Views/RecordingNavigationSidebarPanel.css:
        (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .icon):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
        (body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
        (body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.function > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon): Deleted.
        (body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
        (body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled): Deleted.
        (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)): Deleted.
        * UserInterface/Views/RecordingNavigationSidebarPanel.js:

2017-09-08  Joseph Pecoraro  <pecoraro@apple.com>

        Uncaught Exception: TypeError: this._heapSnapshot.addEventListener is not a function.
        https://bugs.webkit.org/show_bug.cgi?id=176633

        Reviewed by Michael Saboff.

        * UserInterface/Proxies/HeapSnapshotDiffProxy.js:
        (WI.HeapSnapshotDiffProxy):
        This class has listeners of another object's events. It should extend WI.Object.

2017-09-08  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas: changes to currentX/currentY aren't highlighted in the details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=176569

        Reviewed by Matt Baker.

        * UserInterface/Models/RecordingAction.js:
        Add entries to WI.RecordingAction._stateModifiers for each path function.

2017-09-07  Joseph Pecoraro  <pecoraro@apple.com>

        Augmented Inspector: Provide a way to inspect a DOM Node (DOM.inspect)
        https://bugs.webkit.org/show_bug.cgi?id=176563
        <rdar://problem/19639583>

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        Always create the element search toolbar icon. Only show it if the DOM domain
        is available. With augmented agents the DOM domain may be activated later.

        * UserInterface/Protocol/DOMObserver.js:
        (WI.DOMObserver.prototype.inspect):
        Select the node in the DOM tree outline.

2017-09-07  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Canvas RecordingAction tree outline virtualization is broken
        https://bugs.webkit.org/show_bug.cgi?id=176547

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TreeOutline.js:
        (WI.TreeOutline.prototype.updateVirtualizedElements.walk):
        (WI.TreeOutline.prototype.updateVirtualizedElements):
        Pass the current `count` to each recursive call of `walk` so that the cumulative index of a
        TreeElement in any given sub-tree is correct.
        Drive-by: if there is a focused TreeElement when scrolling, only change the current
        `scrollTop` if it is not already visible. Also rewrote some loops for clarity.

2017-09-07  Devin Rousso  <webkit@devinrousso.com>

        Unreviewed, change my copyright email.

        * Scripts/copy-user-interface-resources.pl:
        * UserInterface/Controllers/CodeMirrorSpringEditingController.js:
        * UserInterface/Images/AnimationPlayStatePaused.svg:
        * UserInterface/Images/AnimationPlayStateRunning.svg:
        * UserInterface/Images/CSSVariable.svg:
        * UserInterface/Images/ListStylePositionInside.svg:
        * UserInterface/Images/ListStylePositionOutside.svg:
        * UserInterface/Images/StyleRule.svg:
        * UserInterface/Images/StyleRulePseudoElement.svg:
        * UserInterface/Models/Collection.js:
        * UserInterface/Models/ResourceCollection.js:
        * UserInterface/Views/CollectionContentView.css:
        * UserInterface/Views/CollectionContentView.js:
        * UserInterface/Views/ContextMenuUtilities.js:
        * UserInterface/Views/GeneralTabBarItem.js:
        * UserInterface/Views/GradientEditor.css:
        * UserInterface/Views/GradientEditor.js:
        * UserInterface/Views/InlineSwatch.css:
        * UserInterface/Views/InlineSwatch.js:
        * UserInterface/Views/PinnedTabBarItem.js:
        * UserInterface/Views/SettingsTabContentView.css:
        * UserInterface/Views/SettingsTabContentView.js:
        * UserInterface/Views/SpringEditor.css:
        * UserInterface/Views/SpringEditor.js:
        * UserInterface/Views/StyleRuleIcons.css:
        * UserInterface/Views/TabBarItem.js:
        * UserInterface/Views/TitleView.css:
        * UserInterface/Views/TitleView.js:
        * UserInterface/Views/VisualStyleBackgroundPicker.css:
        * UserInterface/Views/VisualStyleBackgroundPicker.js:
        * UserInterface/Views/VisualStyleBasicInput.js:

2017-09-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Relax the maximum sidebar width
        https://bugs.webkit.org/show_bug.cgi?id=175808
        <rdar://problem/34005339>

        Reviewed by Devin Rousso.

        This patch introduces a constant, `minimumContentBrowserWidth`, which
        constrains the maximum width of either sidebar:

        maxSidebarWidth = window.innerWidth - minimumContentBrowserWidth - otherSidebarWidth

        A value of 100px for `minimumContentBrowserWidth` leaves enough space for
        three NavigationItems at their minimum width (32px), with a few pixels
        left over for good measure. For most tabs this will ensure that the buttons
        for showing the sidebars will be visible, along with an addition button.

        * UserInterface/Base/Main.js:
        * UserInterface/Views/Sidebar.js:
        (WI.Sidebar.prototype.get maximumWidth):

2017-09-06  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Support overloaded CanvasRenderingContext2D actions with identical parameter counts
        https://bugs.webkit.org/show_bug.cgi?id=176178
        <rdar://problem/34192229>

        Reviewed by Matt Baker.

        * UserInterface/Models/Recording.js:
        (WI.Recording.displayNameForSwizzleType):
        (WI.Recording.prototype.swizzle):
        Replace WI.Recording.Swizzle with an object of swizzle type keys to int values. This object
        matches the values in WebCore::RecordingSwizzleTypes.h.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction):
        (WI.RecordingAction.fromPayload):
        (WI.RecordingAction.prototype.get swizzleTypes):
        (WI.RecordingAction.prototype.swizzle):
        (WI.RecordingAction.prototype.toJSON):
        (WI.RecordingAction.prototype.parameterSwizzleTypeForTypeAtIndex): Deleted.
        Replace WI.RecordingAction._parameterSwizzleTypeForTypeAtIndex with an array of parameter
        types sent in the payload. This gives more control over the swizzling to the JSON, but also
        simplifies the way we regenerate the data in the frontend.

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._generateDOM):

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView.prototype._generateContentCanvas2D):
        (WI.RecordingContentView.prototype._applyAction):

        * UserInterface/Views/RecordingNavigationSidebarPanel.css:
        (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)):
        (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles .name,): Deleted.

2017-09-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: ⌘E and ⌘G do not work in main content area when quick console drawer is open
        https://bugs.webkit.org/show_bug.cgi?id=176433

        Reviewed by Brian Burg.

        Make the ⌘E and ⌘G keyboard shortcuts behave more like the global ⌘K clear shortcut.
        Instead of keeping them inside of FindBanner, and enabling/disabling them when they
        make sense to apply, we make a single global instance of the keyboard shortcut and
        apply it to whatever content view / content browser is active. This avoids conflicts
        in situations where there are two ContentViews that are visible and each can handle
        the keyboard shortcut.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        New keyboard shortcuts.

        (WI._populateFind):
        (WI._findNext):
        (WI._findPrevious):
        Perform the shortcut on the active content view or content browser.

        * UserInterface/Views/ContentBrowser.js:
        (WI.ContentBrowser.prototype.shown):
        (WI.ContentBrowser.prototype.hidden):
        (WI.ContentBrowser.prototype.handlePopulateFindShortcut):
        (WI.ContentBrowser.prototype.handleFindNextShortcut):
        (WI.ContentBrowser.prototype.handleFindPreviousShortcut):
        (WI.ContentBrowser.prototype.findBannerSearchQueryForSelection): Deleted.
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView.prototype.handlePopulateFindShortcut):
        (WI.LogContentView.prototype.handleFindNextShortcut):
        (WI.LogContentView.prototype.handleFindPreviousShortcut):
        ContentBrowser and LogContentView (the only content view with a custom find banner)
        now each handle the global keyboard shortcut handlers to do the right thing for
        their respective cases.

        * UserInterface/Views/FindBanner.js:
        (WI.FindBanner.prototype.enableKeyboardShortcuts): Deleted.
        (WI.FindBanner.prototype.disableKeyboardShortcuts): Deleted.
        (WI.FindBanner.prototype._populateSearchQueryFromSelection): Deleted.
        Move keyboard shortcut handling up to Main.js to be global.

        * UserInterface/Views/ContentView.js:
        (WI.ContentView.prototype.searchQueryWithSelection):
        Default implementation should grab the selected text from the selection.
        Previously shortcut selections only worked for selections in text editors.

2017-09-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: display "Inherited From" section headers
        https://bugs.webkit.org/show_bug.cgi?id=176033
        <rdar://problem/34116930>

        Reviewed by Devin Rousso.

        Compared to the old styles sidebar, the new "Inherited From" sections are more compact.
        One of the goals of the styles redesign is to make it fit more data vertically.

        The contrast is inceased. The text is darker while the background stayed the same.

        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
        (.spreadsheet-style-panel .section-inherited):
        (.spreadsheet-style-panel .section-inherited .node-link):
        (.spreadsheet-style-panel .section-inherited .node-link:hover):
        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
        (WI.SpreadsheetRulesStyleDetailsPanel):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        Don't show two identical "Inherited From" sections.

2017-09-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Layout flashing for internal View.prototype.layout
        https://bugs.webkit.org/show_bug.cgi?id=176389

        Reviewed by Matt Baker.

        Add a checkbox to Settings (Debug panel) to draw an orange outline around an element every time View.prototype.layout is called.
        This is similar to paint flashing, except this is only for View.prototype.layout.

        * UserInterface/Base/Setting.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WI.SettingsTabContentView.prototype._createDebugSettingsView):
        * UserInterface/Views/View.js:
        (WI.View.prototype._layoutSubtree):
        (WI.View.prototype._drawLayoutFlashingOutline):

2017-09-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles Redesign: hook up real data to spreadsheet style editor
        https://bugs.webkit.org/show_bug.cgi?id=175343
        <rdar://problem/33784793>

        Reviewed by Devin Rousso.

        Replace static HTML added in <https://webkit.org/b/174838> with actual data.

        Addressed in this patch:
        - CSS rules can be copied.
        - Source links work as expected.
        - Nonmatching selectors are grayed out.

        Known limitations:
        - Neither CSS selectors nor CSS properties are editable.
        - "Inherited from" and media query section headers are missing.
        - No syntax highlighting of complex CSS values, e.g. hsl(0, 0%, 70%).

        * UserInterface/Main.html:
        * UserInterface/Models/CSSStyleDeclaration.js:
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WI.CSSStyleDeclarationTextEditor):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WI.CSSStyleDetailsSidebarPanel):
        * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js: Removed.
        Rename RulesStyleSpreadsheetDetailsPanel to SpreadsheetRulesStyleDetailsPanel. All files related to the spreadsheet editor start with "Spreadsheet" now.

        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: Added.
        (.spreadsheet-style-declaration-editor):
        (.spreadsheet-style-declaration-editor .name):
        (.spreadsheet-style-declaration-editor .value):
        (.spreadsheet-style-declaration-editor.no-properties):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: Added.
        (WI.SpreadsheetCSSStyleDeclarationEditor):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get delegate):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set delegate):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get style):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
        Similar condition is commonly used in CSSStyleDeclarationTextEditor. Abstact it out to its own method.

        (WI.SpreadsheetCSSStyleDeclarationEditor.prototype._renderProperty):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: Copied from Source/WebInspectorUI/UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css.
        (.spreadsheet-css-declaration):
        (.spreadsheet-css-declaration .origin):
        (.spreadsheet-css-declaration.locked .origin::after):
        (.spreadsheet-css-declaration .origin .go-to-link):
        (.spreadsheet-css-declaration .origin .go-to-link:hover):
        (.spreadsheet-css-declaration .styles-source):
        (.spreadsheet-css-declaration .selector.style-attribute):
        (.spreadsheet-css-declaration .selector > span):
        (.spreadsheet-css-declaration .selector > .matched):
        (.spreadsheet-css-declaration .properties):
        (.spreadsheet-css-declaration.locked):
        (.spreadsheet-css-declaration .locked-icon):
        * UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: Added.
        (WI.SpreadsheetCSSStyleDeclarationSection):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get element):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get style):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get locked):
        (WI.SpreadsheetCSSStyleDeclarationSection.prototype.get selectorEditable):
        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css.
        * UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: Added.
        (WI.SpreadsheetRulesStyleDetailsPanel):
        (WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
        * UserInterface/Views/StyleDetailsPanel.js:
        (WI.StyleDetailsPanel.prototype.filterDidChange):

        * UserInterface/Views/View.js:
        (WI.View.prototype.removeAllSubviews):
        Add a method to remove all subviews more efficiently.

2017-08-29  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Critical content browser toolbar buttons are hidden at narrow widths
        https://bugs.webkit.org/show_bug.cgi?id=175999

        Reviewed by Devin Rousso.

        This patch adds a VisibilityPriority concept to NavigationItems. If a
        NavigationBar cannot fit all of its items in the available space, items
        are hidden to make room, starting with the lowest priority item. Consecutive
        dividers are then collapsed, as well as leading and trailing dividers.

        * UserInterface/Main.html:
        New file.

        * UserInterface/Views/CanvasContentView.js:
        (WI.CanvasContentView):
        * UserInterface/Views/ConsoleDrawer.js:
        (WI.ConsoleDrawer):
        * UserInterface/Views/ContentBrowser.js:
        (WI.ContentBrowser):
        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WI.ContentBrowserTabContentView):
        * UserInterface/Views/DOMTreeContentView.js:
        (WI.DOMTreeContentView):
        Set `High` and `Low` priorities, and group the back/forward buttons.

        * UserInterface/Views/GroupNavigationItem.js: Added.
        (WI.GroupNavigationItem):
        (WI.GroupNavigationItem.prototype.get navigationItems):
        (WI.GroupNavigationItem.prototype.get minimumWidth):
        (WI.GroupNavigationItem.prototype.updateLayout):
        (WI.GroupNavigationItem.prototype.didAttach):
        (WI.GroupNavigationItem.prototype.didDetach):
        NavigationItem groups. Grouped items are shown/hidden together.

        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WI.HierarchicalPathNavigationItem.prototype.updateLayout):
        * UserInterface/Views/ImageResourceContentView.js:
        (WI.ImageResourceContentView):
        * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
        (WI.IndexedDatabaseObjectStoreContentView):
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView):
        Set `High` and `Low` priorities.

        * UserInterface/Views/NavigationBar.css:
        (.navigation-bar .item.force-hidden):
        New hidden class, which must be tracked separately from ".hidden".
        The former is an implementation detail of NavigationBar, while the
        latter is set by the client.

        * UserInterface/Views/NavigationBar.js:
        (WI.NavigationBar.prototype.insertNavigationItem):
        (WI.NavigationBar.prototype.removeNavigationItem):
        (WI.NavigationBar.prototype.findNavigationItem.matchingSelfOrChild):
        (WI.NavigationBar.prototype.findNavigationItem):
        (WI.NavigationBar.prototype.layout.forceItemHidden):
        (WI.NavigationBar.prototype.layout.isDivider):
        (WI.NavigationBar.prototype.layout.calculateVisibleItemWidth):
        (WI.NavigationBar.prototype.layout):
        (WI.NavigationBar.prototype._calculateMinimumWidth):
        (WI.NavigationBar.prototype.get _visibleNavigationItems):
        (WI.NavigationBar):

        * UserInterface/Views/NavigationItem.js:
        Add support for visibility priority, an integer value that determines the
        order in which items are hidden when the NavigationBar becomes too narrow
        to fit all of items child items. NavigationIte3m defines constants for
        Low, Normal (the default), and High priority.

        (WI.NavigationItem):
        (WI.NavigationItem.prototype.get minimumWidth):
        (WI.NavigationItem.prototype.get width):
        (WI.NavigationItem.prototype.get visibilityPriority):
        (WI.NavigationItem.prototype.set visibilityPriority):
        (WI.NavigationItem.prototype.updateLayout):
        (WI.NavigationItem.prototype.didAttach):
        (WI.NavigationItem.prototype.didDetach):
        Encapsulate the setting of the parent NavigationBar. Needed so that
        GroupNavigationItem can forward this action to its children.

        * UserInterface/Views/NetworkGridContentView.js:
        (WI.NetworkGridContentView):
        * UserInterface/Views/RadioButtonNavigationItem.js:
        (WI.RadioButtonNavigationItem.prototype.updateLayout):
        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):
        * UserInterface/Views/ScriptContentView.js:
        (WI.ScriptContentView):
        * UserInterface/Views/TextContentView.js:
        (WI.TextContentView):
        * UserInterface/Views/TextResourceContentView.js:
        (WI.TextResourceContentView):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WI.TimelineRecordingContentView):
        * UserInterface/Views/TimelineTabContentView.js:
        (WI.TimelineTabContentView):
        Set `High` and `Low` priorities, and group Timeline view mode buttons.

2017-08-29  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(r220235): Web Inspector: Global search should not happen incrementally
        https://bugs.webkit.org/show_bug.cgi?id=176063

        Reviewed by Devin Rousso.

        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        * UserInterface/Views/SearchBar.js:
        (WI.SearchBar):
        (WI.SearchBar.prototype._handleKeydownEvent):
        Remove delegate and simplify setting incremental.

2017-08-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Convert all methods in Utilities.js to ECMAScript 2015 shorthand syntax
        https://bugs.webkit.org/show_bug.cgi?id=176067

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Utilities.js:
        (get return):
        (addStringToken):
        (prettyFunctionName):
        (warn):
        (error):
        (isEmptyObject):
        (isEnterKey):
        (resolveDotsInPath):
        (parseMIMEType):
        (simpleGlobStringToRegExp):
        (defaultComparator):
        (get Object):
        (appendWebInspectorSourceURL):
        (appendWebInspectorConsoleEvaluationSourceURL):
        (isWebInspectorInternalScript):
        (isWebInspectorConsoleEvaluationScript):
        (isWebKitInjectedScript):
        (isWebKitInternalScript):
        (isFunctionStringNativeCode):
        (isTextLikelyMinified):
        (doubleQuotedString):
        (insertionIndexForObjectInListSortedByFunction):
        (insertObjectIntoSortedArray):
        (decodeBase64ToBlob):

2017-08-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Optimize View.prototype.removeSubview
        https://bugs.webkit.org/show_bug.cgi?id=176041

        Reviewed by Matt Baker.

        Look up a subview in an array only once, not twice.

        * UserInterface/Base/Utilities.js:
        (Array.prototype.removeAll):
        (Array.prototype.remove):
        Split Array.propotype.remove(value, onlyFirst) into Array.propotype.removeAll(value) and
        Array.propotype.remove(value).

        * UserInterface/Controllers/DebuggerManager.js:
        (WI.DebuggerManager.prototype._debuggerBreakpointOptions):
        * UserInterface/Views/ContentViewContainer.js:
        (WI.ContentViewContainer.prototype._clearTombstonesForContentView):
        (WI.ContentViewContainer.prototype._disassociateFromContentView):
        * UserInterface/Views/View.js:
        (WI.View.prototype.removeSubview):

2017-08-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove some unused DataGrid code
        https://bugs.webkit.org/show_bug.cgi?id=176029

        Reviewed by Matt Baker.

        * UserInterface/Views/DataGrid.js:
        (WI.DataGrid.prototype.get copyTextDelimiter):
        (WI.DataGrid.prototype.set copyTextDelimiter):
        (WI.DataGrid.prototype.resizerDragging):
        (WI.DataGrid.prototype.columnWidthsMap): Deleted.
        (WI.DataGrid.prototype.applyColumnWidthsMap): Deleted.
        (WI.DataGrid.prototype.get resizeMethod): Deleted.
        (WI.DataGrid.prototype.set resizeMethod): Deleted.

2017-08-27  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Record actions performed on WebGLRenderingContext
        https://bugs.webkit.org/show_bug.cgi?id=174483
        <rdar://problem/34040722>

        Reviewed by Matt Baker.

        * UserInterface/Models/Recording.js:
        (WI.Recording):
        (WI.Recording.fromPayload):
        (WI.Recording.prototype.swizzle):
        Add swizzle types for WebGL parameters.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction):
        (WI.RecordingAction.fromPayload):
        (WI.RecordingAction.prototype.get snapshot):
        (WI.RecordingAction.prototype.swizzle):
        (WI.RecordingAction.prototype.toJSON):
        Include an optional fourth parameter `snapshot` that will be sent for visual actions when
        recording WebGL canvas contexts.

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):
        (WI.RecordingContentView.prototype.get navigationItems):
        (WI.RecordingContentView.prototype.updateActionIndex):
        (WI.RecordingContentView.prototype.shown):
        (WI.RecordingContentView.prototype._generateContentCanvasWebGL):
        * UserInterface/Views/RecordingContentView.css:
        (.content-view:not(.tab).recording :matches(img, canvas)):
        (.content-view:not(.tab).recording canvas): Deleted.
        Instead of regenerating the canvas context in the WebInspector frontend, just display the
        snapshot image for the last visual action.

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

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement._generateDOM):

2017-08-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add filter for draw actions in Recordings
        https://bugs.webkit.org/show_bug.cgi?id=175448
        <rdar://problem/34040764>

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        
        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel.prototype.initialLayout):
        (WI.RecordingNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        Add button to filter visual actions.
        Drive-by fix: ensure that frame folders are still visible when filtering.

        * UserInterface/Images/Paint.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/PaintFlashing.svg.
        * UserInterface/Images/gtk/Paint.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/PaintFlashing.svg.
        * UserInterface/Views/DOMTreeContentView.js:
        (WI.DOMTreeContentView):
        Rename PaintFlashing.svg to Paint.svg.

2017-08-24  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Create experimental Layers tab
        https://bugs.webkit.org/show_bug.cgi?id=175728

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        * UserInterface/Base/Setting.js:
        * UserInterface/Images/Layers.svg: Added.
        * UserInterface/Main.html:
        * UserInterface/Views/Layers3DContentView.js: Added.
        * UserInterface/Views/LayersTabContentView.js: Added.
        * UserInterface/Views/SettingsTabContentView.js:

2017-08-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Table grid shouldn't show behind empty state
        https://bugs.webkit.org/show_bug.cgi?id=175943

        Reviewed by Brian Burg.

        * UserInterface/Views/RecordingNavigationSidebarPanel.css:
        (.sidebar > .panel.navigation.recording > .content > .tree-outline):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)):
        Only apply the background when the TreeOutline has children.

2017-08-23  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Make lock icon crispier
        https://bugs.webkit.org/show_bug.cgi?id=175868

        Reviewed by Matt Baker.

        * UserInterface/Images/Locked.svg:

2017-08-22  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: provide way for ShaderPrograms to be enabled/disabled
        https://bugs.webkit.org/show_bug.cgi?id=175400

        Reviewed by Matt Baker.

        Adds a status element to ShaderProgramTreeElement that, when clicked, will toggle the
        disabled state of the corresponding ShaderProgram. Disabled shader programs will not draw
        anything to the context.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:

        * UserInterface/Models/ShaderProgram.js:
        (WI.ShaderProgram):
        (WI.ShaderProgram.prototype.get disabled):
        (WI.ShaderProgram.prototype.toggleDisabled):

        * UserInterface/Views/ShaderProgramTreeElement.js:
        (WI.ShaderProgramTreeElement):
        (WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
        (WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked):
        * UserInterface/Views/ShaderProgramTreeElement.css: Added.
        (.item.shader-program .status > img):
        (.item.shader-program:not(:hover, .selected, .disabled) .status > img):
        (.tree-outline:matches(:focus, .force-focus) .item.shader-program.selected .status > img):
        (.item.shader-program.disabled > *):

2017-08-21  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Can't copy text from "View variable value" popover in Styles sidebar
        https://bugs.webkit.org/show_bug.cgi?id=175758

        Reviewed by Matt Baker.

        * UserInterface/Views/InlineSwatch.js:
        (WI.InlineSwatch.prototype._swatchElementClicked):
        Change CodeMirror readOnly from "nocursor" to true. The former prevents the editor from
        being focused during selection, therefore preventing the content from being copied.

2017-08-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: create better icon for Canvas Path navigation item
        https://bugs.webkit.org/show_bug.cgi?id=175274

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/Path.svg: Added.
        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):

2017-08-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: replace "Enter Class Name" with "Add New Class"
        https://bugs.webkit.org/show_bug.cgi?id=175686

        Reviewed by Matt Baker.

        "Enter Class Name" isn't very descriptive. It doesn't suggest what's going to happen after you enter a class name.

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

2017-08-17  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Ensure three.js gets minified properly for production builds.
        https://bugs.webkit.org/show_bug.cgi?id=175452

        Reviewed by Brian Burg.

        * Scripts/copy-user-interface-resources.pl:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove Proximity Events and related code
        https://bugs.webkit.org/show_bug.cgi?id=175545

        Reviewed by Daniel Bates.

        No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
        and other related code.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WI.ScriptTimelineRecord.EventType.displayName):

2017-08-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Remove text-shadow and gradient backgrounds
        https://bugs.webkit.org/show_bug.cgi?id=175430

        Reviewed by Brian Burg.

        Inspector should more closely match flat system look. Remove text-shadow
        embossing and replace linear gradients in popover backgrounds and selected
        tree item background color.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
        * UserInterface/Views/CompletionSuggestionsView.css:
        (.completion-suggestions-container:not(:active) > .item.selected,):
        * UserInterface/Views/DebuggerDashboardView.css:
        (.toolbar .dashboard.debugger):
        * UserInterface/Views/HierarchicalPathComponent.css:
        (.hierarchical-path-component > .title):
        * UserInterface/Views/Main.css:
        (.bouncy-highlight):
        * UserInterface/Views/NavigationSidebarPanel.css:
        (.sidebar > .panel.navigation > .content .empty-content-placeholder > .message):
        * UserInterface/Views/Popover.js:
        (WI.Popover.prototype._drawBackground):
        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.css:
        (.sidebar > .details.recording-trace > .content > .no-trace-data > .message):
        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules .label):
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results > .no-filter-results-message):
        (@media (-webkit-min-device-pixel-ratio: 2)): Deleted.
        (.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label.filter-matching-label,): Deleted.
        * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css:
        (.style-spreadsheet .inherited):
        * UserInterface/Views/TimelineDataGrid.css:
        (.tree-outline.timeline-data-grid .item:hover):
        * UserInterface/Views/TimelineDataGrid.js:
        (WI.TimelineDataGrid.prototype._createPopoverContent):
        * UserInterface/Views/Variables.css:
        (:root):

2017-08-11  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Clicking on suggestion hint should apply it, not dismiss
        https://bugs.webkit.org/show_bug.cgi?id=175409

        Reviewed by Matt Baker.

        Make clicking on the suggestion hint apply the completion, and place the text caret after it.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WI.CodeMirrorCompletionController.prototype._createCompletionHintMarker):

2017-08-11  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: Update the filter icon to match Xcode
        https://bugs.webkit.org/show_bug.cgi?id=175458
        <rdar://problem/33838660>

        Reviewed by Matt Baker.

        * UserInterface/Images/FilterFieldGlyph.svg:
        Half-pixel transform is necessary for a cleaner rasterisation.

        * UserInterface/Views/FilterBar.css:
        (.filter-bar > input[type="search"]::-webkit-search-decoration):        
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
        ::-webkit-search-decoration is a flexbox item. Remove `vertical-align: bottom`,
        since it didn't do anything for it.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
        * UserInterface/Views/FilterBar.js:
        (WI.FilterBar):        
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WI.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        * UserInterface/Views/LogContentView.js:
        (WI.LogContentView):
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WI.NetworkSidebarPanel):
        * UserInterface/Views/RecordingNavigationSidebarPanel.js:
        (WI.RecordingNavigationSidebarPanel):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WI.SearchSidebarPanel):
        * UserInterface/Views/StorageSidebarPanel.js:
        (WI.StorageSidebarPanel):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WI.TimelineRecordingContentView):
        * Localizations/en.lproj/localizedStrings.js:        
        Replace placeholder text for all filter fields with "Filter".

2017-08-10  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Add three.js in preparation for layer visualization.
        https://bugs.webkit.org/show_bug.cgi?id=174798

        Reviewed by Brian Burg.

        * UserInterface/External/three.js/LICENSE: Added.
        * UserInterface/External/three.js/OrbitControls.js: Added.
        * UserInterface/External/three.js/three.js: Added.

2017-08-09  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: Add pre-populated data to spreadsheet-style view
        https://bugs.webkit.org/show_bug.cgi?id=174838
        <rdar://problem/33523220>

        Reviewed by Matt Baker.

        This patch adds static content to the experimental RulesStyleSpreadsheetDetailsPanel.
        The static content will be replaced with actual data in the follow up patches.

        * UserInterface/Main.html:
        * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css: Added.
        (.style-spreadsheet .style-rule):
        (.style-spreadsheet .selector-line):
        (.style-spreadsheet .selector):
        (.style-spreadsheet :matches(.selector .matched, .selector:focus)):
        (.style-spreadsheet .name):
        (.style-spreadsheet .value):
        (.style-spreadsheet :matches(.selector, .name, .value)):
        (.style-spreadsheet :matches(.selector, .name, .value):focus):
        (.style-spreadsheet .selector-inline):
        (.style-spreadsheet .property):
        (.style-spreadsheet .property-disabled,):
        (.style-spreadsheet .property-disabled :matches(.name, .value)):
        (.style-spreadsheet .styles-source):
        (.style-spreadsheet :matches(a, .node-link)):
        (.style-spreadsheet :matches(a, .node-link):hover):
        (.style-spreadsheet .inherited):
        (.style-spreadsheet .declarations):
        (.style-spreadsheet input[type="checkbox"]):
        (.style-spreadsheet input[type="checkbox"]:not(:checked)):
        (.style-spreadsheet .declarations:hover input[type="checkbox"]):
        * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js:

2017-08-08  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: support editing WebGL shaders
        https://bugs.webkit.org/show_bug.cgi?id=124211
        <rdar://problem/15448958>

        Reviewed by Matt Baker.

        * UserInterface/Models/ShaderProgram.js:
        (WI.ShaderProgram.prototype.updateVertexShader):
        (WI.ShaderProgram.prototype.updateFragmentShader):
        (WI.ShaderProgram.prototype._updateShader):

        * UserInterface/Views/ShaderProgramContentView.js:
        (WI.ShaderProgramContentView):
        (WI.ShaderProgramContentView.prototype._contentDidChange):

2017-08-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Preview Canvas path when viewing a recording
        https://bugs.webkit.org/show_bug.cgi?id=174967

        Reviewed by Brian Burg.

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

        * UserInterface/Views/RecordingContentView.js:
        (WI.RecordingContentView):
        (WI.RecordingContentView.supportsCanvasPathDebugging):
        (WI.RecordingContentView.prototype.get navigationItems):
        (WI.RecordingContentView.prototype.shown):
        (WI.RecordingContentView.prototype._generateContentCanvas2D):
        (WI.RecordingContentView.prototype._actionModifiesPath):
        (WI.RecordingContentView.prototype._updateCanvasPath):
        (WI.RecordingContentView.prototype._showPathButtonClicked):
        Show each segment of the current path as an overlay when the setting is enabled.
        Drive-by: fix forgotten function rename.

        * UserInterface/Views/RecordingContentView.css:
        (.content-view:not(.tab).recording canvas.path):

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
        (WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
        Show the currentX/currentY in the current state.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction.isFunctionForType):
        (WI.RecordingAction.prototype.swizzle):
        Use Sets for better performance.

2017-08-04  Devin Rousso  <drousso@apple.com>

        Web Inspector: add source view for WebGL shader programs
        https://bugs.webkit.org/show_bug.cgi?id=138593
        <rdar://problem/18936194>

        Reviewed by Matt Baker.

        Shader programs are now listed in the Resources sidebar as items within the owner Canvas
        context. When selected, the shown content view has two editors, one for the Vertex shader
        and one for the Fragment shader. These editors use CodeMirror's "clike" mode for GLSL syntax.

        * Localizations/en.lproj/localizedStrings.js:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
        * UserInterface/Main.html:

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager):
        (WI.CanvasManager.prototype.canvasRemoved):
        (WI.CanvasManager.prototype.programCreated):
        (WI.CanvasManager.prototype.programDeleted):
        (WI.CanvasManager.prototype._mainResourceDidChange):

        * UserInterface/Models/Collection.js:
        * UserInterface/Models/Canvas.js:
        (WI.Canvas.prototype.get shaderProgramCollection)

        * UserInterface/Models/ShaderProgram.js:
        (WI.ShaderProgram.prototype.requestVertexShaderSource):
        (WI.ShaderProgram.prototype.requestFragmentShaderSource):
        (WI.ShaderProgram.prototype._requestShaderSource):

        * UserInterface/Views/CanvasTreeElement.js:
        (WI.CanvasTreeElement):
        (WI.CanvasTreeElement.prototype.onattach):
        (WI.CanvasTreeElement.prototype.ondetach):
        (WI.CanvasTreeElement.prototype.onpopulate):
        (WI.CanvasTreeElement.prototype._shaderProgramAdded):
        (WI.CanvasTreeElement.prototype._shaderProgramRemoved):

        * UserInterface/Views/ShaderProgramTreeElement.js: Added.
        (WI.ShaderProgramTreeElement):

        * UserInterface/Views/ShaderProgramContentView.js: Added.
        (WI.ShaderProgramContentView):
        (WI.ShaderProgramContentView.prototype.shown):
        (WI.ShaderProgramContentView.prototype.hidden):
        (WI.ShaderProgramContentView.prototype.closed):
        (WI.ShaderProgramContentView.prototype.get supportsSave):
        (WI.ShaderProgramContentView.prototype.get saveData):
        (WI.ShaderProgramContentView.prototype.get supportsSearch):
        (WI.ShaderProgramContentView.prototype.get numberOfSearchResults):
        (WI.ShaderProgramContentView.prototype.get hasPerformedSearch):
        (WI.ShaderProgramContentView.prototype.set automaticallyRevealFirstSearchResult):
        (WI.ShaderProgramContentView.prototype.performSearch):
        (WI.ShaderProgramContentView.prototype.searchCleared):
        (WI.ShaderProgramContentView.prototype.searchQueryWithSelection):
        (WI.ShaderProgramContentView.prototype.revealPreviousSearchResult):
        (WI.ShaderProgramContentView.prototype.revealNextSearchResult):
        (WI.ShaderProgramContentView.prototype.revealPosition):
        (WI.ShaderProgramContentView.prototype._editorFocused):
        (WI.ShaderProgramContentView.prototype._numberOfSearchResultsDidChange):
        * UserInterface/Views/ShaderProgramContentView.css: Added.
        (.content-view.shader-program > .text-editor.shader):
        (body[dir=ltr] .content-view.shader-program > .text-editor.shader.vertex,):
        (body[dir=ltr] .content-view.shader-program > .text-editor.shader.fragment,):
        (body[dir=ltr] .content-view.shader-program > .text-editor.shader + .text-editor.shader):
        (body[dir=rtl] .content-view.shader-program > .text-editor.shader + .text-editor.shader):
        (.content-view.shader-program > .text-editor.shader > .type-title):
        (.content-view.shader-program > .text-editor.shader > .CodeMirror):

        * UserInterface/Images/DocumentGL.png: Added.
        * UserInterface/Images/DocumentGL@2x.png: Added.
        * UserInterface/Views/ResourceIcons.css:
        (.shader-program .icon):

        * UserInterface/Base/Main.js:
        * UserInterface/Views/ContentView.js:
        (WI.ContentView.createFromRepresentedObject):
        (WI.ContentView.isViewable):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
        (WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
        Plumbing for displaying ShaderProgram content.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor):
        (WebInspector.TextEditor.prototype._editorFocused):

        * Scripts/update-codemirror-resources.rb:
        * UserInterface/External/CodeMirror/clike.js: Added.
        Add C-like mode for highlighting GLSL.

2017-08-03  Joseph Pecoraro  <pecoraro@apple.com>

        JSContext Inspector: Scripts sometimes do not show in resources tab
        https://bugs.webkit.org/show_bug.cgi?id=175153
        <rdar://problem/33708683>

        Reviewed by Matt Baker.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WI.ResourceSidebarPanel.prototype.initialLayout):
        When the ResourceSidebar is lazily created, be sure to add any scripts
        to the sidebar that are not backed by Resources.

        (WI.ResourceSidebarPanel.prototype._scriptWasAdded):
        (WI.ResourceSidebarPanel.prototype._addScript):
        Extract so it can be used outside of an event handler.

2017-08-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: add button to open Inspector^2
        https://bugs.webkit.org/show_bug.cgi?id=175108

        Reviewed by Brian Burg.

        * UserInterface/Debug/Bootstrap.js:
        (updateDebugUI):
        (WI.runBootstrapOperations):

        * UserInterface/Views/ButtonToolbarItem.js:
        (WI.ButtonToolbarItem):
        (WI.ButtonToolbarItem.prototype.get label): Deleted.
        (WI.ButtonToolbarItem.prototype.set label): Deleted.
        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button):
        (.toolbar .item.button:not(.disabled):active):
        (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
        (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
        (.toolbar .item.button > .glyph):
        (.toolbar .item.button:not(.disabled):active > .glyph): Deleted.
        (.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated) > .glyph): Deleted.
        (.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated) > .glyph): Deleted.
        (.toolbar .item.button > .label): Deleted.
        * UserInterface/Views/ActivateButtonToolbarItem.js:
        (WI.ActivateButtonToolbarItem):
        (WI.ActivateButtonToolbarItem.prototype.get label): Deleted.
        (WI.ActivateButtonToolbarItem.prototype.set label): Deleted.
        * UserInterface/Base/Main.js:
        (WI.contentLoaded):
        Remove unused `label` parameter from Toolbar objects.

2017-08-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Instrument WebGLProgram created/deleted
        https://bugs.webkit.org/show_bug.cgi?id=175059

        Reviewed by Devin Rousso.

        This patch adds frontend support for shader program instrumentation.
        The frontend creates a ShaderProgram model object for each WebGLProgram.
        Since only canvases with a WebGL context have programs, the Canvas model
        object does not contain any logic specific to programs. CanvasManager
        dispatches program added/removed events, and the parent Canvas can be
        accessed from ShaderProgram but not the other way around.

        * UserInterface/Controllers/CanvasManager.js:
        (WI.CanvasManager):
        (WI.CanvasManager.prototype.get shaderPrograms):
        (WI.CanvasManager.prototype.canvasRemoved):
        (WI.CanvasManager.prototype.programCreated):
        (WI.CanvasManager.prototype.programDeleted):
        (WI.CanvasManager.prototype._mainResourceDidChange):
        (WI.CanvasManager.prototype._dispatchShaderProgramRemoved):

        * UserInterface/Main.html:

        * UserInterface/Models/Canvas.js:
        (WI.Canvas.prototype.nextShaderProgramDisplayNumber):
        (WI.Canvas):

        * UserInterface/Models/ShaderProgram.js: Added.
        (WI.ShaderProgram):
        (WI.ShaderProgram.prototype.get identifier):
        (WI.ShaderProgram.prototype.get canvas):
        (WI.ShaderProgram.prototype.get displayName):

        * UserInterface/Protocol/CanvasObserver.js:
        (WI.CanvasObserver.prototype.programCreated):
        (WI.CanvasObserver.prototype.programDeleted):
        (WI.CanvasObserver):

        * UserInterface/Test.html:

2017-08-03  Joseph Pecoraro  <pecoraro@apple.com>

        JSContext Inspector: Recording tab should not be available in New Tab picker
        https://bugs.webkit.org/show_bug.cgi?id=175155

        Reviewed by Brian Burg.

        * UserInterface/Views/RecordingTabContentView.js:
        (WI.RecordingTabContentView.isTabAllowed):
        Only allow the Recording Tab if we have a CanvasAgent.

2017-08-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: add stack trace information for each RecordingAction
        https://bugs.webkit.org/show_bug.cgi?id=174663

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:

        * UserInterface/Models/Recording.js:
        (WI.Recording.prototype.swizzle):
        Add Array type for swizzling array values.

        * UserInterface/Models/RecordingAction.js:
        (WI.RecordingAction):
        (WI.RecordingAction.fromPayload):
        (WI.RecordingAction.prototype.get trace):
        (WI.RecordingAction.prototype.swizzle):
        (WI.RecordingAction.prototype.toJSON):

        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.js: Added.
        (WI.RecordingTraceDetailsSidebarPanel):
        (WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.set recording):
        (WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):
        * UserInterface/Views/RecordingTraceDetailsSidebarPanel.css: Added.
        (.sidebar > .panel.details.recording-trace > .content > .call-frame):
        (.sidebar > .details.recording-trace > .content > .no-trace-data):
        (.sidebar > .details.recording-trace > .content > .no-trace-data > .message):

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

        * UserInterface/Views/RecordingActionTreeElement.js:
        (WI.RecordingActionTreeElement.prototype.populateContextMenu):

        * UserInterface/Views/CallFrameView.css:
        (.call-frame):
        (body[dir=ltr] .call-frame .icon):
        (body[dir=rtl] .call-frame .icon):
        Apply the same trailing margin for CallFrameView icons as TreeElement.

2017-08-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: add TreeElement virtualization for the Recording tab
        https://bugs.webkit.org/show_bug.cgi?id=174968

        Reviewed by Joseph Pecoraro.

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

        * UserInterface/Views/TreeOutline.js:
        (WI.TreeOutline):
        (WI.TreeOutline.prototype.get virtualized):
        (WI.TreeOutline.prototype.registerScrollVirtualizer):
        (WI.TreeOutline.prototype.updateVirtualizedElements.walk):
        (WI.TreeOutline.prototype.updateVirtualizedElements):
        Add spacer elements before and after the TreeOutline element that will size to ensure that
        the TreeOutline node still takes up the same amount of space after some of the TreeElements
        are removed. Whenever the scroll of the container view changes, recalculate the visible area
        and add/remove TreeElements based on whether they would be in that. This is only possible if
        every TreeElement has the same vertical height, which is given when setting up the scroll
        listener on the container view.

        * UserInterface/Views/TreeElement.js:
        (WI.TreeElement.prototype.set hidden):
        (WI.TreeElement.prototype._attach):
        (WI.TreeElement.prototype.collapse):
        (WI.TreeElement.prototype.expand):
        (WI.TreeElement.prototype.reveal):
        If the TreeOutline is being virtualized, don't add each TreeElement's node to the DOM. They
        will be added at the end of the frame (via setTimeout) if they are within the visible + padding
        area of the TreeOutline.

2017-08-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: simplify WebInspector with WI
        https://bugs.webkit.org/show_bug.cgi?id=175058

        Reviewed by Joseph Pecoraro.

        * .eslintrc:

        * Tools/PrettyPrinting/FormatterDebug.js:
        * Tools/PrettyPrinting/index.html:

        * UserInterface/Main.html:
        * UserInterface/Test.html:

        * UserInterface/Base/*.js:
        * UserInterface/Controllers/*.js:
        * UserInterface/Debug/*.js:
        * UserInterface/Models/*.js:
        * UserInterface/Protocol/*.js:
        * UserInterface/Proxies/*.js:
        * UserInterface/Test/*.js:
        * UserInterface/Views/*.js:

2017-08-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: create Recording tab for displaying recordings
        https://bugs.webkit.org/show_bug.cgi?id=174484

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Test.html:

        * UserInterface/Controllers/CanvasManager.js:
        (WebInspector.CanvasManager.prototype.recordingFinished):
        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas.prototype.toggleRecording):

        * UserInterface/Models/Recording.js:
        (WebInspector.Recording):
        (WebInspector.Recording.synthesizeError):
        (WebInspector.Recording.prototype.get actions):
        (WebInspector.Recording.prototype.get source):
        (WebInspector.Recording.prototype.set source):
        (WebInspector.Recording.prototype.swizzle):

        * UserInterface/Models/RecordingAction.js:
        (WebInspector.RecordingAction):
        (WebInspector.RecordingAction.isFunctionForType):
        (WebInspector.RecordingAction.get name):
        (WebInspector.RecordingAction.get parameters):
        (WebInspector.RecordingAction.prototype.get valid):
        (WebInspector.RecordingAction.prototype.set valid):
        (WebInspector.RecordingAction.get isFunction):
        (WebInspector.RecordingAction.get isGetter):
        (WebInspector.RecordingAction.get isVisual):
        (WebInspector.RecordingAction.get stateModifiers):
        (WebInspector.RecordingAction.prototype.swizzle):
        (WebInspector.RecordingAction.prototype.parameterSwizzleTypeForTypeAtIndex):

        * UserInterface/Models/RecordingInitialStateAction.js: Added.
        (WebInspector.RecordingInitialStateAction):

        * UserInterface/Views/RecordingTabContentView.js: Added.
        (WebInspector.RecordingTabContentView):
        (WebInspector.RecordingTabContentView.tabInfo):
        (WebInspector.RecordingTabContentView.prototype.get type):
        (WebInspector.RecordingTabContentView.prototype.canShowRepresentedObject):
        (WebInspector.RecordingTabContentView.prototype.showRepresentedObject):
        (WebInspector.RecordingTabContentView.prototype.restoreStateFromCookie):
        (WebInspector.RecordingTabContentView.prototype.saveStateToCookie):
        (WebInspector.RecordingTabContentView.prototype.closed):
        (WebInspector.RecordingTabContentView.prototype._updateActionIndex):
        (WebInspector.RecordingTabContentView.prototype._scrubberNavigationItemValueChanged):
        (WebInspector.RecordingTabContentView.prototype._navigationSidebarImport):
        (WebInspector.RecordingTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):

        * UserInterface/Views/RecordingContentView.js: Added.
        (WebInspector.RecordingContentView):
        (WebInspector.RecordingContentView.prototype.get navigationItems):
        (WebInspector.RecordingContentView.prototype.updateActionIndex):
        (WebInspector.RecordingContentView.prototype.shown):
        (WebInspector.RecordingContentView.prototype.get supplementalRepresentedObjects):
        (WebInspector.RecordingContentView.prototype._generateContentCanvas2D):
        (WebInspector.RecordingContentView.prototype._applyAction):
        (WebInspector.RecordingContentView.prototype._updateImageGrid):
        (WebInspector.RecordingContentView.prototype._showGridButtonClicked):
        * UserInterface/Views/RecordingContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/CanvasContentView.css.
        (.content-view:not(.tab).recording):
        (.content-view:not(.tab).recording > .preview-container):
        (.content-view:not(.tab).recording canvas):

        * UserInterface/Views/RecordingNavigationSidebarPanel.js: Added.
        (WebInspector.RecordingNavigationSidebarPanel):
        (WebInspector.RecordingNavigationSidebarPanel.disallowInstanceForClass):
        (WebInspector.RecordingNavigationSidebarPanel.prototype.set recording):
        (WebInspector.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
        (WebInspector.RecordingNavigationSidebarPanel.prototype.initialLayout):
        (WebInspector.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
        (WebInspector.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
        * UserInterface/Views/RecordingNavigationSidebarPanel.css: Added.
        (.sidebar > .panel.navigation.recording > :matches(.content, .empty-content-placeholder)):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
        (body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
        (body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before):
        (.sidebar > .panel.navigation.recording > .content .action > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.function > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon):
        (.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon):
        (.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon):
        (.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon):
        (body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon):
        (body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon):
        (.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)):
        (.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled):
        (.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles .name,):

        * UserInterface/Views/RecordingStateDetailsSidebarPanel.js: Added.
        (WebInspector.RecordingStateDetailsSidebarPanel):
        (WebInspector.RecordingStateDetailsSidebarPanel.disallowInstanceForClass):
        (WebInspector.RecordingStateDetailsSidebarPanel.prototype.inspect):
        (WebInspector.RecordingStateDetailsSidebarPanel.prototype.set recording):
        (WebInspector.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
        (WebInspector.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
        * UserInterface/Views/RecordingStateDetailsSidebarPanel.css: Added.
        (.sidebar > .panel.details.recording-state > .content > .data-grid):
        (.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
        (.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected).non-standard):
        (.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected) .unavailable):

        * UserInterface/Views/RecordingActionTreeElement.js: Added.
        (WebInspector.RecordingActionTreeElement):
        (WebInspector.RecordingActionTreeElement._generateDOM):
        (WebInspector.RecordingActionTreeElement.prototype.get index):
        (WebInspector.RecordingActionTreeElement.get filterableData):
        (WebInspector.RecordingActionTreeElement.prototype.get filterableData):
        (WebInspector.RecordingActionTreeElement.prototype.onattach):
        (WebInspector.RecordingActionTreeElement.prototype.populateContextMenu):

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector.instanceForClass):

        * UserInterface/Base/FileUtilites.js: Added.
        (WebInspector.saveDataToFile): Moved from UserInterface/Base/Main.js
        (WebInspector.loadDataFromFile):

        * UserInterface/Views/ButtonNavigationItem.js:
        (WebInspector.ButtonNavigationItem.prototype._mouseClicked):
        Send the native event as part of the data.

        * UserInterface/Views/CanvasContentView.js:
        (WebInspector.CanvasContentView):
        (WebInspector.CanvasContentView.prototype.get navigationItems):
        (WebInspector.CanvasContentView.prototype.initialLayout):
        (WebInspector.CanvasContentView.prototype.closed):
        (WebInspector.CanvasContentView.prototype._toggleRecording):
        (WebInspector.CanvasContentView.prototype._recordingFinished):
        * UserInterface/Views/CanvasContentView.css:
        (.content-view.canvas):

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

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        (WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        (WebInspector.ContentView.isViewable):
        * UserInterface/Views/ScrubberNavigationItem.js: Added.
        (WebInspector.ScrubberNavigationItem):
        (WebInspector.ScrubberNavigationItem.prototype.get value):
        (WebInspector.ScrubberNavigationItem.prototype.set value):
        (WebInspector.ScrubberNavigationItem.prototype.get min):
        (WebInspector.ScrubberNavigationItem.prototype.set min):
        (WebInspector.ScrubberNavigationItem.prototype.get max):
        (WebInspector.ScrubberNavigationItem.prototype.set max):
        (WebInspector.ScrubberNavigationItem.prototype.set disabled):
        (WebInspector.ScrubberNavigationItem.prototype.get additionalClassNames):
        (WebInspector.ScrubberNavigationItem.prototype._sliderChanged):
        * UserInterface/Views/ScrubberNavigationItem.css: Added.
        (.navigation-bar .item.scrubber):
        (.navigation-bar .item.scrubber > input):
        (.navigation-bar .item.scrubber > input[disabled]):
        Allow the flexible space to be replaced with a navigation item at construction.

        * UserInterface/Views/DataGridNode.js:
        (WebInspector.DataGridNode):
        (WebInspector.DataGridNode.prototype.get element):
        Allow a list of CSS classes to be added to the node's element.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.initialLayout):
        (WebInspector.SettingsTabContentView.prototype._createExperimentalSettingsView.listenForChange):
        (WebInspector.SettingsTabContentView.prototype._createExperimentalSettingsView):
        (WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
        Move experimental settings to their own panel.

        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView.prototype.get navigationSidebarPanel):
        Save the NavigationSidebarPanel after it's constructed.

        * UserInterface/Base/Utilities.js:
        (Number.countDigits):

        * UserInterface/Images/Recording.svg: Added.
        * UserInterface/Images/RenderingFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordRenderingFrame.svg.
        * UserInterface/Images/gtk/RenderingFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/TimelineRecordRenderingFrame.svg.
        * UserInterface/Views/TimelineIcons.css:
        (.rendering-frame-record .icon):

        * UserInterface/Views/DOMTreeOutline.css:
        (@keyframes node-state-changed):
        * UserInterface/Views/Main.css:
        (:matches(img, canvas).show-grid):
        (img.show-grid): Deleted.
        * UserInterface/Views/NavigationBar.css:
        (.navigation-bar):
        * UserInterface/Views/NetworkSidebarPanel.css:
        (.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content > .tree-outline):
        * UserInterface/Views/TimelineTabContentView.css:
        (.timeline.tab.content-view .navigation-bar > .item.radio):
        * UserInterface/Views/TimelineView.css:
        (.panel.navigation.timeline.timeline-recording-content-view-showing > .content > .tree-outline):
        * UserInterface/Views/Variables.css:
        (:root):
        Create CSS variables for the DOM modification flash color and the color striping.

2017-07-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: Cleanup unused/invalid parameters for TreeElements
        https://bugs.webkit.org/show_bug.cgi?id=173987

        Reviewed by Brian Burg.

        * UserInterface/Views/TreeElement.js:
        * UserInterface/Views/GeneralTreeElement.js:

        * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
        * UserInterface/Views/BreakpointTreeElement.js:
        * UserInterface/Views/CSSStyleSheetTreeElement.js:
        * UserInterface/Views/CallFrameTreeElement.js:
        * UserInterface/Views/ContentFlowTreeElement.js:
        * UserInterface/Views/DOMNodeTreeElement.js:
        * UserInterface/Views/DatabaseTableTreeElement.js:
        * UserInterface/Views/DatabaseTreeElement.js:
        * UserInterface/Views/FolderTreeElement.js:
        * UserInterface/Views/FolderizedTreeElement.js:
        * UserInterface/Views/FrameTreeElement.js:
        * UserInterface/Views/IndexedDatabaseObjectStoreIndexTreeElement.js:
        * UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:
        * UserInterface/Views/IndexedDatabaseTreeElement.js:
        * UserInterface/Views/IssueTreeElement.js:
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        * UserInterface/Views/ProfileNodeTreeElement.js:
        * UserInterface/Views/ResourceTreeElement.js:
        * UserInterface/Views/ScriptTreeElement.js:
        * UserInterface/Views/SearchResultTreeElement.js:
        * UserInterface/Views/SourceCodeTreeElement.js:
        * UserInterface/Views/SourceMapResourceTreeElement.js:
        * UserInterface/Views/StorageTreeElement.js:
        * UserInterface/Views/TimelineRecordTreeElement.js:
        * UserInterface/Views/TypeTreeElement.js:

2017-07-26  Devin Rousso  <drousso@apple.com>

        Uncaught Exception: undefined is not an object (evaluating 'this._memoryRow.value = Number.bytesToString(this._canvas.memoryCost)')
        https://bugs.webkit.org/show_bug.cgi?id=174823

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshCSSCanvasSection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._formatMemoryRow):
        Early return if the view has not called initialLayout, as the rows might not have been
        constructed yet.

        * UserInterface/Views/View.js:
        (WebInspector.View.prototype.get didInitialLayout): Added.

2017-07-26  Devin Rousso  <drousso@apple.com>

        Web Inspector: create protocol for recording Canvas contexts
        https://bugs.webkit.org/show_bug.cgi?id=174481

        Reviewed by Joseph Pecoraro.

        Create model objects that effectively mirror the protocol objects sent for Canvas recordings.

        * .eslintrc:
        * UserInterface/Main.html:
        * UserInterface/Test.html:

        * UserInterface/Controllers/CanvasManager.js:
        (WebInspector.CanvasManager.prototype.recordingFinished):
        * UserInterface/Protocol/CanvasObserver.js:
        (WebInspector.CanvasObserver.prototype.recordingFinished):

        * UserInterface/Models/Recording.js: Added.
        (WebInspector.Recording):
        (WebInspector.Recording.fromPayload):
        (WebInspector.Recording.prototype.get type):
        (WebInspector.Recording.prototype.get initialState):
        (WebInspector.Recording.prototype.get frames):
        (WebInspector.Recording.prototype.get data):
        (WebInspector.Recording.prototype.toJSON):

        * UserInterface/Models/RecordingAction.js: Added.
        (WebInspector.RecordingAction):
        (WebInspector.RecordingAction.fromPayload):
        (WebInspector.RecordingAction.prototype.get name):
        (WebInspector.RecordingAction.prototype.get parameters):
        (WebInspector.RecordingAction.prototype.toJSON):

        * UserInterface/Models/RecordingFrame.js: Added.
        (WebInspector.RecordingFrame):
        (WebInspector.RecordingFrame.fromPayload):
        (WebInspector.RecordingFrame.prototype.get actions):
        (WebInspector.RecordingFrame.prototype.get incomplete):
        (WebInspector.RecordingFrame.prototype.toJSON):

2017-07-26  Brian Burg  <bburg@apple.com>

        Remove WEB_TIMING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=174795

        Reviewed by Alex Christensen.

        Remove fallback for ports that lack WEB_TIMING.

        * UserInterface/Base/Utilities.js:
        (timestamp): Deleted.
        * UserInterface/Protocol/Connection.js:
        (InspectorBackend.Connection.prototype._dispatchResponse):
        (InspectorBackend.Connection.prototype._dispatchEvent):
        (InspectorBackend.Connection.prototype._sendCommandToBackendWithCallback):
        (InspectorBackend.Connection.prototype._sendCommandToBackendExpectingPromise):
        * UserInterface/Protocol/MessageDispatcher.js:
        (WebInspector.dispatchNextQueuedMessageFromBackend):

2017-07-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Don't output "No message" for multi-value logs like console.log(x, y)
        https://bugs.webkit.org/show_bug.cgi?id=174842

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        Removed "No message".

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        Track whether or not outputting the next parameter will need a divider
        in front of it or not.

2017-07-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Fix warnings about console.assert lines without semicolons
        https://bugs.webkit.org/show_bug.cgi?id=174840

        Reviewed by Brian Burg.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
        (WebInspector.SettingsTabContentView.prototype.setSettingsViewVisible):
        Add semicolon to assert lines so they can be stripped in optimized builds.

2017-07-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Inline multiple console log values if they are simple
        https://bugs.webkit.org/show_bug.cgi?id=174746
        <rdar://problem/33469376>

        Reviewed by Matt Baker.

        * UserInterface/Models/IssueMessage.js:
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.type): Deleted.
        Remove this as it isn't as useful as directly checking the type.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendExtraParameters):
        (WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
        (WebInspector.ConsoleMessageView.prototype._hasSimpleDisplay):
        (WebInspector.ConsoleMessageView.prototype._isStackTrace):
        For leading primitive/simple values, display them inline on the console message.

        * UserInterface/Views/FormattedValue.js:
        (WebInspector.FormattedValue.hasSimpleDisplay):
        Provide a helper to determine if a formatted value will be simple.

2017-07-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles: Add a switch for Spreadsheet model style editor to experimental settings
        https://bugs.webkit.org/show_bug.cgi?id=174741
        <rdar://problem/33467954>

        Reviewed by Brian Burg.

        Show a blank panel when Spreadsheet Style Editor is enabled.

        * UserInterface/Base/Setting.js:
        * UserInterface/Main.html:
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
        * UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js: Added.
        (WebInspector.RulesStyleSpreadsheetDetailsPanel):
        (WebInspector.RulesStyleSpreadsheetDetailsPanel.prototype.filterDidChange):
        (WebInspector.RulesStyleSpreadsheetDetailsPanel.prototype.scrollToSectionAndHighlightProperty):

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings > .settings-view > .container.hidden):
        (.content-view.settings > .settings-view > .container-centered):
        (.content-view.settings > .settings-view > .container button):
        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
        * UserInterface/Views/SettingsView.js:
        (WebInspector.SettingsView.prototype.addCenteredContainer):
        (WebInspector.SettingsView):
        Show "Reload Web Inspector" button when Spreadsheet Style Editor setting is modified.

2017-07-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: add context menu item for taking a screenshot of a node
        https://bugs.webkit.org/show_bug.cgi?id=174754

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ContextMenuUtilities.js:
        (WebInspector.appendContextMenuItemsForDOMNode):
        Add "Capture Element Screenshot " context menu item that opens a save dialog with a picture of the node.

        * UserInterface/Base/Main.js:
        (WebInspector.saveDataToFile):
        Allow the saveData to specify whether the contained content is base64Encoded, instead of
        having to go through a Blob to save base64 data.

        * UserInterface/Base/Utilities.js:
        Add Number.pad to add leading zeros up to a certain width.

        Drive-by: fix failing test for Number.constrain.

        * UserInterface/Models/DOMNode.js:
        (WebInspector.DOMNode.prototype.scrollIntoView.resolvedNode.scrollIntoView): Added.
        (WebInspector.DOMNode.prototype.scrollIntoView.resolvedNode): Added.
        (WebInspector.DOMNode.prototype.scrollIntoView): Added.
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        (WebInspector.DOMTreeElement.prototype._scrollIntoView.resolvedNode.scrollIntoView): Deleted.
        (WebInspector.DOMTreeElement.prototype._scrollIntoView.resolvedNode): Deleted.
        (WebInspector.DOMTreeElement.prototype._scrollIntoView): Deleted.
        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.populateContextMenu):
        Drive-by: move "Scroll Into View" context menu command to WebInspector.appendContextMenuItemsForDOMNode
        so that it can be triggered from more places than just the DOM tree.

2017-07-24  Nikita Vasilyev  <me@elv1s.ru>

        Web Inspector: Settings: Some controls overlay settings header
        https://bugs.webkit.org/show_bug.cgi?id=174804

        Reviewed by Matt Baker.

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings .navigation-bar):

2017-07-24  Matt Baker  <mattbaker@apple.com>

        Web Inspector: should only show Canvases in resource type filter if debug setting enabled
        https://bugs.webkit.org/show_bug.cgi?id=174765
        <rdar://problem/33479009>

        Reviewed by Devin Rousso.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):

2017-07-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: inspect(aFunction) should jump to function definition
        https://bugs.webkit.org/show_bug.cgi?id=149344
        <rdar://problem/11563607>

        Reviewed by Matt Baker.

        * UserInterface/Protocol/InspectorObserver.js:
        (WebInspector.InspectorObserver.prototype.inspect):
        If we receive a function remote object jump to its location if available.

2017-07-21  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Avoid subclassing WebInspector.Object if we do not need to
        https://bugs.webkit.org/show_bug.cgi?id=174703

        Reviewed by Brian Burg.

        * UserInterface/Models/LogObject.js:
        (WebInspector.LogObject):
        (WebInspector.LogObject.prototype.get startDate): Deleted.
        Remove unused startDate property as well.

        * UserInterface/Base/YieldableTask.js:
        * UserInterface/Debug/ProtocolTrace.js:
        * UserInterface/Models/AnalyzerMessage.js:
        * UserInterface/Models/ApplicationCacheFrame.js:
        * UserInterface/Models/ApplicationCacheManifest.js:
        * UserInterface/Models/BackForwardEntry.js:
        * UserInterface/Models/Branch.js:
        * UserInterface/Models/BreakpointAction.js:
        * UserInterface/Models/CSSMedia.js:
        * UserInterface/Models/CSSSelector.js:
        * UserInterface/Models/CallFrame.js:
        * UserInterface/Models/CallingContextTree.js:
        * UserInterface/Models/CallingContextTreeNode.js:
        * UserInterface/Models/CollectionEntry.js:
        * UserInterface/Models/CollectionEntryPreview.js:
        * UserInterface/Models/ConsoleMessage.js:
        * UserInterface/Models/DOMSearchMatchObject.js:
        * UserInterface/Models/DatabaseObject.js:
        * UserInterface/Models/DatabaseTableObject.js:
        * UserInterface/Models/DebuggerDashboard.js:
        * UserInterface/Models/DebuggerData.js:
        * UserInterface/Models/ExecutionContext.js:
        * UserInterface/Models/ExecutionContextList.js:
        * UserInterface/Models/GarbageCollection.js:
        * UserInterface/Models/HeapSnapshotRootPath.js:
        * UserInterface/Models/IndexedDatabase.js:
        * UserInterface/Models/IndexedDatabaseObjectStore.js:
        * UserInterface/Models/IndexedDatabaseObjectStoreIndex.js:
        * UserInterface/Models/Instrument.js:
        * UserInterface/Models/KeyboardShortcut.js:
        * UserInterface/Models/LineWidget.js:
        * UserInterface/Models/MemoryCategory.js:
        * UserInterface/Models/MemoryPressureEvent.js:
        * UserInterface/Models/ObjectPreview.js:
        * UserInterface/Models/Probe.js:
        * UserInterface/Models/ProbeSetDataFrame.js:
        * UserInterface/Models/Profile.js:
        * UserInterface/Models/ProfileNode.js:
        * UserInterface/Models/ProfileNodeCall.js:
        * UserInterface/Models/PropertyDescriptor.js:
        * UserInterface/Models/PropertyPath.js:
        * UserInterface/Models/PropertyPreview.js:
        * UserInterface/Models/ResourceQueryMatch.js:
        * UserInterface/Models/ResourceQueryResult.js:
        * UserInterface/Models/ResourceTimingData.js:
        * UserInterface/Models/Revision.js:
        * UserInterface/Models/ScopeChainNode.js:
        * UserInterface/Models/ScriptSyntaxTree.js:
        * UserInterface/Models/SourceCodePosition.js:
        * UserInterface/Models/SourceCodeSearchMatchObject.js:
        * UserInterface/Models/SourceMap.js:
        * UserInterface/Models/StackTrace.js:
        * UserInterface/Models/StructureDescription.js:
        * UserInterface/Models/TextMarker.js:
        * UserInterface/Models/TextRange.js:
        * UserInterface/Models/TimelineRange.js:
        * UserInterface/Models/TypeDescription.js:
        * UserInterface/Models/TypeSet.js:
        * UserInterface/Protocol/ProtocolTracer.js:
        * UserInterface/Proxies/FormatterWorkerProxy.js:
        * UserInterface/Proxies/HeapSnapshotDiffProxy.js:
        * UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
        * UserInterface/Test/TestSuite.js:

2017-07-19  Chris Dumez  <cdumez@apple.com>

        Drop SQLException type
        https://bugs.webkit.org/show_bug.cgi?id=174665

        Reviewed by Sam Weinig.

        Use SQLError instead of SQLException, this is what the script should really
        use here since it is checking the code of an SQLError.

        * .eslintrc:
        * UserInterface/Models/DatabaseObject.js:
        (WebInspector.DatabaseObject.prototype.executeSQL.queryCallback):
        (WebInspector.DatabaseObject.prototype.executeSQL):
        (WebInspector.DatabaseObject):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:

2017-07-18  Brian Burg  <bburg@apple.com>

        Web Inspector: adjust wording of "clear when page {navigates -> loads}"
        https://bugs.webkit.org/show_bug.cgi?id=174589
        <rdar://problem/32797981>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2017-07-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused and untested Page domain commands
        https://bugs.webkit.org/show_bug.cgi?id=174429

        Reviewed by Timothy Hatcher.

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-10.3.json:
        * Versions/Inspector-iOS-11.0.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:

2017-07-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Correct a typo in the .eslintrc
        https://bugs.webkit.org/show_bug.cgi?id=174389

        Reviewed by Matt Baker.

        * .eslintrc:

2017-07-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Node Sidebar - Improve wording for Potential Custom Element lacking a Custom definition
        https://bugs.webkit.org/show_bug.cgi?id=174346

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementState):
        The text "Waiting to be upgraded" is poor. Any non-standard element with dashes
        in the name is considered custom, but does not need to be upgraded. Lets use
        different wording to indicate that it is detected as custom, and lacks a
        specific Custom Element definition.

2017-07-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: Highlight matching CSS canvas clients when hovering contexts in the Resources tab
        https://bugs.webkit.org/show_bug.cgi?id=174279

        Reviewed by Matt Baker.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.highlightDOMNodeList):
        (WebInspector.DOMTreeManager.prototype.highlightSelector):
        * UserInterface/Views/CanvasTreeElement.js:
        (WebInspector.CanvasTreeElement.prototype._handleMouseOver):

2017-07-03  Brian Burg  <bburg@apple.com>

        Web Replay: remove some unused code
        https://bugs.webkit.org/show_bug.cgi?id=173903

        Rubber-stamped by Joseph Pecoraro.

        * .eslintrc:
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        * UserInterface/Controllers/DashboardManager.js:
        (WebInspector.DashboardManager):
        * UserInterface/Controllers/ReplayManager.js: Removed.
        * UserInterface/Images/ReplayPauseButton.svg: Removed.
        * UserInterface/Images/ReplayPlayButton.svg: Removed.
        * UserInterface/Images/ReplayRecordingButton.svg: Removed.
        * UserInterface/Images/gtk/ReplayPauseButton.svg: Removed.
        * UserInterface/Images/gtk/ReplayPlayButton.svg: Removed.
        * UserInterface/Images/gtk/ReplayRecordingButton.svg: Removed.
        * UserInterface/Main.html:
        * UserInterface/Models/ReplayDashboard.js: Removed.
        * UserInterface/Models/ReplaySession.js: Removed.
        * UserInterface/Models/ReplaySessionSegment.js: Removed.
        * UserInterface/Protocol/ReplayObserver.js: Removed.
        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):
        * UserInterface/Views/DashboardView.js:
        (WebInspector.DashboardView.create):
        * UserInterface/Views/ReplayDashboardView.css: Removed.
        * UserInterface/Views/ReplayDashboardView.js: Removed.
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._debuggerPaused):
        (WebInspector.TimelineRecordingContentView.prototype._debuggerResumed):

2017-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Resources are sometimes missing from the tree outline right before folderizing
        https://bugs.webkit.org/show_bug.cgi?id=174277

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TreeElement.js:
        (WebInspector.TreeElement.prototype.expand):

2017-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION(r217258): WebSocket resource tree elements don't show the connection status
        https://bugs.webkit.org/show_bug.cgi?id=174274

        Reviewed by Brian Burg.

        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype.populateContextMenu):
        * UserInterface/Views/WebSocketResourceTreeElement.js:
        (WebInspector.WebSocketResourceTreeElement.prototype.populateContextMenu):
        Move "Log WebSocket" context menu item to WebSocketResourceTreeElement.

2017-07-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Show all elements currently using a given CSS Canvas
        https://bugs.webkit.org/show_bug.cgi?id=173965

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/CanvasManager.js:
        (WebInspector.CanvasManager.prototype.cssCanvasClientNodesChanged):
        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas.prototype.requestCSSCanvasClientNodes):
        (WebInspector.Canvas.prototype.cssCanvasClientNodesChanged):
        * UserInterface/Protocol/CanvasObserver.js:
        (WebInspector.CanvasObserver.prototype.cssCanvasClientNodesChanged):

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WebInspector.CanvasDetailsSidebarPanel):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.set canvas):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshCSSCanvasSection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._formatMemoryRow):
        Add CSS section for CSS canvases. Currently displays a list of node links, each of which is
        using the selected canvas via -webkit-canvas.

        * UserInterface/Main.html:
        * UserInterface/Views/CanvasDetailsSidebarPanel.css: Added.
        (.sidebar > .panel.details.canvas .details-section > .content .row.simple > .value > .node-link):

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype.ensureDocument):
        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas.prototype.requestNode):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.performSearch):
        Add convenience function that will call DOMAgent.getDocument with an empty function. Should
        be used when it is necessary that the document has been sent to the frontend, but the
        document node itself is not needed.

2017-07-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Clean up some unnecessary constructors
        https://bugs.webkit.org/show_bug.cgi?id=174236

        Reviewed by Brian Burg.

        * UserInterface/Controllers/CodeMirrorBezierEditingController.js:
        * UserInterface/Controllers/CodeMirrorColorEditingController.js:
        * UserInterface/Controllers/CodeMirrorGradientEditingController.js:
        * UserInterface/Views/DividerNavigationItem.js:
        * UserInterface/Views/FlexibleSpaceNavigationItem.js:
        * UserInterface/Views/IdleTreeElement.js:

2017-07-06  Devin Rousso  <drousso@apple.com>

        Web Inspector: Highlight matching canvas element when hovering contexts in the Resources tab
        https://bugs.webkit.org/show_bug.cgi?id=174209

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CanvasTreeElement.js:
        (WebInspector.CanvasTreeElement.prototype.onattach):
        (WebInspector.CanvasTreeElement.prototype._handleMouseOver):
        (WebInspector.CanvasTreeElement.prototype._handleMouseOut):

2017-07-06  Joseph Pecoraro  <pecoraro@apple.com>

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

        Reviewed by Brian Burg.

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

2017-07-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Group Inspector Style Sheets as part of the Stylesheets folder
        https://bugs.webkit.org/show_bug.cgi?id=173435

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        Add special case for CSSStyleSheetTreeElement.

2017-07-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Split Canvas.svg into icons for 2D and 3D
        https://bugs.webkit.org/show_bug.cgi?id=174057

        Reviewed by Matt Baker.

        * UserInterface/Images/Canvas2D.svg: Added.
        * UserInterface/Images/Canvas3D.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/Canvas.svg.
        * UserInterface/Views/ResourceIcons.css:
        (.canvas.canvas-2d .icon):
        (.canvas:matches(.webgl, .webgl2, .webgpu) .icon):
        (.canvas .icon): Deleted.

2017-07-05  Devin Rousso  <drousso@apple.com>

        Web Inspector: Allow users to log any tracked canvas context
        https://bugs.webkit.org/show_bug.cgi?id=173397
        <rdar://problem/33111581>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.resolveCanvasContext):
        * UserInterface/Views/CanvasTreeElement.js:
        (WebInspector.CanvasTreeElement.prototype.populateContextMenu):

2017-07-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: Support listing WebGL2 and WebGPU contexts
        https://bugs.webkit.org/show_bug.cgi?id=173396

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas.fromPayload):
        (WebInspector.Canvas.displayNameForContextType):

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [macOS] Remove code only needed when building for OS X Yosemite
        https://bugs.webkit.org/show_bug.cgi?id=174067

        Reviewed by Tim Horton.

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

2017-06-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Type token background color in debugger looks poor
        https://bugs.webkit.org/show_bug.cgi?id=174063

        Reviewed by Devin Rousso.

        * UserInterface/Views/TextEditor.css:
        CodeMirror widgets do not get range styles like our (.execution-range-highlight).
        Make a best effort to carry over the styles to widgets. It isn't perfect, but it
        covers all common situations unless a selection ends inside the widget. The
        ultimate solution would be to get the expected range styles.

2017-06-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Initial search is sometimes performed twice, produces duplicate results
        https://bugs.webkit.org/show_bug.cgi?id=174047

        Reviewed by Devin Rousso.

        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView.prototype.performSearch):
        The initial layout of the tab content view was setting state to force a search
        which may happen after a delay, however the global search field was causing
        its own search to happen. We can clear the flag when a search is being performed
        to prevent duplicating the search.

2017-06-30  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add small delay before showing the progress spinner when loading resources
        https://bugs.webkit.org/show_bug.cgi?id=173437

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView):
        (WebInspector.ResourceContentView.prototype.removeLoadingIndicator): Added.
        (WebInspector.ResourceContentView.prototype._contentError):
        (WebInspector.ResourceContentView.prototype._hasContent):
        Delay the creation of the spinner for 100ms.  If the content is available before then, just
        clear the timeout and the spinner will never be created/shown.

        We measured an average of 35ms to load and display images with slow cases being around 55ms.
        100ms was chosen for the timeout to give some room to allow for abnormally slow loading
        while not being too long as to be outright noticable.

        * UserInterface/Views/FontResourceContentView.js:
        (WebInspector.FontResourceContentView.prototype.contentAvailable):
        * UserInterface/Views/ImageResourceContentView.js:
        (WebInspector.ImageResourceContentView.prototype.contentAvailable):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype._contentWillPopulate):
        Calls the new protected function removeLoadingIndicator to ensure that the spinner (and any
        other element) is removed.

        This is necessary because TextResourceContentView effectively has two phases of loading its
        content: getting the content and formatting it for display.  The first follows the same path
        as the other ResourceContentView subclasses, the second waits for the ContentWillPopulate
        event on SourceCodeTextEditor before it actually adds the content as a subview.  In this
        case, the spinner should only be removed right before the content is actually added, not
        once it's ready.

2017-06-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r218983.
        https://bugs.webkit.org/show_bug.cgi?id=174042

        Broke Debugger Call Stack TreeOutline (Requested by drousso on
        #webkit).

        Reverted changeset:

        "Web Inspector: Remove unnecessary hasChildren from
        TreeOutline"
        https://bugs.webkit.org/show_bug.cgi?id=173986
        http://trac.webkit.org/changeset/218983

2017-06-30  Devin Rousso  <drousso@apple.com>

        Web Inspector: Default string comparisons to treat numeric characters as numbers
        https://bugs.webkit.org/show_bug.cgi?id=173984

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Utilities.js:
        (String.prototype.extendedLocaleCompare):
        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
        (WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames.compare):
        * UserInterface/Controllers/ResourceQueryController.js:
        (WebInspector.ResourceQueryController.prototype.executeQuery):
        * UserInterface/Views/ApplicationCacheFrameContentView.js:
        (WebInspector.ApplicationCacheFrameContentView.prototype._sortDataGrid.localeCompare):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._iterateOverProperties):
        * UserInterface/Views/CookieStorageContentView.js:
        (WebInspector.CookieStorageContentView.prototype._sortDataGrid.localeCompare):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAttributes):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):
        * UserInterface/Views/DOMStorageContentView.js:
        (WebInspector.DOMStorageContentView.prototype._sortDataGrid.comparator):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements):
        * UserInterface/Views/FolderizedTreeElement.js:
        (WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
        * UserInterface/Views/HeapSnapshotDataGridTree.js:
        (WebInspector.HeapSnapshotDataGridTree.buildSortComparator):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.dataGridSortComparator):
        * UserInterface/Views/NewTabContentView.js:
        (WebInspector.NewTabContentView.prototype._updateShownTabs):
        * UserInterface/Views/OverviewTimelineView.js:
        (WebInspector.OverviewTimelineView.prototype._compareDataGridNodesByStartTime):
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        (WebInspector.ProbeDetailsSidebarPanel.prototype.inspect):
        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole.prototype._compareExecutionContextPathComponents):
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._createNameValueDataGrid.sortDataGrid.comparator):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._compareTreeElements):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.compareResourceTreeElements):
        (WebInspector.ResourceTreeElement.compareFolderAndResourceTreeElements):
        * UserInterface/Views/ScriptDetailsTimelineView.js:
        (WebInspector.ScriptDetailsTimelineView.prototype.dataGridSortComparator):
        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel.prototype._compareTreeElements):
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._sortComparator):

2017-06-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: Provide a way for creating a new tab but not making it immediately selected
        https://bugs.webkit.org/show_bug.cgi?id=173983

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar):
        (WebInspector.TabBar.prototype.addTabBarItem):
        (WebInspector.TabBar.prototype.insertTabBarItem):
        (WebInspector.TabBar.prototype.removeTabBarItem):
        (WebInspector.TabBar.prototype._handleClick):
        (WebInspector.TabBar.prototype._handleNewTabClick):
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser.prototype.addTabForContentView):
        (WebInspector.TabBrowser.prototype.showTabForContentView):
        (WebInspector.TabBrowser.prototype.closeTabForContentView):
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._openDefaultTab):
        (WebInspector._tryToRestorePendingTabs):
        (WebInspector.showNewTabTab):
        (WebInspector.createNewTabWithType):
        Add `options` dictionaries instead of optional parameters.

        (WebInspector.tabContentViewClassForRepresentedObject):
        Drive-by fix: remove incorrect placement of WebInspector.Collection check. This function
        determines TabContentView classes, not ContentView.

2017-06-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: Remove unnecessary hasChildren from TreeOutline
        https://bugs.webkit.org/show_bug.cgi?id=173986

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline):
        (WebInspector.TreeOutline.prototype.appendChild):
        (WebInspector.TreeOutline.prototype.insertChild):
        (WebInspector.TreeOutline.prototype.removeChildAtIndex):
        (WebInspector.TreeOutline.prototype.removeChild):
        (WebInspector.TreeOutline.prototype.get selectedTreeElementIndex):

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get value):

2017-06-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: Cleanup unused/invalid parameters for SidebarPanels
        https://bugs.webkit.org/show_bug.cgi?id=173985

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/SidebarPanel.js:
        * UserInterface/Views/NavigationSidebarPanel.js:
        * UserInterface/Views/NavigationSidebarPanel.css:
        (.sidebar > .panel.navigation > .overflow-shadow.top): Deleted.
        * UserInterface/Views/DetailsSidebarPanel.js:

        * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        * UserInterface/Views/DOMDetailsSidebarPanel.js:
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        * UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        * UserInterface/Views/StorageSidebarPanel.js:

2017-06-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: Create a single -webkit-canvas for use inside popovers
        https://bugs.webkit.org/show_bug.cgi?id=173820

        Reviewed by Matt Baker.

        * UserInterface/Views/Popover.css:
        (.popover):
        * UserInterface/Views/Popover.js:
        (WebInspector.Popover):
        (WebInspector.Popover.prototype._drawBackground):

2017-06-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: Instrument active pixel memory used by canvases
        https://bugs.webkit.org/show_bug.cgi?id=173087
        <rdar://problem/32719261>

        Reviewed by Joseph Pecoraro.

        * .eslintrc:
        * UserInterface/Controllers/CanvasManager.js:
        (WebInspector.CanvasManager.prototype.canvasMemoryChanged):
        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas.fromPayload):
        (WebInspector.Canvas.prototype.get memoryCost):
        (WebInspector.Canvas.prototype.set memoryCost):
        * UserInterface/Protocol/CanvasObserver.js:
        (WebInspector.CanvasObserver.prototype.canvasMemoryChanged):
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._formatMemoryRow):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._canvasMemoryChanged):

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Utilities.js:
        (Number.bytesToString.value):
        Add support for gigabyte numbers.

2017-06-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused Inspector domain events
        https://bugs.webkit.org/show_bug.cgi?id=173905

        Reviewed by Matt Baker.

        * UserInterface/Protocol/InspectorObserver.js:
        (WebInspector.InspectorObserver.prototype.detached): Deleted.

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-10.3.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:
        Remove from legacy backends as well since they did not send it.

2017-06-27  Matt Baker  <mattbaker@apple.com>

        Web Inspector: no discoverable way to dismiss the split console
        https://bugs.webkit.org/show_bug.cgi?id=167034
        <rdar://problem/30023436>

        Reviewed by Devin Rousso.

        This patch adds an Xcode-style toggle button to the left of the
        split console navigation bar. Additionally, the split console code
        has been broken out into it's own class to reduce the clutter in
        Main.js/css, and simplify future console maintenance.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        Replace the "split" ContentBrowser with a new ConsoleDrawer class,
        which encapsulates the drawer height setting and resize behavior.
        (WebInspector.contentLoaded):
        The console drawer manages its own height.

        * UserInterface/Images/HideConsoleDrawer.svg: Added.
        * UserInterface/Images/ShowConsoleDrawer.svg: Added.
        Console drawer toggle button images. Styled after corresponding Xcode button.

        * UserInterface/Main.html:

        * UserInterface/Views/ConsoleDrawer.css: Added.
        Moved old #split-content-browser styles over from Main.css.
        (.console-drawer):
        (.console-drawer > .navigation-bar):
        (.console-drawer > .navigation-bar > .item.button:not(.clear-log)):
        Make button spacing less cramped.
        (.console-drawer > .navigation-bar > .item:not(.flexible-space)):
        (.console-drawer > .navigation-bar > :matches(.item.button, .log-scope-bar)):
        (.console-drawer > .navigation-bar > .item > .glyph,):

        * UserInterface/Views/ConsoleDrawer.js: Added.
        New class responsible for console drawer expand / collapse and resizer
        dragging, which was previously part of Main.js. The console drawer toolbar
        now has a toggle button, debugging controls, and a call frames path item.
        The "Show Console Tab" button has been removed.

        (WebInspector.ConsoleDrawer):
        (WebInspector.ConsoleDrawer.prototype.get collapsed):
        (WebInspector.ConsoleDrawer.prototype.set collapsed):
        (WebInspector.ConsoleDrawer.prototype.get height):
        (WebInspector.ConsoleDrawer.prototype.shown):
        (WebInspector.ConsoleDrawer.prototype.layout):
        (WebInspector.ConsoleDrawer.prototype._consoleResizerMouseDown.dockedResizerDrag):
        (WebInspector.ConsoleDrawer.prototype._consoleResizerMouseDown.dockedResizerDragEnd):
        (WebInspector.ConsoleDrawer.prototype._consoleResizerMouseDown):
        (WebInspector.ConsoleDrawer.prototype._restoreDrawerHeight):
        (WebInspector.ConsoleDrawer.prototype._updateDrawerHeight):
        (WebInspector.ConsoleDrawer.prototype._selectedTabContentViewDidChange):
        When switching to a tab that doesn't support showing the console drawer,
        hide it without altering the collapsed state.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.get navigationItems):

        * UserInterface/Views/Main.css:
        Renamed #split-content-browser to #console-drawer, and moved related
        styles to ConsoleDrawer.css.

        (#split-content-browser): Deleted.
        (#split-content-browser > .navigation-bar): Deleted.
        (#split-content-browser > .navigation-bar :matches(.find-banner, .find-banner + .divider)): Deleted.
        (#split-content-browser > .navigation-bar .item): Deleted.
        (#split-content-browser > .navigation-bar .item:not(.flexible-space)): Deleted.
        (#split-content-browser .hierarchical-path-component.log-icon .icon): Deleted.
        (#split-content-browser .hierarchical-path-component.log-icon .title): Deleted.
        (#split-content-browser .hierarchical-path-component.log-icon select): Deleted.
        (#split-content-browser > .navigation-bar > :matches(.hierarchical-path, .log-scope-bar)): Deleted.
        (#split-content-browser > .navigation-bar > .log-scope-bar > li): Deleted.

        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole):
        (WebInspector.QuickConsole.prototype._toggleOrFocus):
        (WebInspector.QuickConsole.prototype._updateStyles):
        Update top border style in response to change in selected TabBrowser
        tab or the console drawer collapsed state.

        (WebInspector.QuickConsole.prototype.consoleLogVisibilityChanged): Deleted.
        (WebInspector.QuickConsole.prototype.set keyboardShortcutDisabled): Deleted.

2017-06-24  Joseph Pecoraro  <pecoraro@apple.com>

        Remove Reflect.enumerate
        https://bugs.webkit.org/show_bug.cgi?id=173806

        Reviewed by Yusuke Suzuki.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-06-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Script Timeline bubbles sometimes appear to miss large events
        https://bugs.webkit.org/show_bug.cgi?id=173746
        <rdar://problem/32950808>

        Reviewed by Brian Burg.

        * UserInterface/Models/Timeline.js:
        (WebInspector.Timeline.prototype.addRecord):
        (WebInspector.Timeline.prototype._tryInsertInSortedOrder):
        The list of records is assumed to be sorted by the code that draws bubbles
        however the order in which we receive them may not be sorted. Make a quick
        effort to sort recent records so that as we are drawing the timeline it is
        more accurate.

2017-06-23  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: flip all go-to-arrow instances
        https://bugs.webkit.org/show_bug.cgi?id=173794
        <rdar://problem/32221912>

        Reviewed by Joseph Pecoraro.

        Move the flipping transform so it applies to all go-to arrows.

        * UserInterface/Views/DataGrid.css:
        (body[dir=rtl] .data-grid td .go-to-arrow):
        * UserInterface/Views/Main.css:
        (body[dir=rtl] .go-to-arrow):

2017-06-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Pausing with a deep call stack can be very slow, avoid eagerly generating object previews
        https://bugs.webkit.org/show_bug.cgi?id=173698

        Reviewed by Matt Baker.

        Introduce RemoteObject.prototype.updatePreview which can be used to update
        the preview of a RemoteObject with a current view for the object. Currently
        we only use this to fetch the preview that we did not have for the `thisObject`
        in the scope chain sidebar. However this could be used generically to update
        a RemoteObject's preview (ObjectPreview) at any time.

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.prototype.canLoadPreview):
        (WebInspector.RemoteObject.prototype.updatePreview):
        Allow a RemoteObject to update its preview property. Since this only makes
        sense on certain Object values include a helper to know when it is appropriate
        to fetch a preview.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._loadPreviewLazilyIfNeeded):
        If the object being shown in the sidebar does not have a preview but can load a
        preview then attempt to load it lazily. This is the case for the `thisObject`
        which is injected into an ObjectTree in the scope chain sidebar.

2017-06-22  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add icon for Canvas.svg
        https://bugs.webkit.org/show_bug.cgi?id=173580

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/Canvas.svg: Added.

2017-06-21  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add NavigationItemCheckers.svg
        https://bugs.webkit.org/show_bug.cgi?id=173692

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/NavigationItemCheckers.svg: Added.

2017-06-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: change the selected ScopeBarItem on mousedown instead of click
        https://bugs.webkit.org/show_bug.cgi?id=173586

        Reviewed by Matt Baker.

        Both the Tab bar and Sidebar navigation bar switch the active item on "mousedown" instead of
        on "click". ScopeBarItem should follow this pattern, as it is faster and keeps consistency.

        * UserInterface/Views/MultipleScopeBarItem.js:
        (WebInspector.MultipleScopeBarItem):
        (WebInspector.MultipleScopeBarItem.prototype._handleMouseDown):
        (WebInspector.MultipleScopeBarItem.prototype._clicked): Deleted.
        * UserInterface/Views/ScopeBarItem.js:
        (WebInspector.ScopeBarItem):
        (WebInspector.ScopeBarItem.prototype._handleMouseDown):
        (WebInspector.ScopeBarItem.prototype._clicked): Deleted.

2017-06-20  Devin Rousso  <drousso@apple.com>

        Web Inspector: Send context attributes for tracked canvases
        https://bugs.webkit.org/show_bug.cgi?id=173327

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas.fromPayload):
        (WebInspector.Canvas.prototype.get contextAttributes):
        * UserInterface/Views/CanvasDetailsSidebarPanel.js:
        (WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.sizeDidChange):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):

        * UserInterface/Views/DataGridNode.js:
        (WebInspector.DataGridNode.prototype.createCellContent):
        Instead of checking if the value of the cell is falsy, check that the key exists in the data.
        This allows values like `false` to be displayed.

2017-06-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: create canvas content view and details sidebar panel
        https://bugs.webkit.org/show_bug.cgi?id=138941
        <rdar://problem/19051672>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/Canvas.js:
        (WebInspector.Canvas):
        (WebInspector.Canvas.fromPayload):
        (WebInspector.Canvas.prototype.get displayName):
        (WebInspector.Canvas.requestNode): Added.
        (WebInspector.Canvas.prototype.requestContent): Added.
        (WebInspector.Canvas.prototype.saveIdentityToCookie):

        * UserInterface/Controllers/CanvasManager.js:
        (WebInspector.CanvasManager.prototype.canvasAdded):
        (WebInspector.CanvasManager.prototype.canvasRemoved):
        * UserInterface/Models/Collection.js:
        * UserInterface/Models/Frame.js:
        (WebInspector.Frame):
        (WebInspector.Frame.prototype.get canvasCollection):
        (WebInspector.Frame.prototype.commitProvisionalLoad):
        Create a Collection for Canvas in each Frame, and modify it when canvas events are fired.

        * UserInterface/Views/CanvasContentView.css: Added.
        (.content-view.canvas > .preview):
        (.content-view.canvas > .preview > img):
        * UserInterface/Views/CanvasContentView.js: Added.
        (WebInspector.CanvasContentView):
        (WebInspector.CanvasContentView.prototype.get navigationItems):
        (WebInspector.CanvasContentView.prototype.shown):
        (WebInspector.CanvasContentView.prototype.hidden):
        (WebInspector.CanvasContentView.prototype._showPreview):
        (WebInspector.CanvasContentView.prototype._updateImageGrid):
        (WebInspector.CanvasContentView.prototype._showGridButtonClicked):
        * UserInterface/Views/CanvasDetailsSidebarPanel.js: Added.
        (WebInspector.CanvasDetailsSidebarPanel):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.inspect):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.get canvas):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.set canvas):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.):
        (WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection):
        * UserInterface/Views/CanvasTreeElement.js: Added.
        (WebInspector.CanvasTreeElement):

        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement.prototype.onattach):
        (WebInspector.FrameTreeElement.prototype.ondetach):
        (WebInspector.FrameTreeElement.prototype.onpopulate):
        (WebInspector.FrameTreeElement.prototype._canvasWasAdded):
        (WebInspector.FrameTreeElement.prototype._canvasWasRemoved):
        (WebInspector.FrameTreeElement):
        * UserInterface/Base/Main.js:
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        (WebInspector.ContentView.isViewable):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
        (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView):
        (WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
        Show Canvas objects and tie them to the correct ContentView and TreeElement subclasses.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Images/Canvas.svg: Added.
        * UserInterface/Views/ResourceIcons.css:
        (.canvas .icon):
        Added new files/rules/strings related to Canvas UI.

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings .navigation-bar):

        * UserInterface/Base/Setting.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.initialLayout):
        (WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):
        (WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
        Add an experimental settings toggle in the Debug view for showing canvas contexts.

        * UserInterface/Views/FolderizedTreeElement.js:
        (WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
        Drive-by fix: ensure that sorting also includes numbers, so that 1 < 2 < 10.

        * UserInterface/Views/ImageResourceContentView.js:
        (WebInspector.ImageResourceContentView.prototype.shown):
        (WebInspector.ImageResourceContentView.prototype.hidden):
        (WebInspector.ImageResourceContentView.prototype._updateImageGrid):
        (WebInspector.ImageResourceContentView.prototype._showGridButtonClicked):
        (WebInspector.ImageResourceContentView):
        Drive-by fix: change the activated state of the Show Grid navigation item if it changes
        in another view.

2017-06-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Unify contextmenu items for all node links/previews
        https://bugs.webkit.org/show_bug.cgi?id=173187

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/ContextMenuUtilities.js:
        (WebInspector.appendContextMenuItemsForDOMNode.didGetFunctionDetails): Added.
        (WebInspector.appendContextMenuItemsForDOMNode.didGetProperty): Added.
        (WebInspector.appendContextMenuItemsForDOMNode.didResolveNode): Added.
        (WebInspector.appendContextMenuItemsForDOMNode): Added.
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        (WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Deleted.
        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.populateContextMenu):
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu.revealElement): Deleted.
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement): Deleted.
        (WebInspector.DOMTreeOutline.prototype._populateContextMenu): Deleted.
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
        Unify common DOM node context menu actions into a single helper function.

        * UserInterface/Base/DOMUtilities.js:
        (WebInspector.linkifyNodeReference):
        (WebInspector.linkifyNodeReferenceElement):
        Rework parameters to use options dictionary.

2017-06-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
        https://bugs.webkit.org/show_bug.cgi?id=172623
        <rdar://problem/32415986>

        Reviewed by Devin Rousso and Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):

        * UserInterface/Controllers/CanvasManager.js: Added.
        New frontend manager for the Canvas domain.
        (WebInspector.CanvasManager):
        (WebInspector.CanvasManager.prototype.get canvases):
        (WebInspector.CanvasManager.prototype.canvasAdded):
        (WebInspector.CanvasManager.prototype.canvasRemoved):
        (WebInspector.CanvasManager.prototype._mainResourceDidChange):

        * UserInterface/Main.html:
        New files.

        * UserInterface/Models/Canvas.js: Added.
        (WebInspector.Canvas):
        (WebInspector.Canvas.fromPayload):
        (WebInspector.Canvas.displayNameForContextType):
        Get displayable text "2D" or "WebGL" based on context type.
        (WebInspector.Canvas.resetUniqueDisplayNameNumbers):
        Called by CanvasManager when canvases are cleared.
        (WebInspector.Canvas.prototype.get identifier):
        (WebInspector.Canvas.prototype.get contextType):
        (WebInspector.Canvas.prototype.get frame):
        (WebInspector.Canvas.prototype.get cssCanvasName):
        For CSS canvases, the identifier passed to getCSSCanvasContext.
        (WebInspector.Canvas.prototype.get displayName):
        Get displayable canvas name. The name depends on how the canvas was
        created, and the information available:
          - getCSSCanvasContext: "CSS Canvas <identifier>"
          - getContext: "Canvas #<DOM id attribute value>"
          - Otherwise: "Canvas 1", "Canvas 2", ...

        (WebInspector.Canvas.saveIdentityToCookie):

        * UserInterface/Protocol/CanvasObserver.js: Added.
        (WebInspector.CanvasObserver.prototype.canvasAdded):
        (WebInspector.CanvasObserver.prototype.canvasRemoved):
        (WebInspector.CanvasObserver):

        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):

2017-06-16  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r218376.

        The patch cause multiple Layout Test Crashes.

        Reverted changeset:

        "Web Inspector: Instrument 2D/WebGL canvas contexts in the
        backend"
        https://bugs.webkit.org/show_bug.cgi?id=172623
        http://trac.webkit.org/changeset/218376

2017-06-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
        https://bugs.webkit.org/show_bug.cgi?id=172623
        <rdar://problem/32415986>

        Reviewed by Devin Rousso.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):

        * UserInterface/Controllers/CanvasManager.js: Added.
        New frontend manager for the Canvas domain.
        (WebInspector.CanvasManager):
        (WebInspector.CanvasManager.prototype.get canvases):
        (WebInspector.CanvasManager.prototype.canvasAdded):
        (WebInspector.CanvasManager.prototype.canvasRemoved):
        (WebInspector.CanvasManager.prototype._mainResourceDidChange):

        * UserInterface/Main.html:
        New files.

        * UserInterface/Models/Canvas.js: Added.
        (WebInspector.Canvas):
        (WebInspector.Canvas.fromPayload):
        (WebInspector.Canvas.displayNameForContextType):
        Get displayable text "2D" or "WebGL" based on context type.
        (WebInspector.Canvas.resetUniqueDisplayNameNumbers):
        Called by CanvasManager when canvases are cleared.
        (WebInspector.Canvas.prototype.get identifier):
        (WebInspector.Canvas.prototype.get contextType):
        (WebInspector.Canvas.prototype.get frame):
        (WebInspector.Canvas.prototype.get cssCanvasName):
        For CSS canvases, the identifier passed to getCSSCanvasContext.
        (WebInspector.Canvas.prototype.get displayName):
        Get displayable canvas name. The name depends on how the canvas was
        created, and the information available:
          - getCSSCanvasContext: "CSS Canvas <identifier>"
          - getContext: "Canvas #<DOM id attribute value>"
          - Otherwise: "Canvas 1", "Canvas 2", ...

        (WebInspector.Canvas.saveIdentityToCookie):

        * UserInterface/Protocol/CanvasObserver.js: Added.
        (WebInspector.CanvasObserver.prototype.canvasAdded):
        (WebInspector.CanvasObserver.prototype.canvasRemoved):
        (WebInspector.CanvasObserver):

        * UserInterface/Test.html:
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):

2017-06-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Search highlight doesn't show up in resources when paused
        https://bugs.webkit.org/show_bug.cgi?id=173438
        <rdar://problem/32800114>

        Reviewed by Matt Baker.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
        Previously we were bailing if executionLineNumber was NaN, which means that when
        we were paused we were incorrectly disabling highlights in any resource that does
        not have the active callframe. Relax this and make it match the intended behavior
        of only disabling highlights if the highlight line matches the execution line.

2017-06-15  Joseph Pecoraro  <pecoraro@apple.com>

        Uncaught Exception: TypeError: null is not an object (evaluating 'this.contentBrowser.contentViewForRepresentedObject')
        https://bugs.webkit.org/show_bug.cgi?id=173425
        <rdar://problem/32744172>

        Reviewed by Devin Rousso.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype.shown):
        Reorder slightly so the NavigationSidebar has its ContentBrowser set
        before anyone tries to restore views in the sidebar.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
        Try to select a script/resource content view instead of nothing.

        (WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
        When a resource is selected, save it using the normal path.

        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype.canShowDifferentContentView):
        Remove a reference to an unused / stale member variable.

2017-06-14  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Pretty print / type info / code coverage buttons disappear after switching tabs
        https://bugs.webkit.org/show_bug.cgi?id=162515
        <rdar://problem/28455322>

        Reviewed by Joseph Pecoraro.

        Each ContentView owns a list of NavigationItems. When the ContentView moves across
        Tabs (ContentBrowsers) it removes its NavigationItems from the old Tab's NavigationBar
        and adds them to the new Tab's NavigationBar. When switching back to the original tab
        the ContentView is restored, but its NavigationItems are not carried back.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
        Add a forceUpdate parameter that is needed when navigationItems are unchanged but navigationBar is
        different.

        (WebInspector.ContentBrowser.prototype._removeAllNavigationItems):
        Remove navigation items even when their navigationBar is no longer a current navigationBar,
        e.g. a navigationBar of the previous tab.

        (WebInspector.ContentBrowser.prototype._contentViewNavigationItemsDidChange):
        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype._takeOwnershipOfContentView):

2017-06-14  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION: SVG files and favicon don't display properly
        https://bugs.webkit.org/show_bug.cgi?id=173389
        <rdar://problem/32774281>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ImageResourceContentView.css:
        (.content-view.resource.image img):
        Don't set a `min-width` as it has odd interactions with flexbox.

2017-06-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Console: Message icons overlay source location
        https://bugs.webkit.org/show_bug.cgi?id=173291

        Reviewed by Matt Baker.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message-location.call-frame):
        This should be a safe change since a method name and a source link already have
        max-width set to 20vw and 30vw respectively.

2017-06-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Don't use -webkit-user-modify CSS property
        https://bugs.webkit.org/show_bug.cgi?id=173232

        Reviewed by Devin Rousso.

        Replace -webkit-user-modify CSS property with contentEditable HTML attribute.

        * UserInterface/Views/Editing.css:
        (.editing):
        * UserInterface/Views/EditingSupport.js:
        (cleanUpAfterEditing):
        * UserInterface/Views/VisualStyleSelectorTreeItem.css:
        (.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title):
        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype.ondeselect):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._commitSelector):

2017-06-13  Sam Weinig  <sam@webkit.org>

        Rename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
        https://bugs.webkit.org/show_bug.cgi?id=80733

        Reviewed by Chris Dumez.

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

2017-06-12  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add grid to images to clarify transparency and image size
        https://bugs.webkit.org/show_bug.cgi?id=173184

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Setting.js:
        Add setting for controlling the image grid.

        * UserInterface/Images/NavigationItemCheckers.svg: Added.

        * UserInterface/Views/ImageResourceContentView.css:
        (.content-view.resource.image):
        (.content-view.resource.image img):
        Replace the border spacing around the image with padding on the container.  This is required
        because a border will extend the area that is effected by `background-image`, meaning that
        the checkerboard would appear in that area as well, giving misleading information as to the
        size of the image.

        * UserInterface/Views/ImageResourceContentView.js:
        (WebInspector.ImageResourceContentView):
        (WebInspector.ImageResourceContentView.prototype.get navigationItems): Added.
        (WebInspector.ImageResourceContentView.prototype.contentAvailable):
        (WebInspector.ImageResourceContentView.prototype.shown): Added.
        (WebInspector.ImageResourceContentView.prototype._toggleImageGrid): Added.
        (WebInspector.ImageResourceContentView.prototype._showGridButtonClicked): Added.
        (WebInspector.ImageResourceContentView.prototype.get imageElement): Deleted.
        Apply the CSS class for showing the grid when the added navigation item is activated.

        * UserInterface/Views/Main.css:
        (img.show-grid):
        Generates a checkerboard pattern via `background-image` using the following process:
         - four `linear-gradients` are drawn, one in each corner
         - each draws one half of a 20x20 square, specified by `background-size`
         - they are then repositioned using `background-position` so that the two halfs align
            +------+      \--2
            |1 /\ 2|      |\ |
            | /  \ |  =>  | \|
            |/    \|  =>  4--\
            |\    /|  =>      1--/
            | \  / |  =>      | /|
            |4 \/ 3|          |/ |
            +------+          /--3

2017-06-10  Dan Bernstein  <mitz@apple.com>

        Reverted r218056 because it made the IDE reindex constantly.

        * Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
        https://bugs.webkit.org/show_bug.cgi?id=173223

        Reviewed by Sam Weinig.

        The rebuilds were happening due to a difference in the compiler options that the IDE and
        xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
        xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
        specify an appropriate path in CLANG_INDEX_STORE_PATH.

        * Configurations/DebugRelease.xcconfig:

2017-06-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION(r217749): Event listeners are removed even if they haven't been added
        https://bugs.webkit.org/show_bug.cgi?id=173185

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel):
        (WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
        Maintain a member variable flag such that event listeners are only removed if it is true.
        It is only set to true once the event listeners are added.

2017-06-09  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION(r217258): Misspelled variable names
        https://bugs.webkit.org/show_bug.cgi?id=173189

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.tabContentViewClassForRepresentedObject):
        * UserInterface/Views/ResourceIcons.css:
        (.large :matches(.resource-icon.resource-type-stylesheet, .stylesheet-icon) .icon):
        (.large .resource-icon.resource-type-stylesheet .icon): Deleted.

2017-06-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Web inspector does not show non-shadow children of an element with a shadow root (e.g. <video>)
        https://bugs.webkit.org/show_bug.cgi?id=173121
        <rdar://problem/30948943>

        Reviewed by Matt Baker.

        * UserInterface/Models/DOMNode.js:
        (WebInspector.DOMNode):
        Only populate _children when we have both the shadowRoots and
        actual children payloads. Backends always send shadowRoots but
        only send children when requested. So if we have shadowRoots
        but expect actual children, don't populate _children until we
        request the child nodes.

2017-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Remove legacy INSPECTOR_SERVER implementation
        https://bugs.webkit.org/show_bug.cgi?id=172966

        Reviewed by Žan Doberšek.

        Remove InspectorFrontendHostStub and thr web sockets initialization.

        * UserInterface/Base/InspectorFrontendHostStub.js: Removed.
        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        * UserInterface/Main.html:
        * UserInterface/Test.html:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
        * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

2017-06-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add ContextMenu item to log WebSocket object to console
        https://bugs.webkit.org/show_bug.cgi?id=172878

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Protocol/RemoteObject.js:
        (WebInspector.RemoteObject.resolveWebSocket):

        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype.populateContextMenu):

2017-06-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Allow user to choose stylesheet when creating new rules
        https://bugs.webkit.org/show_bug.cgi?id=172487

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.addRule.inspectorStyleSheetAvailable):
        (WebInspector.DOMNodeStyles.prototype.addRule):
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype._newRuleButtonContextMenu):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.newRuleButtonClicked):
        (WebInspector.RulesStyleDetailsPanel.prototype.newRuleButtonContextMenu):
        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection):
        (WebInspector.VisualStyleSelectorSection.prototype._addNewRuleContextMenu):
        (WebInspector.VisualStyleSelectorSection.prototype._addNewRule): Renamed _addNewRuleClick.

2017-06-06  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed rollout r217807. Caused a test to crash.

        * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
        (WebInspector.HeapSnapshotNodeProxy):
        (WebInspector.HeapSnapshotNodeProxy.deserialize):
        * UserInterface/Views/HeapSnapshotClassDataGridNode.js:
        (WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
        * UserInterface/Views/HeapSnapshotClusterContentView.js:
        (WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
        * UserInterface/Views/HeapSnapshotDataGridTree.js:
        (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
        * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
        (HeapSnapshot):
        (HeapSnapshot.updateCategoriesAndMetadata):
        (HeapSnapshot.prototype.serializeNode):
        (HeapSnapshot.prototype._gcRootPathes.visitNode):
        (HeapSnapshot.prototype._gcRootPathes):

2017-06-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
        https://bugs.webkit.org/show_bug.cgi?id=172848
        <rdar://problem/25709212>

        Reviewed by Saam Barati.

        * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
        (HeapSnapshot):
        Support the new snapshot version. The only thing that changes are the
        node flags, and its actually completely compatible with version 1.

        (HeapSnapshot.updateCategoriesAndMetadata):
        List the count of object type instances in each class category.

        (HeapSnapshot.prototype.serializeNode):
        Include whether or not the node is an object type.

        * UserInterface/Proxies/HeapSnapshotNodeProxy.js:
        (WebInspector.HeapSnapshotNodeProxy):
        (WebInspector.HeapSnapshotNodeProxy.deserialize):
        Add a new Node isObjectType property based on the new data.

        * UserInterface/Views/HeapSnapshotClassDataGridNode.js:
        (WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
        * UserInterface/Views/HeapSnapshotClusterContentView.js:
        (WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
        If a class contains 50% or more object type instances then it as such
        instead of defaulting to native.

        * UserInterface/Views/HeapSnapshotDataGridTree.js:
        (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
        We can be more specific than the default if the individual instance is
        known to be an object type.

2017-06-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Don't create NavigationSidebarPanel classes until they are needed by a Tab
        https://bugs.webkit.org/show_bug.cgi?id=172621

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView):
        (WebInspector.ContentBrowserTabContentView.prototype.shown):
        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView):
        (WebInspector.TabContentView.prototype.get navigationSidebarPanel):

        * UserInterface/Views/NetworkTabContentView.js:
        (WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
        Use public getter for navigationSidebarPanel.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype.initialLayout): Added.
        Load information about the current frame once the sidebar panel is displayed.

2017-06-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Use initialLayout for DetailsSidebarPanel classes
        https://bugs.webkit.org/show_bug.cgi?id=172381

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
        (WebInspector.ApplicationCacheDetailsSidebarPanel):
        (WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.initialLayout): Added.
        (WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.layout):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype.initialLayout): Added.
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype.layout):
        * UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
        (WebInspector.IndexedDatabaseDetailsSidebarPanel):
        (WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.initialLayout): Added.
        (WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.layout):
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WebInspector.LayerTreeDetailsSidebarPanel):
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype.initialLayout): Added.
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype.layout):
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        (WebInspector.ProbeDetailsSidebarPanel):
        (WebInspector.ProbeDetailsSidebarPanel.prototype.initialLayout): Added.
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel):
        (WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
        (WebInspector.ResourceDetailsSidebarPanel.prototype.initialLayout): Added.
        (WebInspector.ResourceDetailsSidebarPanel.prototype.layout):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):

2017-06-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: The CodeMirror instance in the ConsolePrompt does't need to be refreshed each time it is shown
        https://bugs.webkit.org/show_bug.cgi?id=172608

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsolePrompt.js:
        (WebInspector.ConsolePrompt.prototype.shown): Deleted.
        * UserInterface/Views/DatabaseContentView.js:
        (WebInspector.DatabaseContentView.prototype.shown): Deleted.
        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole):

2017-06-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Attributes table in Node Details Sidebar should have editable keys and values
        https://bugs.webkit.org/show_bug.cgi?id=167076
        <rdar://problem/30033629>

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAttributes):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._attributeNodeValueChanged):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._createAttributesDataGrid): Deleted.
        Rework creation of the attributes DataGrid so that it is only created once and cleared for
        new content. Nodes in the DataGrid are now EditableDataGridNode instances so that attribute
        names and values can be changed from within the sidebar. The DataGrid is also sorted based
        on attribute name, to make finding attributes easier.

        * UserInterface/Views/DataGrid.css:
        (.data-grid tr.editable .cell-content > input):
        (body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):

        * UserInterface/Views/DetailsSection.css:
        (.details-section > .content .data-grid tr:not(.editable) td.value-column):
        (.details-section > .content .data-grid tr:not(.editable) td.value-column > div):
        (.details-section > .content .data-grid td.value-column): Deleted.
        (.details-section > .content .data-grid td.value-column > div): Deleted.

        * UserInterface/Main.html:
        * UserInterface/Views/EditableDataGridNode.js: Added.
        (WebInspector.EditableDataGridNode):
        (WebInspector.EditableDataGridNode.prototype.get element):
        (WebInspector.EditableDataGridNode.prototype.createCellContent):
        (WebInspector.EditableDataGridNode.prototype._handleKeyPress):
        (WebInspector.EditableDataGridNode.prototype._handleBlur):
        (WebInspector.EditableDataGridNode.prototype._notifyInputElementValueChanged):
        Special type of DataGridNode that wraps the content of each cell in an <input>.

2017-06-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Existing query in Search tab doesn't perform search on reload
        https://bugs.webkit.org/show_bug.cgi?id=172663

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Views/SearchSidebarPanel.css:
        (.sidebar > .panel.navigation.search.changed > .banner):
        (.sidebar > .panel.navigation.search.changed > .banner > a):
        (.sidebar > .panel.navigation.search.changed > :matches(.content, .empty-content-placeholder)):

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
        (WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange):
        (WebInspector.SearchSidebarPanel.prototype._contentChanged):
        Listen for any "resource added" event, and show the content changed banner when one occurs.

2017-06-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Should see active Web Sockets when opening Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=172312

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
        (WebInspector.FrameResourceManager.prototype.initialize): Removed.
        Rework order of agent enable calls to ensure that the main frame is initialized before any
        websocket events are dispatched.

        * UserInterface/Models/WebSocketResource.js:
        (WebInspector.WebSocketResource.ReadyState):
        Change symbol strings in enum for better printing in tests.

2017-06-01  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r217691.

        This change broke the Windows build.

        Reverted changeset:

        "Web Inspector: Should see active Web Sockets when opening Web
        Inspector"
        https://bugs.webkit.org/show_bug.cgi?id=172312
        http://trac.webkit.org/changeset/217691

2017-06-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: Should see active Web Sockets when opening Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=172312

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
        (WebInspector.FrameResourceManager.prototype.initialize): Removed.
        Rework order of agent enable calls to ensure that the main frame is initialized before any
        websocket events are dispatched.

        * UserInterface/Models/WebSocketResource.js:
        (WebInspector.WebSocketResource.ReadyState):
        Change symbol strings in enum for better printing in tests.

2017-06-01  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Web Sockets: Unable to inspect a WebSocket that receives >50 messages per second
        https://bugs.webkit.org/show_bug.cgi?id=171904
        <rdar://problem/32095863>

        Reviewed by Matt Baker.

        Every size increase of a resource causes a sidebar item to be re-attached to the DOM. Sending or
        receiving a WebSocket message causes a size increase. When size increase happens too frequently,
        the go-to arrow starts to flicker and becomes unclickable. This patch makes sure a sidebar item gets
        re-attached only when its position (index) changes.

        * UserInterface/Views/NetworkSidebarPanel.js:
        Add the go-to arrow and close buttons when treeElement.status is a spinner element.

        (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype._updateStatus):
        Setting status to "" removes the go-to arrow and close buttons in the Network tab.
        Only set status to "" to remove the spinner.

        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype.reattachIfIndexChanged): Added.

2017-05-31  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add Debug view to Settings tab for debug settings and experimental features
        https://bugs.webkit.org/show_bug.cgi?id=172477

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Setting.js:
        Add three new settings:
         - autoLogProtocolMessages
         - autoLogTimeStats
         - enableUncaughtExceptionReporter

        * UserInterface/Debug/Bootstrap.js:
        (WebInspector.runBootstrapOperations):
        Update toolbar item state when editor in Settings tab is changed.

        * UserInterface/Debug/UncaughtExceptionReporter.js:
        (handleUncaughtExceptionRecord):
        Return if the setting controlling the uncaught exception reporter is disabled.

        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass):
        (InspectorBackendClass.prototype.set dumpInspectorProtocolMessages):
        (InspectorBackendClass.prototype.get dumpInspectorProtocolMessages):
        (InspectorBackendClass.prototype.set dumpInspectorTimeStats):
        (InspectorBackendClass.prototype.get dumpInspectorTimeStats):
        Replace member variables and private Setting objects with items on WebInspector.settings.

        * UserInterface/Main.html:
        * UserInterface/Views/GeneralSettingsView.js: Removed.
        Consolidated into SettingsTabContentView.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView):
        (WebInspector.SettingsTabContentView.prototype.initialLayout):
        (WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):
        (WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
        (WebInspector.SettingsTabContentView.prototype._updateDebugSettingsViewVisibility):

        * UserInterface/Views/SettingsView.js:
        (WebInspector.SettingsView.prototype.addGroupWithCustomSetting):

2017-05-31  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: BackForwardArrows.svg is not shown
        https://bugs.webkit.org/show_bug.cgi?id=172741

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/BackForwardArrows.svg: Renamed id names to match with Apple's images.

2017-05-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: images dragged from Inspector to Desktop are named "Unknown.png"
        https://bugs.webkit.org/show_bug.cgi?id=141515
        <rdar://problem/9251308>

        Reviewed by Wenson Hsieh.

        * UserInterface/Views/ImageResourceContentView.js:
        (WebInspector.ImageResourceContentView.prototype.contentAvailable):
        Set a non-standard "filename" attribute to provide a suggested filename
        for this <img> containing data: or blob: content.

2017-05-30  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add DOM breakpoint image for GTK+
        https://bugs.webkit.org/show_bug.cgi?id=169326

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/DOMBreakpoint.svg: Added.

2017-05-28  Dan Bernstein  <mitz@apple.com>

        [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
        https://bugs.webkit.org/show_bug.cgi?id=172691

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.

2017-05-26  Devin Rousso  <drousso@apple.com>

        Web Inspector: Reloading the page after switching from the Resource tab switches back
        https://bugs.webkit.org/show_bug.cgi?id=172622

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
        Don't show the newly selected tree element's represented object if the sidebar is not visible.

2017-05-26  Devin Rousso  <drousso@apple.com>

        Web Inspector: New Tab contents have extra vertical spacing when wrapped
        https://bugs.webkit.org/show_bug.cgi?id=172530

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/NewTabContentView.css:
        (.new-tab.tab.content-view):

2017-05-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for Web Sockets
        https://bugs.webkit.org/show_bug.cgi?id=172296

        Reviewed by Carlos Garcia Campos.

        Add more free icons for the Web Inspector of GTK+ port.

        * UserInterface/Images/gtk/WebSocket.png: Added.
        * UserInterface/Images/gtk/WebSocket@2x.png: Added.
        * UserInterface/Images/gtk/WebSocketLarge.png: Added.
        * UserInterface/Images/gtk/WebSocketLarge@2x.png: Added.
        * UserInterface/Views/ResourceIcons.css:
        (.resource-icon.resource-type-websocket .icon):
        (.large .resource-icon.resource-type-websocket .icon):
        (body:matches(.mac-platform, .windows-platform) .resource-icon.resource-type-websocket .icon): Deleted.
        (body:matches(.mac-platform, .windows-platform) .large .resource-icon.resource-type-websocket .icon): Deleted.

2017-05-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: Don't create DetailsSidebarPanel classes until they are needed by a Tab
        https://bugs.webkit.org/show_bug.cgi?id=172393

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Remove global instantiation of all DetailsSidebarPanel objects.

        (WebInspector.instanceForClass):
        Utility function for creating and accessing an instance of a given class.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView):
        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView):
        (WebInspector.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
        * UserInterface/Views/ElementsTabContentView.js:
        (WebInspector.ElementsTabContentView):
        * UserInterface/Views/NetworkTabContentView.js:
        (WebInspector.NetworkTabContentView):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView):
        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView):
        * UserInterface/Views/StorageTabContentView.js:
        (WebInspector.StorageTabContentView):
        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView):
        (WebInspector.TabContentView.prototype.get detailsSidebarPanels):
        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView):
        Now accepts an array of DetailsSidebarPanel classes that are all instantiated when they are
        about to be added to the DetailsSidebar.

2017-05-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: Changing the width of a Sidebar when it's collapsed shouldn't trigger a layout
        https://bugs.webkit.org/show_bug.cgi?id=172606

        Reviewed by Matt Baker.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype._recalculateWidth):

2017-05-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add ListStylePositionInside.svg and ListStylePositionOutside.svg
        https://bugs.webkit.org/show_bug.cgi?id=172574

        Reviewed by Michael Catanzaro.

        Add more free icons for the Web Inspector of GTK+ port.

        * UserInterface/Images/gtk/ListStylePositionInside.svg: Added.
        * UserInterface/Images/gtk/ListStylePositionOutside.svg: Added.

2017-05-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new icons AnimationPlayStatePaused.svg and AnimationPlayStateRunning.svg
        https://bugs.webkit.org/show_bug.cgi?id=172579

        Reviewed by Michael Catanzaro.

        Add more free icons for the Web Inspector of GTK+ port.

        * UserInterface/Images/gtk/AnimationPlayStatePaused.svg: Added.
        * UserInterface/Images/gtk/AnimationPlayStateRunning.svg: Added.

2017-05-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for garbage collect and clean buttons in Console
        https://bugs.webkit.org/show_bug.cgi?id=167356

        Reviewed by Michael Catanzaro.

        * UserInterface/Images/gtk/NavigationItemClear.svg: Aligned for 16x16 dimension.
        * UserInterface/Images/gtk/NavigationItemGarbageCollect.svg: Added.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView): Removed the Clear image dimension's conditional expression.
        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView): Ditto.
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView): Ditto.

2017-05-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: Don't load the active recording until a Timeline view needs to be shown
        https://bugs.webkit.org/show_bug.cgi?id=172467

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView):
        (WebInspector.TimelineTabContentView.prototype.restoreFromCookie):
        (WebInspector.TimelineTabContentView.prototype._showTimelineViewForType):
        Move the call to `_recordingLoaded` to when a timeline view needs to be shown and only if
        `_displayedRecording` isn't already set. This delays the creation of the content view for
        the recording to right before it needs to be displayed.


2017-05-23  Matt Baker  <mattbaker@apple.com>

        Web Inspector: content views are not restored on reload if its tree element is filtered out
        https://bugs.webkit.org/show_bug.cgi?id=165744
        <rdar://problem/27461323>

        Reviewed by Devin Rousso.

        By default, NavigationSidebar should get the selected represented object
        from its content browser, instead of relying on the tree selection. This
        allows a filtered tree selection to persist across page loads.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.get currentRepresentedObject):
        (WebInspector.NavigationSidebarPanel.prototype.saveStateToCookie):
        Get the represented object from the content browser instead of relying
        on the tree selection (which can be filtered out).

        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
        (WebInspector.NavigationSidebarPanel.prototype._treeElementWasFiltered):
        Reselect the represented object's tree element when it is shown due
        to a change in the filter state.

        (WebInspector.NavigationSidebarPanel.prototype.get hasSelectedElement): Deleted.
        Not used.
        (WebInspector.NavigationSidebarPanel.prototype.representedObjectWasFiltered): Deleted.
        Not used. Replaced by _treeElementWasFiltered.

2017-05-23  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Cannot delete a disabled XHR breakpoint
        https://bugs.webkit.org/show_bug.cgi?id=171971
        <rdar://problem/32129527>

        Reviewed by Devin Rousso.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
        Dispatch XHRBreakpointRemoved event before removing the breakpoint from
        the backend. A disabled breakpoint will have already been removed, and
        an enabled breakpoint that fails to get removed from the backend should
        be removed from the frontend, to prevent it being resolved in the future.
        Drive-by fix: remove spurious dispatch of DOMBreakpointRemoved event.

        (WebInspector.DOMDebuggerManager.prototype._detachXHRBreakpoint): Deleted.
        Merged with removeXHRBreakpoint to simplify implementation.

2017-05-23  Devin Rousso  <drousso@apple.com>

        Web Inspector: use initialLayout for NetworkSidebarPanel
        https://bugs.webkit.org/show_bug.cgi?id=172470

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel):
        (WebInspector.NetworkSidebarPanel.prototype.showDefaultContentView):
        (WebInspector.NetworkSidebarPanel.prototype.initialLayout):
        Don't create NetworkGridContentView until right before it is shown.

2017-05-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add a new icon DockLeft.svg
        https://bugs.webkit.org/show_bug.cgi?id=172492

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/DockLeft.svg: Added.

2017-05-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add a new icon CSSVariable.svg
        https://bugs.webkit.org/show_bug.cgi?id=172491

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/CSSVariable.svg: Added.

2017-05-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: Changes are not applied in CSS sidebar when switching to Resources tab without blurring editor
        https://bugs.webkit.org/show_bug.cgi?id=172388

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refreshEditor):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionEditorFocused):
        (WebInspector.RulesStyleDetailsPanel.prototype.shown):
        When showing the StyleDetailsPanel, if there is an active editor, which is now saved each
        time one becomes focused, force an update of that editor's content.

2017-05-22  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: New Tab contents not centered vertically
        https://bugs.webkit.org/show_bug.cgi?id=172486

        Reviewed by Devin Rousso.

        * UserInterface/Views/NewTabContentView.css:
        (.new-tab.tab.content-view):
        Use align-items instead of align-content.

2017-05-22  Devin Rousso  <drousso@apple.com>

        Web Inspector: New CSS Rules should go into a new Stylesheet Resource that can be viewed/edited/saved
        https://bugs.webkit.org/show_bug.cgi?id=138810

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager):
        (WebInspector.CSSStyleManager.prototype.preferredInspectorStyleSheetForFrame):
        (WebInspector.CSSStyleManager.prototype._updateResourceContent.fetchedStyleSheetContent):
        Manually dispatch a change event for modifications to CSSStyleSheet objects since they are
        not covered by the listener for Resource changes.

        * UserInterface/Main.html:
        Include WebInspector.CSSStyleSheetTreeElement.

        * UserInterface/Models/Collection.js:
        (WebInspector.Collection.TypeVerifier):
        * UserInterface/Models/ResourceCollection.js:
        (WebInspector.ResourceCollection.TypeVerifier.Stylesheet):
        Add TypeVerifier for CSSStyleSheet.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype._parseRulePayload):
        Manually create a SourceCodeLocation object for Inspector Style Sheets.

        * UserInterface/Views/CSSStyleSheetTreeElement.js: Added.
        (WebInspector.CSSStyleSheetTreeElement):

        * UserInterface/Views/ResourceIcons.css:
        (:matches(.resource-icon.resource-type-stylesheet, .stylessheet-icon) .icon):

        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement.forwardingConstructor):
        (WebInspector.FrameTreeElement):
        (WebInspector.FrameTreeElement.prototype.onattach):
        (WebInspector.FrameTreeElement.prototype.ondetach):
        (WebInspector.FrameTreeElement.prototype.onpopulate):
        (WebInspector.FrameTreeElement.prototype._styleSheetAdded):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel):
        (WebInspector.ResourceSidebarPanel.prototype._styleSheetAdded):
        (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        Listen for the creation of CSSStyleSheet objects and add them to the sidebar if they are an
        Inspector Style Sheet.  Regular style sheets are added via their respective resources.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
        Prevent CSSStyleSheetTreeElement instances from attempting to save state to a cookie.

        * UserInterface/Base/Main.js:
        (WebInspector.tabContentViewClassForRepresentedObject):
        (WebInspector.createSourceCodeLocationLink):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        (WebInspector.ContentView.isViewable):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
        (WebInspector.SourceCodeTextEditor.prototype._looselyMatchesSourceCodeLocation):
        (WebInspector.SourceCodeTextEditor.prototype._matchesSourceCodeLocation):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView):
        (WebInspector.TextResourceContentView.prototype.get supportsSave):
        (WebInspector.TextResourceContentView.prototype.get saveData):
        (WebInspector.TextResourceContentView.prototype._contentWillPopulate):
        (WebInspector.TextResourceContentView.prototype._shouldBeEditable):
        Support editing and saving an Inspector Style Sheet via its CSSStyleSheet object.

2017-05-22  Brian Burg  <bburg@apple.com>

        Web Inspector: webkit reload policy should match default behavior
        https://bugs.webkit.org/show_bug.cgi?id=171385
        <rdar://problem/31871515>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        Use PageAgent.reload.invoke to make the reload options more explicit.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.reloadPage):
        Convert this method to take an options dictionary rather than positional
        boolean arguments. Update call sites to pass correct options.

        When running tests, we want to revalidate unexpired resources, as there
        does not seem to be another reliable way to trigger revalidated cached
        resources from a Web Inspector layout test. Make this behavior the default.

2017-05-22  Simon Fraser  <simon.fraser@apple.com>

        Support transform-box to switch sizing box in SVG
        https://bugs.webkit.org/show_bug.cgi?id=145783

        Reviewed by Dean Jackson.

        Add transform-box to the list of autocompletions.

        * UserInterface/External/CodeMirror/css.js:

2017-05-22  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: In Timelines > JavaScript & Events, digits for sample count are not localized
        https://bugs.webkit.org/show_bug.cgi?id=171819

        Reviewed by Matt Baker.

        * UserInterface/Views/ScriptTimelineDataGridNode.js:
        (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):

2017-05-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: RTL: Text in autocomplete popover should be aligned left
        https://bugs.webkit.org/show_bug.cgi?id=171998

        Reviewed by Brian Burg.

        Autocomplete popover is only used for CSS and JavaScript, and
        these should always be shown as LTR text.

        * UserInterface/Views/CompletionSuggestionsView.css:
        (.completion-suggestions):

2017-05-22  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add active call frame indicator image
        https://bugs.webkit.org/show_bug.cgi?id=161987
        <rdar://problem/28307419>

        Reviewed by Carlos Garcia Campos.

        Add a free icon for the Web Inspector of GTK port.

        * UserInterface/Images/gtk/ActiveCallFrame.svg: Added.

2017-05-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: Use initialLayout for Settings tab
        https://bugs.webkit.org/show_bug.cgi?id=172304

        Reviewed by Matt Baker.

        * UserInterface/Views/GeneralSettingsView.js:
        (WebInspector.GeneralSettingsView.prototype.initialLayout):
        Move listener for zoom factor to only update that editor.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView):
        (WebInspector.SettingsTabContentView.prototype.initialLayout): Added.
        It is not necessary to create the UI for editing settings until the Settings tab is shown.
        Use initialLayout to ensure UI gets created exactly once, after the tab is selected.

2017-05-18  Devin Rousso  <drousso@apple.com>

        REGRESSION (r?): Web Inspector: Shift-click on color square in Styles sidebar should not select text
        https://bugs.webkit.org/show_bug.cgi?id=171902

        Reviewed by Matt Baker.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
        Do not attempt to select text if the element being clicked is a bookmark (such as a swatch).

2017-05-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Web Socket Document Icon
        https://bugs.webkit.org/show_bug.cgi?id=170023

        Reviewed by Matt Baker.

        Icons made by Jon Davis.

        * UserInterface/Images/WebSocket.png: Added.
        * UserInterface/Images/WebSocket@2x.png: Added.
        * UserInterface/Images/WebSocketLarge.png: Added.
        * UserInterface/Images/WebSocketLarge@2x.png: Added.
        New icons for Web Socket resources.

        * UserInterface/Views/ResourceIcons.css:
        (body:matches(.mac-platform, .windows-platform) .resource-icon.resource-type-websocket .icon):
        (body:matches(.mac-platform, .windows-platform) .large .resource-icon.resource-type-websocket .icon):
        Use the icon.

2017-05-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        Web Inspector: [GTK] Adopt currentColor for mask SVG images
        https://bugs.webkit.org/show_bug.cgi?id=150603

        Reviewed by Carlos Garcia Campos.

        * UserInterface/Images/gtk/Circle.svg:
        * UserInterface/Images/gtk/ClearBoth.svg:
        * UserInterface/Images/gtk/ClearLeft.svg:
        * UserInterface/Images/gtk/ClearRight.svg:
        * UserInterface/Images/gtk/Close.svg:
        * UserInterface/Images/gtk/CloseLarge.svg:
        * UserInterface/Images/gtk/Console.svg:
        * UserInterface/Images/gtk/Debugger.svg:
        * UserInterface/Images/gtk/DockBottom.svg:
        * UserInterface/Images/gtk/DockRight.svg:
        * UserInterface/Images/gtk/DownloadArrow.svg:
        * UserInterface/Images/gtk/Elements.svg:
        * UserInterface/Images/gtk/Errors.svg:
        * UserInterface/Images/gtk/Eye.svg:
        * UserInterface/Images/gtk/FloatLeft.svg:
        * UserInterface/Images/gtk/FloatRight.svg:
        * UserInterface/Images/gtk/FontStyleItalic.svg:
        * UserInterface/Images/gtk/FontStyleNormal.svg:
        * UserInterface/Images/gtk/Gear.svg:
        * UserInterface/Images/gtk/Issues.svg:
        * UserInterface/Images/gtk/Logs.svg:
        * UserInterface/Images/gtk/Minus.svg:
        * UserInterface/Images/gtk/NavigationItemClear.svg:
        * UserInterface/Images/gtk/NavigationItemTrash.svg:
        * UserInterface/Images/gtk/Network.svg:
        * UserInterface/Images/gtk/NewTab.svg:
        * UserInterface/Images/gtk/NewTabPlus.svg:
        * UserInterface/Images/gtk/Pause.svg:
        * UserInterface/Images/gtk/Pencil.svg:
        * UserInterface/Images/gtk/Plus13.svg:
        * UserInterface/Images/gtk/Plus15.svg:
        * UserInterface/Images/gtk/ReloadFull.svg:
        * UserInterface/Images/gtk/ReloadToolbar.svg:
        * UserInterface/Images/gtk/Resources.svg:
        * UserInterface/Images/gtk/Search.svg:
        * UserInterface/Images/gtk/SearchResults.svg:
        * UserInterface/Images/gtk/SplitToggleUp.svg:
        * UserInterface/Images/gtk/StepInto.svg:
        * UserInterface/Images/gtk/StepOut.svg:
        * UserInterface/Images/gtk/StepOver.svg:
        * UserInterface/Images/gtk/Stop.svg:
        * UserInterface/Images/gtk/Storage.svg:
        * UserInterface/Images/gtk/TextAlignCenter.svg:
        * UserInterface/Images/gtk/TextAlignJustify.svg:
        * UserInterface/Images/gtk/TextAlignLeft.svg:
        * UserInterface/Images/gtk/TextAlignRight.svg:
        * UserInterface/Images/gtk/TextDecorationLineThrough.svg:
        * UserInterface/Images/gtk/TextDecorationOverline.svg:
        * UserInterface/Images/gtk/TextDecorationUnderline.svg:
        * UserInterface/Images/gtk/TextTransformCapitalize.svg:
        * UserInterface/Images/gtk/TextTransformLowercase.svg:
        * UserInterface/Images/gtk/TextTransformUppercase.svg:
        * UserInterface/Images/gtk/Time.svg:
        * UserInterface/Images/gtk/Timeline.svg:
        * UserInterface/Images/gtk/Undock.svg:
        * UserInterface/Images/gtk/VisualStyleNone.svg:
        * UserInterface/Images/gtk/VisualStylePropertyLinked.svg:
        * UserInterface/Images/gtk/VisualStylePropertyUnlinked.svg:
        * UserInterface/Images/gtk/Weight.svg:

2017-05-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for Search icon of Quick Open dialog
        https://bugs.webkit.org/show_bug.cgi?id=172110

        Reviewed by Michael Catanzaro.

        Add a free icon for the Web Inspector in GTK+.

        * UserInterface/Images/gtk/Search.svg: Added.

2017-05-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for Worker Scripts / Web Sockets
        https://bugs.webkit.org/show_bug.cgi?id=164138

        Reviewed by Michael Catanzaro.

        Add more free icons for the Web Inspector in GTK+.

        * UserInterface/Images/gtk/WorkerScript.png: Added.
        * UserInterface/Images/gtk/WorkerScript@2x.png: Added.
        * UserInterface/Images/gtk/WorkerScriptLarge.png: Added.
        * UserInterface/Images/gtk/WorkerScriptLarge@2x.png: Added.
        * UserInterface/Views/ResourceIcons.css:
        (.script.worker-icon .icon):
        (.large .script.worker-icon .icon):
        (body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon): Deleted.
        (body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon): Deleted.

2017-05-11  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: RTL: "Elements > Styles - Rules" rule and media query headers should be left aligned
        https://bugs.webkit.org/show_bug.cgi?id=171954
        <rdar://problem/31961976>

        Reviewed by Matt Baker.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section > .header):
        (.style-declaration-section.locked > .header > .locked-icon):
        (.style-declaration-section > .header > .icon):
        (.style-declaration-section > .header > textarea):
        (.style-declaration-section.invalid-selector > .header > .icon):
        (body[dir=ltr] .style-declaration-section > .header): Deleted.
        (body[dir=rtl] .style-declaration-section > .header): Deleted.
        (body[dir=ltr] .style-declaration-section.locked > .header > .locked-icon): Deleted.
        (body[dir=rtl] .style-declaration-section.locked > .header > .locked-icon): Deleted.
        (body[dir=ltr] .style-declaration-section > .header > .icon): Deleted.
        (body[dir=rtl] .style-declaration-section > .header > .icon): Deleted.
        (body[dir=ltr] .style-declaration-section > .header > textarea): Deleted.
        (body[dir=rtl] .style-declaration-section > .header > textarea): Deleted.
        Remove RTL rules.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):
        Set dir="ltr" so selector's textareas work correctly.

        * UserInterface/Views/RulesStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .rules):

2017-05-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Error trying to delete DOM breakpoints from the Debugger tab
        https://bugs.webkit.org/show_bug.cgi?id=171970
        <rdar://problem/32129262>

        Reviewed by Brian Burg.

        In the Debugger sidebar, DOM breakpoints can be cleared from a DOM node
        in two ways: by using the DOM node tree element's context menu, or by
        pressing the delete key while the element is selected. Each method used
        a different code path, and the latter had an error which caused it to fail.

        Add a `removeDOMBreakpointsForNode` method to DOMDebuggerManager to make
        the operation convenient, and call it from both event handlers.

        * UserInterface/Controllers/DOMBreakpointTreeController.js:
        (WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
        Use convenience method.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpointsForNode):
        Helper function for removing all of a node's breakpoints.

        * UserInterface/Views/DOMNodeTreeElement.js:
        (WebInspector.DOMNodeTreeElement.prototype.ondelete):
        Use convenience method.

2017-05-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for resources in large sizes (32px @ 1x/2x)
        https://bugs.webkit.org/show_bug.cgi?id=155802
        <rdar://problem/25320686>

        Reviewed by Carlos Garcia Campos.

        Add more free icons for the Web Inspector in GTK+.

        * UserInterface/Images/gtk/ClippingCSSLarge.png: Added.
        * UserInterface/Images/gtk/ClippingCSSLarge@2x.png: Added.
        * UserInterface/Images/gtk/ClippingGenericLarge.png: Added.
        * UserInterface/Images/gtk/ClippingGenericLarge@2x.png: Added.
        * UserInterface/Images/gtk/ClippingJSLarge.png: Added.
        * UserInterface/Images/gtk/ClippingJSLarge@2x.png: Added.
        * UserInterface/Images/gtk/DocumentCSSLarge.png: Added.
        * UserInterface/Images/gtk/DocumentCSSLarge@2x.png: Added.
        * UserInterface/Images/gtk/DocumentFontLarge.png: Added.
        * UserInterface/Images/gtk/DocumentFontLarge@2x.png: Added.
        * UserInterface/Images/gtk/DocumentGenericLarge.png: Added.
        * UserInterface/Images/gtk/DocumentGenericLarge@2x.png: Added.
        * UserInterface/Images/gtk/DocumentImageLarge.png: Added.
        * UserInterface/Images/gtk/DocumentImageLarge@2x.png: Added.
        * UserInterface/Images/gtk/DocumentJSLarge.png: Added.
        * UserInterface/Images/gtk/DocumentJSLarge@2x.png: Added.
        * UserInterface/Images/gtk/DocumentMarkupLarge.png: Added.
        * UserInterface/Images/gtk/DocumentMarkupLarge@2x.png: Added.

2017-05-10  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: in Timelines > JavaScript & Events, digits for timer and animation frame number are not localized
        https://bugs.webkit.org/show_bug.cgi?id=171818

        Reviewed by Joseph Pecoraro.

        These numbers need to be formatted with %d, not %s.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.EventType.displayName):

2017-05-10  Brian Burg  <bburg@apple.com>

        Web Inspector: remove dead code for switching Toolbar display options
        https://bugs.webkit.org/show_bug.cgi?id=170738

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        * UserInterface/Views/ButtonToolbarItem.css:
        (.toolbar .item.button > .glyph):
        (.toolbar .item.button > .label):
        (.toolbar.icon-and-label-vertical .item.button): Deleted.
        (.toolbar.icon-and-label-horizontal .item.button): Deleted.
        (.toolbar.small-size .item.button > .glyph): Deleted.
        (.toolbar.label-only .item.button > .glyph): Deleted.
        (.toolbar.label-only .item.activate.button.activated > .label): Deleted.
        (.toolbar.icon-and-label-horizontal .item.button > .label): Deleted.
        (.toolbar.icon-only .item.button > .label): Deleted.
        * UserInterface/Views/ControlToolbarItem.css:
        (.toolbar .item.control):
        (.toolbar:matches(.icon-and-label-horizontal, .icon-only) .item.control): Deleted.
        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard-container):
        (.toolbar.icon-and-label-vertical:matches(.small-size, .normal-size) .dashboard-container): Deleted.
        (.toolbar.label-only .dashboard-container,): Deleted.
        (.toolbar.normal-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard-container): Deleted.
        (.toolbar.label-only .dashboard-container .advance-arrow): Deleted.
        (body[dir=ltr] .toolbar.label-only .dashboard-container .advance-arrow): Deleted.
        (body[dir=rtl] .toolbar.label-only .dashboard-container .advance-arrow): Deleted.
        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default > .item):
        (.toolbar.label-only .dashboard.default > .item,): Deleted.
        (.toolbar.normal-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard.default > .item): Deleted.
        * UserInterface/Views/ReplayDashboardView.css:
        (.toolbar .dashboard.replay .item.button > .glyph):
        (.toolbar.label-only .dashboard.replay .item.button > .glyph): Deleted.
        * UserInterface/Views/Toolbar.css:
        (.toolbar .control-section):
        (.toolbar:matches(.icon-and-label-horizontal.small-size, .icon-only.small-size, .label-only) .control-section): Deleted.
        * UserInterface/Views/Toolbar.js:
        (WebInspector.Toolbar):
        (WebInspector.Toolbar.prototype.layout):
        (WebInspector.Toolbar.prototype.get displayMode): Deleted.
        (WebInspector.Toolbar.prototype.set displayMode): Deleted.
        (WebInspector.Toolbar.prototype.get sizeMode): Deleted.
        (WebInspector.Toolbar.prototype.set sizeMode): Deleted.
        (WebInspector.Toolbar.prototype._handleContextMenuEvent): Deleted.
        (WebInspector.Toolbar.prototype._changeDisplayMode): Deleted.
        (WebInspector.Toolbar.prototype._toggleSmallIcons): Deleted.

2017-05-10  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: Copy to clipboard fails via InspectorFrontendHostStub
        https://bugs.webkit.org/show_bug.cgi?id=171907

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/InspectorFrontendHostStub.js:
        (WebInspector.InspectorFrontendHostStub.prototype.copyText):
        Actually make a text selection before attempting to copy to clipboard.

2017-05-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Provide resource load error reason text in details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=171901
        <rdar://problem/29850995>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidFailLoading):
        * UserInterface/Models/Resource.js:
        (WebInspector.Resource):
        (WebInspector.Resource.prototype.get failureReasonText):
        (WebInspector.Resource.prototype.markAsFailed):
        * UserInterface/Protocol/NetworkObserver.js:
        (WebInspector.NetworkObserver.prototype.loadingFailed):
        Include the error text we got from the backend. In most cases this should
        be a localized error description.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshErrorReason):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
        Include an Error field alongside the status code section when there was an error.

2017-05-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK][Win] Web Inspector: Cann't open "Quick Open" dialog by pressing Ctrl+Shift+O
        https://bugs.webkit.org/show_bug.cgi?id=171798

        Reviewed by Michael Catanzaro.

        PC can't input the shortcut keys Command+Shift+O and Command+P.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded): Use CommandOrControl instead of Command.

2017-05-09  Brian Burg  <bburg@apple.com>

        Web Inspector: Assertion failed: Cannot select item with unexpected parent bar. (at NavigationBar.js:132)
        https://bugs.webkit.org/show_bug.cgi?id=171885

        Reviewed by Matt Baker.

        This new assertion revealed a real misuse of the NavigationBar API.

        * UserInterface/Views/NavigationBar.js:
        (WebInspector.NavigationBar.prototype.set selectedNavigationItem):
        Improve this to be an assertion so it can be paused at using the debugger.

        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView.prototype._changeViewMode):
        We need to set a NavigationItem as the selected item, not its identifier.
        Look up the corresponding item for the identifier that we received (the view mode).

2017-05-08  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: box model labels have bad alignment
        https://bugs.webkit.org/show_bug.cgi?id=171817

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/BoxModelDetailsSectionRow.css:
        (.details-section .row.box-model .label):
        (body[dir=ltr] .details-section .row.box-model .label):
        (body[dir=rtl] .details-section .row.box-model .label):
        We can't just use a mirrored leading margin because all the
        text here is center-aligned. Just hardcode a reasonable value.

2017-05-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Request/Response toggles not working
        https://bugs.webkit.org/show_bug.cgi?id=171833
        <rdar://problem/31341637>

        Reviewed by Brian Burg.

        * UserInterface/Views/HierarchicalPathNavigationItem.js:
        (WebInspector.HierarchicalPathNavigationItem.set components.let.componentsEqual):
        (WebInspector.HierarchicalPathNavigationItem.prototype.set components):
        If the new components being set were shallowly equal, then they wouldn't
        actually be updated even if ultimately they are different. In this case
        the Path Components with values "request" / "response" would not update
        between different resources because the path components had equivalent
        simple values. Provide a different discriminator (comparisonData) which
        can be an object so these path components compare as necessarily different.

        * UserInterface/Views/HeapSnapshotClusterContentView.js:
        (WebInspector.HeapSnapshotClusterContentView.createPathComponent):
        (WebInspector.HeapSnapshotClusterContentView):
        * UserInterface/Views/ResourceClusterContentView.js:
        (WebInspector.ResourceClusterContentView.createPathComponent):
        (WebInspector.ResourceClusterContentView):
        (WebInspector.ResourceClusterContentView.prototype._resourceTypeDidChange):
        * UserInterface/Views/SVGImageResourceClusterContentView.js:
        (WebInspector.SVGImageResourceClusterContentView):
        * UserInterface/Views/ScriptClusterTimelineView.js:
        (WebInspector.ScriptClusterTimelineView.createPathComponent):
        (WebInspector.ScriptClusterTimelineView):
        Provide comparisonData for path components cases that would need it.

2017-05-08  Chris Dumez  <cdumez@apple.com>

        Drop non-standard Element.scrollByLines() / scrollByPages()
        https://bugs.webkit.org/show_bug.cgi?id=171820

        Reviewed by Simon Fraser.

        Drop non-standard Element.scrollByLines() / scrollByPages() from
        WebInspector code.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-05-08  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Make it easy to dynamically show/hide a SettingsView
        https://bugs.webkit.org/show_bug.cgi?id=171765
        <rdar://problem/32031280>

        Reviewed by Brian Burg.

        This patch adds SettingsTabContentView.prototype.setSettingsViewVisible,
        for dynamically showing/hiding a child view (and its NavigationBar item).
        The following new behavior is relevant when more that one child SettingsView
        exist in the Settings tab:
         - Hiding the selected view will cause a new view to become selected.
           The previous visible view is selected, if it exists. Otherwise the
           next visible view is used.
         - Showing a view when no views are selected cause the view to be selected.

        As the Settings tab currently has only one child view, the behavior above
        was tested by adding a handful of vanilla SettingsView objects to the tab
        and toggling their visibility.

        * UserInterface/Views/NavigationBar.js:
        Simplify overloaded parameter `navigationItemOrIdentifierOrIndex`, which
        is used in a few places and is always an instance of NavigationItem.

        (WebInspector.NavigationBar):
        (WebInspector.NavigationBar.prototype.removeNavigationItem):
        (WebInspector.NavigationBar.prototype.get selectedNavigationItem):
        (WebInspector.NavigationBar.prototype.set selectedNavigationItem):
        (WebInspector.NavigationBar.prototype.findNavigationItem):
        Lookup a navigation item by its identifier.
        (WebInspector.NavigationBar.prototype._findNavigationItem): Deleted.
        Replaced overloaded private method with new public method.

        * UserInterface/Views/NavigationItem.js:
        Cleanup.
        (WebInspector.NavigationItem):
        (WebInspector.NavigationItem.prototype.get identifier):
        (WebInspector.NavigationItem.prototype.get element):
        (WebInspector.NavigationItem.prototype.get minimumWidth):
        (WebInspector.NavigationItem.prototype.get parentNavigationBar):

        * UserInterface/Views/SettingsTabContentView.css:
        Use `visibility: hidden` instead of `display: none` when hiding the
        NavigationBar, so that the selected view's top position stays the same.

        (.content-view.settings):
        (.content-view.settings .navigation-bar.invisible):

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView):
        Switch to an array of SettingsViews instead of a map. Fast lookup isn't
        a concern due to the small number of items, and having indices simplifies
        traversing the previous/next items in `setSettingsViewVisible`.

        (WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
        Rename `page` to `settingsView`.
        (WebInspector.SettingsTabContentView.prototype.addSettingsView):
        (WebInspector.SettingsTabContentView.prototype.setSettingsViewVisible):
        Shows/hides the specified view. Hiding the selected SettingsView will
        cause another visible view to become selected, if one exists.

        (WebInspector.SettingsTabContentView.prototype._updateNavigationBarVisibility):
        Helper for updating navigation bar visibility after making a change
        to the navigation items.

        (WebInspector.SettingsTabContentView.prototype._navigationItemSelected):

2017-05-08  Myles C. Maxfield  <mmaxfield@apple.com>

        Unprefix unicode-bidi CSS values
        https://bugs.webkit.org/show_bug.cgi?id=171761

        Reviewed by Simon Fraser.

        * UserInterface/Models/CSSKeywordCompletions.js:

2017-05-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icon for timeline recording stopwatch
        https://bugs.webkit.org/show_bug.cgi?id=154088

        Reviewed by Carlos Garcia Campos.

        Add a free icon and remove some unused ones for the Web Inspector
        in GTK+.

        * UserInterface/Images/gtk/Stopwatch.png: Removed.
        * UserInterface/Images/gtk/Stopwatch.svg: Added.
        * UserInterface/Images/gtk/Stopwatch@2x.png: Removed.
        * UserInterface/Views/TimelineIcons.css:
        (body:not(.mac-platform, .windows-platform) .stopwatch-icon .icon): Deleted.

2017-05-05  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r212998): Web Inspector: bad spacing of go-to arrow for HTTP POST request data
        https://bugs.webkit.org/show_bug.cgi?id=171674

        Reviewed by Matt Baker.

        * UserInterface/Views/DetailsSection.css:
        (body[dir=ltr] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
        (body[dir=rtl] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
        Swap margin-left and margin-right. This regressed when RTL support was added.

2017-05-03  Devin Rousso  <webkit@devinrousso.com>

        REGRESSION (r215630): Web Inspector: Option-Click on URL in Styles sidebar does not work
        https://bugs.webkit.org/show_bug.cgi?id=171569

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
        Add missing `frame` parameter to `WebInspector.openURL`.

2017-05-03  Nikita Vasilyev  <nvasilyev@apple.com>

        Uncaught Exception: Can't make a ContentView for an unknown representedObject of type: IndexedDatabase
        https://bugs.webkit.org/show_bug.cgi?id=167473
        <rdar://problem/30249715>

        Reviewed by Matt Baker.

        When an indexed database is selected in the Storage navigation sidebar, show its host, security origin, and version.

        Previously, selecting an indexed database didn't change the content view. It could lead to a misleading state
        when an indexed database is selected in the sidebar, but the content view showed previously selected item such as
        Cookies or Local Storage.

        * UserInterface/Main.html:
        * UserInterface/Views/ContentView.css:
        (.content-view .details-section):
        (.content-view .details-section > .content):
        (.content-view .details-section > .content > .group > .row.simple > .label):
        (.content-view .details-section:last-child):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        (WebInspector.ContentView.isViewable):
        * UserInterface/Views/IndexedDatabaseContentView.css: Added.
        (.indexed-database.content-view):
        (.indexed-database.content-view .indexed-database-details):
        (.indexed-database.content-view .details-section > .header):
        * UserInterface/Views/IndexedDatabaseContentView.js: Added.
        (WebInspector.IndexedDatabaseContentView):
        * UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
        (WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.inspect):
        Don't show the details sidebar for IndexedDB top level item since it has the same content as the content view.

        * UserInterface/Views/StorageSidebarPanel.js:
        (WebInspector.StorageSidebarPanel._treeSelectionDidChange):
        * UserInterface/Views/StorageTabContentView.js:
        (WebInspector.StorageTabContentView.prototype.canShowRepresentedObject):
        (WebInspector.StorageTabContentView):

2017-05-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: 404 Image Load does not appear as a failure in Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=171587
        <rdar://problem/13222846>

        Reviewed by Matt Baker.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.createObjectURL):
        This may return null if the data is not a Blob. This can happen if we
        loaded non-base64Encoded text content for an Image. Such as a 404 response.

        (WebInspector.Resource.prototype.hadLoadingError):
        Consistent way to check for any kind of loading error.

        (WebInspector.Resource.prototype.getImageSize):
        Handle failure to create an object URL.

        * UserInterface/Views/FontResourceContentView.js:
        (WebInspector.FontResourceContentView.prototype.contentAvailable):
        * UserInterface/Views/ImageResourceContentView.js:
        (WebInspector.ImageResourceContentView.prototype.contentAvailable):
        Handle failure to create an object URL.
:
        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView):
        (WebInspector.ResourceContentView.prototype.showGenericErrorMessage):
        (WebInspector.ResourceContentView.prototype._protocolError): Deleted.
        Provide a way for subclasses to show a generic resource loading error.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype._updateStatus):
        Use the consistent helper for denoting loading errors.

2017-05-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Remove GTK+ icon FontVariantSmallCaps.svg
        https://bugs.webkit.org/show_bug.cgi?id=171542

        Reviewed by Carlos Garcia Campos.

        This image is not used and Apple's one was removed in Bug 148720.

        * UserInterface/Images/gtk/FontVariantSmallCaps.svg: Removed.

2017-05-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Remove GTK+ icons AnimationPlayStatePaused.svg and AnimationPlayStateRunning.svg
        https://bugs.webkit.org/show_bug.cgi?id=171540

        Reviewed by Carlos Garcia Campos.

        These images aren't used since r204152 (Bug 160566). Instead,
        Plus13.svg and Minus.svg are used.

        * UserInterface/Images/gtk/BreakpointActionAdd.svg: Removed.
        * UserInterface/Images/gtk/BreakpointActionRemove.svg: Removed.

2017-04-30  Chris Dumez  <cdumez@apple.com>

        Drop support for legacy ClientRect / ClientRectList
        https://bugs.webkit.org/show_bug.cgi?id=171418

        Reviewed by Sam Weinig.

        Drop ClientRectList-related code.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-04-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for different Script Timeline Views (Events and Call Trees)
        https://bugs.webkit.org/show_bug.cgi?id=155077

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/gtk/CallTrees.svg: Added.
        * UserInterface/Images/gtk/Events.svg: Added.
        * UserInterface/Views/PathComponentIcons.css:
        (body:not(.mac-platform, .windows-platform) .heap-snapshot-record .icon,):
        (body:not(.mac-platform, .windows-platform) .events-icon .icon,): Deleted.

2017-04-27  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Remove unused ToggleControlToolbarItem.js
        https://bugs.webkit.org/show_bug.cgi?id=171401

        Reviewed by Joseph Pecoraro.

        * UserInterface/Main.html:
        * UserInterface/Views/ToggleControlToolbarItem.js: Removed.

2017-04-27  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: inherit system layout direction by default
        https://bugs.webkit.org/show_bug.cgi?id=171402
        <rdar://problem/30753626>

        Reviewed by Joseph Pecoraro.

        Web Inspector's layout direction should follow the system layout direction
        by default now that most RTL bugs seem to be fixed. We are ready for more
        feedback.

        * UserInterface/Base/Main.js:
        * UserInterface/Base/Setting.js:
        Rename the existing "layout-direction" setting so that the new default
        value is set properly even for people who have overridden the layout
        direction while the setting was exposed to everyone.

        * UserInterface/Views/GeneralSettingsView.js:
        (WebInspector.GeneralSettingsView.prototype.initialLayout):
        (WebInspector.GeneralSettingsView.prototype.layout):
        (WebInspector.GeneralSettingsView):
        Make the layout direction override setting only visible when DebugUI
        is turned on. This remains only for engineers to quickly check layout bugs.

        * UserInterface/Views/SettingsView.js:
        (WebInspector.SettingsView.prototype.addGroupWithCustomSetting):
        (WebInspector.SettingsView.prototype.addCustomSetting): Deleted.
        Refactor the convenience method to return both the group and the
        custom setting. This allows us to toggle .hidden on the entire
        row for the Layout Direction setting (label and editor).

        * Localizations/en.lproj/localizedStrings.js:
        Unlocalize the setting strings since they are only shown in engineering builds now.

2017-04-27  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: fix alignment of "truncated call stack" message
        https://bugs.webkit.org/show_bug.cgi?id=170477

        Reviewed by Devin Rousso.

        * UserInterface/Views/ThreadTreeElement.css:
        (.tree-outline > .item.thread + ol > .item.truncated-call-frames):
        (body[dir=ltr] .tree-outline > .item.thread + ol > .item.truncated-call-frames):
        (body[dir=rtl] .tree-outline > .item.thread + ol > .item.truncated-call-frames):
        (.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
        (body[dir=ltr] .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
        (body[dir=rtl] .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):

2017-04-27  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: layout issues in Open Resource Dialog
        https://bugs.webkit.org/show_bug.cgi?id=170551

        Reviewed by Matt Baker.

        We need to flip the cancel and search icons, and flip padding
        in the tree outline that contains search results.

        I am still not happy with the title/subtitle ordering
        (i.e., the domain vs the resource name), but this issue will
        be solved primarily in the navigation sidebar first and then
        adjusted for Open Resource Dialog if those changes are not
        sufficient.

        * UserInterface/Views/OpenResourceDialog.css:
        (.open-resource-dialog > .field):
        (body[dir=ltr] .open-resource-dialog > .field):
        (body[dir=rtl] .open-resource-dialog > .field):
        (.open-resource-dialog > .field::before):
        (body[dir=ltr] .open-resource-dialog > .field::before):
        (body[dir=rtl] .open-resource-dialog > .field::before):
        (.open-resource-dialog > .field > input):
        (body[dir=ltr] .open-resource-dialog > .field > input):
        (body[dir=rtl] .open-resource-dialog > .field > input):
        (.open-resource-dialog > .field > img):
        (body[dir=ltr] .open-resource-dialog > .field > img):
        (body[dir=rtl] .open-resource-dialog > .field > img):
        (.open-resource-dialog > .tree-outline .item):
        (body[dir=ltr] .open-resource-dialog > .tree-outline .item):
        (body[dir=rtl] .open-resource-dialog > .tree-outline .item):

2017-04-27  Brian Burg  <bburg@apple.com>

        Web Inspector: fix tooltip wording for Reload button
        https://bugs.webkit.org/show_bug.cgi?id=171073
        <rdar://problem/31378524>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):

2017-04-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Add new GTK+ icons for instrument icons
        https://bugs.webkit.org/show_bug.cgi?id=153892
        <rdar://problem/24510460>

        Reviewed by Joseph Pecoraro.

        Add more free icons from art-libre symbolic and removed some
        unused ones for the Web Inspector in GTK+.

        * UserInterface/Images/gtk/Colors.png: Removed.
        * UserInterface/Images/gtk/Colors@2x.png: Removed.
        * UserInterface/Images/gtk/ColorsLarge.png: Removed.
        * UserInterface/Images/gtk/ColorsLarge@2x.png: Removed.
        * UserInterface/Images/gtk/Frames.png: Removed.
        * UserInterface/Images/gtk/Frames@2x.png: Removed.
        * UserInterface/Images/gtk/HeapAllocationsInstrument.svg: Added.
        * UserInterface/Images/gtk/LayoutInstrument.svg: Added.
        * UserInterface/Images/gtk/MemoryInstrument.svg: Added.
        * UserInterface/Images/gtk/Network.png: Removed.
        * UserInterface/Images/gtk/Network@2x.png: Removed.
        * UserInterface/Images/gtk/NetworkInstrument.svg: Added.
        * UserInterface/Images/gtk/NetworkLarge.png: Removed.
        * UserInterface/Images/gtk/NetworkLarge@2x.png: Removed.
        * UserInterface/Images/gtk/RenderingFramesInstrument.svg: Added.
        * UserInterface/Images/gtk/Script.png: Removed.
        * UserInterface/Images/gtk/Script@2x.png: Removed.
        * UserInterface/Images/gtk/ScriptLarge.png: Removed.
        * UserInterface/Images/gtk/ScriptLarge@2x.png: Removed.
        * UserInterface/Images/gtk/ScriptsInstrument.svg: Added.
        * UserInterface/Views/TimelineIcons.css:
        (body:not(.mac-platform, .windows-platform) .network-icon .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .network-icon.large .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .layout-icon .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .layout-icon.large .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .script-icon .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .script-icon.large .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .rendering-frame-icon .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .memory-icon .icon): Deleted.
        (body:not(.mac-platform, .windows-platform) .heap-allocations-icon .icon): Deleted.

2017-04-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: gtk/NavigationItemCurleyBraces.svg is licensed under NonCommercial CC
        https://bugs.webkit.org/show_bug.cgi?id=170902

        Reviewed by Michael Catanzaro.

        * UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:
        Replaced with new one created by me.

2017-04-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: some SVG images are specified 'currentColor' incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=170977

        Reviewed by Michael Catanzaro.

        The keyword 'currentColor' is specifed manually in Bug 150602.
        But, some SVG images are specified incorrectly.

        * UserInterface/Images/gtk/NavigationItemTypes.svg: Do not stroke
        with currentColor, but fill.
        * UserInterface/Images/gtk/UpDownArrows.svg: Ditto.

2017-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remote inspector should support inspecting targets with previous version of backend commands
        https://bugs.webkit.org/show_bug.cgi?id=171267

        Reviewed by Michael Catanzaro.

        Allow to use data URLs for script-src.

        * UserInterface/Main.html:

2017-04-25  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r209882): Web Inspector: Command-G does not work in the console
        https://bugs.webkit.org/show_bug.cgi?id=170555
        <rdar://problem/31481247>

        Reviewed by Brian Burg.

        Command-G didn't work in the console when the console content view was in focus. It only
        worked when the search input field was focused.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
        (WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Added.
        (WebInspector.LogContentView.prototype.findBannerRevealNextResult):
        (WebInspector.LogContentView.prototype.highlightNextSearchMatch): Added.
        Re-introduce highlightPreviousSearchMatch and highlightNextSearchMatch methods that were
        removed in r209882.

2017-04-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network Tab - Sorting by Priority Column hides all rows in the datagrid (uncaught exception)
        https://bugs.webkit.org/show_bug.cgi?id=171312
        <rdar://problem/31828554>

        Reviewed by Brian Burg.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.comparePriority):
        Provide a helper for compariting NetworkPriority enum values.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        (WebInspector.NetworkGridContentView.prototype.dataGridSortComparator):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.dataGridSortComparator):
        Custom sort handler for priority.

2017-04-25  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r214863): Web Inspector: Uncaught Exception when losing focus from a selector field
        https://bugs.webkit.org/show_bug.cgi?id=171254
        <rdar://problem/31813959>

        Reviewed by Joseph Pecoraro.

        The event.relatedTarget of a blur event contains the element where focus moved to.
        In some cases this can be null, such as if the user leaves the application window.
        For example Command+Tab to switch to another application.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):

2017-04-25  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Open the new bug page in the new tab
        https://bugs.webkit.org/show_bug.cgi?id=171253

        Reviewed by Joseph Pecoraro.

        * UserInterface/Debug/UncaughtExceptionReporter.js:
        (createErrorSheet):

2017-04-25  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Space" localized string is not loaded in combined and minified builds
        https://bugs.webkit.org/show_bug.cgi?id=171283
        <rdar://problem/30871371>

        Reviewed by Brian Burg.

        In combined and minified builds, the document.write() to load the
        localized strings script doesn't happen before the KeyboardShortcut
        global code in Main.js evaluates, so there is no UIString because
        window.localizedStrings hasn't populated yet. Since this is the only
        instance, populate the display UIString lazily and provide warnings
        in minified builds if this happens.

        * UserInterface/Base/LoadLocalizedStrings.js:
        (WebInspector.UIString):
        Provide a warning if a UIString was attempted before the strings have loaded.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        For this rare instance, populate the display name of the string when we are
        sure strings have loaded.

        * UserInterface/Models/KeyboardShortcut.js:
        Revert the UIString here, but note that it will be populated later.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.setCachedResponseBodySize):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
        Address console.asserts not ending in semicolon warnings produced during
        optimized builds. Without semicolons they are not stripped.

2017-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        Web Inspector: TypeError:​ sourceCodeLocation.populateLiveDisplayLocationTooltip is not a function
        https://bugs.webkit.org/show_bug.cgi?id=171259

        Reviewed by Joseph Pecoraro.

        The first argument of WebInspector.createSourceCodeLocationLink
        should be SourceCodeLocation type.

        * UserInterface/Views/TimelineDataGridNode.js:
        (WebInspector.TimelineDataGridNode.prototype.createCellContent):
        Pass 'callFrame.sourceCodeLocation' instead of 'value' to the
        first argument.

2017-04-24  Matt Baker  <mattbaker@apple.com>

        Web Inspector: DOM/XHR breakpoint sections should be collapsed by default
        https://bugs.webkit.org/show_bug.cgi?id=170931

        Reviewed by Brian Burg.

        Set the default collapsed parameter for DOM / XHR Breakpoints sections,
        and auto-expand the DOM Breakpoints when a breakpoint is added.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):

2017-04-21  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Add titles to Network grid items for easier reading when text overflows
        https://bugs.webkit.org/show_bug.cgi?id=170792

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        (WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
        Do not add a title if the text is an em-dash, as that title will not convey any information.

2017-04-21  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Don't show the Search tab if it's open and matches the representedObject
        https://bugs.webkit.org/show_bug.cgi?id=168709

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.handlePossibleLinkClick):
        (WebInspector.openURL):
        (WebInspector.showSourceCode):
        (WebInspector.showOriginalUnformattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeTextRange):
        (WebInspector._frameWasAdded):
        (WebInspector.createSourceCodeLocationLink):
        (WebInspector.linkifyLocation):
        (WebInspector.linkifyElement):
        Add `options` parameter to provide greater customization.  Also fix some style issues.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView.prototype.hasRepresentedObject): Deleted.
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject): Deleted.
        * UserInterface/Views/NetworkTabContentView.js:
        (WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
        Ensure that the Search tab can only display resources that it has entries for in its view.
        Also rework the way in which this is determined.

        * UserInterface/Controllers/BreakpointPopoverController.js:
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.showMainResourceForFrame):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype.refresh):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
        (WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked):
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._linkifyLocation):
        * UserInterface/Views/DOMDetailsSidebarPanel.js:
        (WebInspector.DOMDetailsSidebarPanel.prototype._mouseWasClicked):
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):
        * UserInterface/Views/DebuggerDashboardView.js:
        (WebInspector.DebuggerDashboardView.prototype._rebuildLocation):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonGotoArrow):
        * UserInterface/Views/ErrorObjectView.js:
        (WebInspector.ErrorObjectView.makeSourceLinkWithPrefix):
        * UserInterface/Views/EventListenerSectionGroup.js:
        (WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        (WebInspector.ObjectTreeBaseTreeElement):
        * UserInterface/Views/ProbeSetDetailsSection.js:
        (WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):
        * UserInterface/Views/ProfileDataGridNode.js:
        (WebInspector.ProfileDataGridNode.prototype._displayContent):
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._goToRequestDataClicked):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
        * UserInterface/Views/RulesStyleDetailsPanel.js:
        (WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
        * UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:
        (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._createNameCellContent):
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
        * UserInterface/Views/TimelineDataGridNode.js:
        (WebInspector.TimelineDataGridNode.prototype.createCellContent):
        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
        Ensure that the Search tab is never shown from links generated by these functions.
        Also do the same for the Network tab in some cases.

        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.canShowContentViewForTreeElement): Deleted.
        (WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement): Deleted.
        Drive-by cleanup: remove dead code.

2017-04-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add regular expression support to XHR breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=170099
        <rdar://problem/31558082>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        New strings for the Add XHR Breakpoint popover.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager):
        (WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
        Update for new XHRBreakpoint constructor.
        (WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint):
        Set `isRegex` flag.

        * UserInterface/Main.html:
        New files for CodeMirror mode and breakpoint popover.

        * UserInterface/Models/XHRBreakpoint.js:
        Breakpoint can be of type Text or RegularExpression.
        (WebInspector.XHRBreakpoint):
        (WebInspector.XHRBreakpoint.prototype.get type):
        (WebInspector.XHRBreakpoint.prototype.get serializableInfo):

        * UserInterface/Views/CodeMirrorRegexMode.css: Added.
        (.cm-s-default .cm-regex-character-set):
        (.cm-s-default .cm-regex-character-set-negate):
        (.cm-s-default :matches(.cm-regex-escape, .cm-regex-escape-2, .cm-regex-escape-3)):
        (.cm-s-default :matches(.cm-regex-group, .cm-regex-lookahead)):
        (.cm-s-default .cm-regex-quantifier):
        (.cm-s-default :matches(.cm-regex-literal, .cm-regex-special, .cm-regex-backreference)):
        Colors for regular expression syntax highlighting. The regex mode emits
        more class names than we have separate colors for, allowing for further
        customization in the future.

        * UserInterface/Views/CodeMirrorRegexMode.js: Added.
        (characterSetTokenizer):
        (consumeEscapeSequence):
        (tokenBase):
        New CodeMirror mode for highlighting "text/x-regex" content.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        Use new popover type for creating XHR breakpoints.
        (WebInspector.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked):
        (WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
        (WebInspector.DebuggerSidebarPanel):

        * UserInterface/Views/XHRBreakpointPopover.css: Added.
        (.popover .xhr-breakpoint-content):
        (.popover .xhr-breakpoint-content > .editor-wrapper):
        (.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
        (body[dir=ltr] .popover .xhr-breakpoint-content > .editor-wrapper > .editor):
        (body[dir=rtl] .popover .xhr-breakpoint-content > .editor-wrapper > .editor):
        (.popover .xhr-breakpoint-content > .editor-wrapper > .editor > .CodeMirror):
        (.popover .xhr-breakpoint-content > .editor-wrapper > .editor > .CodeMirror-scroll):
        Styles for new popover.

        * UserInterface/Views/XHRBreakpointPopover.js: Added.
        New popover class. Includes a picker for selecting breakpoint type
        (Text or RegularExpression), and has an improved popover caption. Input
        field style and placeholder text changes based on the breakpoint type.

        (WebInspector.XHRBreakpointPopover):
        (WebInspector.XHRBreakpointPopover.prototype.get result):
        (WebInspector.XHRBreakpointPopover.prototype.get type):
        (WebInspector.XHRBreakpointPopover.prototype.get value):
        (WebInspector.XHRBreakpointPopover.prototype.show.addOption):
        (WebInspector.XHRBreakpointPopover.prototype.show):
        (WebInspector.XHRBreakpointPopover.prototype._createEditor):
        (WebInspector.XHRBreakpointPopover.prototype._updateEditor):
        (WebInspector.XHRBreakpointPopover.prototype._presentOverTargetElement):

        * UserInterface/Views/XHRBreakpointTreeElement.js:
        (WebInspector.XHRBreakpointTreeElement):
        Differentiate breakpoint type by enclosing subtitle in either double quotes
        or regex-literal delimiters, depending on the type of breakpoint.

2017-04-19  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r209882): Web Inspector: Console's filter bar has text search field, but the next/previous buttons don't do anything
        https://bugs.webkit.org/show_bug.cgi?id=170556
        <rdar://problem/31481755>

        Reviewed by Matt Baker.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.performSearch):
        Update numberOfResults setter, which sets "disabled" attribute to false when numberOfResults > 0.

2017-04-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: XHR breakpoints shouldn't be cleared from the sidebar on reload
        https://bugs.webkit.org/show_bug.cgi?id=170930

        Reviewed by Joseph Pecoraro.

        XHR breakpoints aren't associated with the main resource, and shouldn't
        be cleared from the manager or sidebar UI When the main resource changes.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
        * UserInterface/Controllers/XHRBreakpointTreeController.js:
        (WebInspector.XHRBreakpointTreeController):
        (WebInspector.XHRBreakpointTreeController.prototype._mainResourceDidChange): Deleted.

2017-04-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Network columns don't get saved when Web Inspector is closed
        https://bugs.webkit.org/show_bug.cgi?id=170373
        <rdar://problem/31386336>

        Reviewed by Matt Baker.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype.setColumnVisible):
        (WebInspector.DataGrid.prototype._contextMenuInHeader):
        The context menu was often passing `undefined` as the visible value
        which would cause the setting to not be saved appropriately. Ensure
        we always get an explicit boolean.

2017-04-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Use `text-align: start` for DataGrid headers
        https://bugs.webkit.org/show_bug.cgi?id=170871

        Reviewed by Matt Baker.

        `text-align: start` didn't work for th elements.
        It was fixed in <webkit.org/b/141417>.

        * UserInterface/Views/DataGrid.css:
        (.data-grid th):
        (body[dir=ltr] .data-grid th): Deleted.
        (body[dir=rtl] .data-grid th): Deleted.

2017-04-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Doesn't show size of compressed content correctly
        https://bugs.webkit.org/show_bug.cgi?id=155112
        <rdar://problem/25006728>

        Reviewed by Alex Christensen and Timothy Hatcher.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
        Set an exact size.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource):
        (WebInspector.Resource.prototype.get requestHeadersTransferSize):
        (WebInspector.Resource.prototype.get requestBodyTransferSize):
        (WebInspector.Resource.prototype.get responseHeadersTransferSize):
        (WebInspector.Resource.prototype.get responseBodyTransferSize):
        (WebInspector.Resource.prototype.get cachedResponseBodySize):
        (WebInspector.Resource.prototype.get size):
        (WebInspector.Resource.prototype.get networkEncodedSize):
        (WebInspector.Resource.prototype.get networkDecodedSize):
        (WebInspector.Resource.prototype.get networkTotalTransferSize):
        (WebInspector.Resource.prototype.get estimatedNetworkEncodedSize):
        (WebInspector.Resource.prototype.get estimatedTotalTransferSize):
        (WebInspector.Resource.prototype.get compressed):
        (WebInspector.Resource.prototype.updateForResponse):
        (WebInspector.Resource.prototype.updateWithMetrics):
        (WebInspector.Resource.prototype.setCachedResponseBodySize):
        (WebInspector.Resource.prototype.increaseSize):
        (WebInspector.Resource.prototype.increaseTransferSize):
        (WebInspector.Resource.prototype.get encodedSize): Deleted.
        (WebInspector.Resource.prototype.get transferSize): Deleted.
        Be more explicit with size getters.

        (WebInspector.Resource.prototype.updateWithMetrics):
        If we receive the size metrics, update the specific metric values.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshCompressed):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshDecodedSize):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshTransferSize):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
        Show exact values if we have them, otherwise fall back to the calculated
        values during loading.

2017-04-17  Jon Davis  <jond@apple.com>

        Web Inspector: new icon for Disable Caches button in Network Tab
        https://bugs.webkit.org/show_bug.cgi?id=170196

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/IgnoreCaches.svg: Added.
        Added new art for the Disable Caches button. 

        * UserInterface/Images/gtk/IgnoreCaches.svg: Added.
        Used GTK's StepOver.svg for fallback art for GTK.
        
        * UserInterface/Images/NavigationItemClear.svg:
        Improved artwork for Clear Console button icon to match the weight and 
        style of the Disable Caches button icon.
        
        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        
2017-04-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Enabled state of "All Requests" XHR breakpoint not restored correctly
        https://bugs.webkit.org/show_bug.cgi?id=170916

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager):
        Set breakpoint with backend agent, if enabled.

2017-04-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Show pause reason for "All Requests" XHR breakpoint
        https://bugs.webkit.org/show_bug.cgi?id=170895

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        Add generic pause reason text: "Requesting: <url>".

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager.prototype.xhrBreakpointForURL):
        Relocated helper method from the sidebar.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
        Add an XHR breakpoint tree element when pause data contains a breakpoint
        URL, otherwise just add a generic text row.

2017-04-17  Matt Baker  <mattbaker@apple.com>

        Web Inspector: XHR breakpoints restored from settings do not appear in the sidebar
        https://bugs.webkit.org/show_bug.cgi?id=170890

        Reviewed by Joseph Pecoraro.

        Need to check for existing breakpoints when XHRBreakpointTreeController
        is constructed, instead of just listening for added breakpoints.

        * UserInterface/Controllers/XHRBreakpointTreeController.js:
        (WebInspector.XHRBreakpointTreeController):
        (WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointAdded):
        (WebInspector.XHRBreakpointTreeController.prototype._addTreeElement):

2017-04-14  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: WebSockets: messages with non-latin letters are displayed incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=170760

        Reviewed by Joseph Pecoraro.

        Add payloadLength property, which is used to display size. When payloadLength is unavailable,
        it is calculated from payloadData by Web Inspector frontend.

        This fixes <webkit.org/b/170609> Web Inspector: WebSockets: Transferred size is incorrect.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
        * UserInterface/Models/WebSocketResource.js:
        (WebInspector.WebSocketResource.prototype.addFrame):

2017-04-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Implement autocompletion for CSS variables
        https://bugs.webkit.org/show_bug.cgi?id=154441

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.completionControllerCompletionsNeeded):
        Add CSS variables to the list of matching completions based on those defined in the current
        node's computed style.

2017-04-13  Ross Kirsling  <ross.kirsling@sony.com>

        Web Inspector: No context menu available via ENABLE_INSPECTOR_SERVER
        https://bugs.webkit.org/show_bug.cgi?id=170705

        Reviewed by Joseph Pecoraro.

        Reintroduce old SoftContextMenu class (removed in r157278) and apply various fixes:
        - Remove legacy globals and prototype extensions.
        - Align JS/CSS style with current front-end code.
        - Update UI and fix UX to replicate the macOS native context menu.

        * Scripts/copy-user-interface-resources.pl:
        Add copyright line for Sony Interactive Entertainment.
        
        * UserInterface/Base/InspectorFrontendHostStub.js:
        (WebInspector.InspectorFrontendHostStub.prototype.showContextMenu):
        Use SoftContextMenu.
        
        * UserInterface/Main.html:
        Include SoftContextMenu.

        * UserInterface/Views/SoftContextMenu.css: Added.
        (.soft-context-menu-glass-pane):
        (.soft-context-menu):
        (.soft-context-menu > .item):
        (.soft-context-menu > .item.disabled):
        (.soft-context-menu > .item.highlighted):
        (.soft-context-menu > .item > .checkmark):
        (.soft-context-menu > .item > .label):
        (.soft-context-menu > .item > .submenu-arrow):
        (.soft-context-menu > .separator):
        (.soft-context-menu > .separator > .line):

        * UserInterface/Views/SoftContextMenu.js: Added.
        (WebInspector.SoftContextMenu):
        (WebInspector.SoftContextMenu.prototype.show):
        (WebInspector.SoftContextMenu.prototype._consumeEvent):
        (WebInspector.SoftContextMenu.prototype._parentGlassPaneElement):
        (WebInspector.SoftContextMenu.prototype._createMenuItem):
        (WebInspector.SoftContextMenu.prototype._createSeparator):
        (WebInspector.SoftContextMenu.prototype._repositionMenuOnScreen):
        (WebInspector.SoftContextMenu.prototype._showSubMenu):
        (WebInspector.SoftContextMenu.prototype._hideSubMenu):
        (WebInspector.SoftContextMenu.prototype._menuItemContextMenu):
        (WebInspector.SoftContextMenu.prototype._menuItemMouseDown):
        (WebInspector.SoftContextMenu.prototype._menuItemMouseUp):
        (WebInspector.SoftContextMenu.prototype._menuItemMouseOver):
        (WebInspector.SoftContextMenu.prototype._menuItemMouseOut):
        (WebInspector.SoftContextMenu.prototype._menuKeyDown):
        (WebInspector.SoftContextMenu.prototype._glassPaneMouseDown):
        (WebInspector.SoftContextMenu.prototype._focus):
        (WebInspector.SoftContextMenu.prototype._triggerAction):
        (WebInspector.SoftContextMenu.prototype._highlightMenuItem):
        (WebInspector.SoftContextMenu.prototype._highlightPrevious):
        (WebInspector.SoftContextMenu.prototype._highlightNext):
        (WebInspector.SoftContextMenu.prototype._discardMenu):
        (WebInspector.SoftContextMenu.prototype._discardSubMenus):

2017-04-13  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: goto arrow is floated to the wrong side
        https://bugs.webkit.org/show_bug.cgi?id=170816

        Reviewed by Matt Baker.

        Float it to the other side if necessary.

        * UserInterface/Views/Main.css:
        (.go-to-link):
        (body[dir=ltr] .go-to-link:not(.dont-float)):
        (body[dir=rtl] .go-to-link:not(.dont-float)):

2017-04-12  Dan Bernstein  <mitz@apple.com>

        [Mac] Future-proof .xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=170802

        Reviewed by Tim Horton.

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

2017-04-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: checkboxes in Settings screen use inappropriate layout
        https://bugs.webkit.org/show_bug.cgi?id=166993
        <rdar://problem/30002272>

        Reviewed by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js:
        New checkbox setting strings.

        * UserInterface/Main.html:
        New settings view classes.

        * UserInterface/Views/GeneralSettingsView.js: Added.
        (WebInspector.GeneralSettingsView):
        (WebInspector.GeneralSettingsView.prototype.initialLayout):
        Move settings UI creation from SettingsTabContentView.

        * UserInterface/Views/SettingEditor.js: Added.
        Basic setting editor UI for the following input types: checkbox,
        number, and select. In the future it may be useful to include
        additional types, such as radio buttons.

        (WebInspector.SettingEditor):
        (WebInspector.SettingEditor.createForSetting):
        (WebInspector.SettingEditor.prototype.get element):
        (WebInspector.SettingEditor.prototype.get type):
        (WebInspector.SettingEditor.prototype.get label):
        (WebInspector.SettingEditor.prototype.get value):
        (WebInspector.SettingEditor.prototype.set value):
        (WebInspector.SettingEditor.prototype._createEditorElement):

        * UserInterface/Views/SettingsGroup.js: Added.
        A container holding editors for one or more WebInspector.Settings.
        Every editor belongs to a group. SettingsView provides convenience
        methods for adding settings and groups, so create instances directly
        shouldn't normally be necessary.

        (WebInspector.SettingsGroup):
        (WebInspector.SettingsGroup.prototype.get element):
        (WebInspector.SettingsGroup.prototype.addSetting):
        (WebInspector.SettingsGroup.prototype.addCustomSetting):

        * UserInterface/Views/SettingsTabContentView.css:
        Refactored styles to more closely match Xcode settings UI.
        Eliminated redundant use of "setting" from CSS class names.

        (.content-view.settings):
        (.content-view.settings .navigation-bar .item.radio.button.text-only):
        (.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
        (.content-view.settings > .settings-view > .separator):
        (.content-view.settings > .settings-view > .container):
        (.content-view.settings > .settings-view > .container > .title):
        (body[dir=ltr] .content-view.settings > .settings-view > .container > .title):
        (body[dir=rtl] .content-view.settings > .settings-view > .container > .title):
        (.content-view.settings > .settings-view > .container > .editor-group):
        (.content-view.settings > .settings-view > .container > .editor-group > .editor input):
        (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
        (body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
        (body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
        (.content-view.settings > .settings-view > .container > .editor-group > .editor select):
        (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
        (body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
        (body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
        (.content-view.settings > .header): Deleted.
        (.content-view.settings > .separator): Deleted.
        (.content-view.settings > .setting-container): Deleted.
        (.content-view.settings > .setting-container.combined): Deleted.
        (.content-view.settings > .setting-container > .setting-name): Deleted.
        (body[dir=ltr] .content-view.settings > .setting-container > .setting-name): Deleted.
        (body[dir=rtl] .content-view.settings > .setting-container > .setting-name): Deleted.
        (.content-view.settings > .setting-container > .setting-value-controller): Deleted.
        (.content-view.settings > .setting-container > .setting-value-controller input): Deleted.
        (.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
        (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
        (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
        (.content-view.settings > .setting-container > .setting-value-controller select): Deleted.
        (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
        (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
        (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.

        * UserInterface/Views/SettingsTabContentView.js:
        To better organize the growing number of settings, multiple settings views
        are now supported, with a navigation bar for switching between them. For
        now there is a single "General" setting view, and and the navigation bar
        is hidden. Adding a second view will cause the bar to be shown.

        (WebInspector.SettingsTabContentView):
        (WebInspector.SettingsTabContentView.prototype.get type):
        (WebInspector.SettingsTabContentView.prototype.get selectedSettingsView):
        (WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
        (WebInspector.SettingsTabContentView.prototype.addSettingsView):
        (WebInspector.SettingsTabContentView.prototype._navigationItemSelected):
        (WebInspector.SettingsTabContentView.prototype.layout): Deleted.
        No longer needed.

        * UserInterface/Views/SettingsView.js: Added.
        Base class for displaying editing UI for a collection of related
        WebInspector.Setting objects.

        (WebInspector.SettingsView):
        (WebInspector.SettingsView.prototype.get identifier):
        (WebInspector.SettingsView.prototype.get displayName):
        A string suitable for display in a NavigationBar showing a list of
        SettingsViews (e.g. "General", "Text Editing", "Fonts & Colors", etc).

        (WebInspector.SettingsView.prototype.addSetting):
        Add UI for a setting, consisting of a title, an editor appropriate for
        the setting's value type, and optional label and formatting options.
        For example:

            addSetting("Setting 1:", new WebInspector.Setting(…, true), "Item one")
            addSetting("Setting 2:", new WebInspector.Setting(…, 1), "units")

        will create a checkbox and number input field:

            Setting 1: [x] Item one
            Setting 2: [  1] units

        (WebInspector.SettingsView.prototype.addCustomSetting):
        Add UI for a specific editor type, with optional formatting options.
        A setting can be updated in response to changes in the editor's value.

        (WebInspector.SettingsView.prototype.addGroup):
        Add a group, for listing multiple settings under one title. For example:

           group = addGroup("Title:")
           group.addSetting(new WebInspector.Setting(…, true), "Item one")
           group.addSetting(new WebInspector.Setting(…, false), "Item two")

        will create two checkboxes under the same title:

           Title: [x] Item one
                  [ ] Item two

        (WebInspector.SettingsView.prototype.addSeparator):
        Add vertical space between two settings or groups.

2017-04-10  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: WebSockets: Don't clip data in the data grid
        https://bugs.webkit.org/show_bug.cgi?id=170559

        Reviewed by Timothy Hatcher.

        Long lines without spaces should be broken down into several lines instead of being ellipsized.

        * UserInterface/Views/WebSocketContentView.css:
        (.web-socket.content-view > .data-grid td.data-column,):

2017-04-10  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Placeholder text is clipped in the 'Enter Class Name' field at the bottom of Rules style sidebar in some localizations
        https://bugs.webkit.org/show_bug.cgi?id=167641
        <rdar://problem/26541953>

        Reviewed by Joseph Pecoraro.

        Make the "Enter Class Name" text field span the entire width of the Styles sidebar.

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class):
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > input[type="checkbox"]): Deleted.
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .add-class-icon): Deleted.
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class.active > .add-class-icon,): Deleted.
        * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
        (WebInspector.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
        Remove the checkbox, which didn't do anything, and the plus icon. Make the "Enter Class Name" text field visible by default.

2017-04-10  Jon Lee  <jonlee@apple.com>

        Update localizable strings to "full screen" from "fullscreen"
        https://bugs.webkit.org/show_bug.cgi?id=170675
        rdar://problem/28207034

        Reviewed by Antoine Quint.

        * UserInterface/Models/ScriptTimelineRecord.js:
        (WebInspector.ScriptTimelineRecord.EventType.displayName): For localizable strings, it should consistently be
        "full screen" instead of "fullscreen".

2017-04-09  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: tabbing in Styles sidebar is broken when additional ":" and ";" are in the property value
        https://bugs.webkit.org/show_bug.cgi?id=170184

        Reviewed by Matt Baker.

        New tests:
        - inspector/unit-tests/text-utilities.html

        * UserInterface/Base/TextUtilities.js: Added.
        (WebInspector.rangeForNextCSSNameOrValue):
        Consolidate logic for finding the next range to highlight in a CSS string given a starting index.

        * UserInterface/Main.html:
        * UserInterface/Test.html:
        Include TextUtilities.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._highlightNextNameOrValue):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._rangeForNextNameOrValue):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
        Utilize TextUtilities for range-finding logic.

2017-04-08  Simon Fraser  <simon.fraser@apple.com>

        Unprefix CSS cursor values grab and grabbing
        https://bugs.webkit.org/show_bug.cgi?id=170543

        Reviewed by Jon Lee.

        Sort the cursor autosuggestions to match the order in the spec, and add the unprefixed
        grab and grabbing values.

        * UserInterface/Models/CSSKeywordCompletions.js:

2017-04-07  Matt Baker  <mattbaker@apple.com>

        Web Inspector: DOM/XHR breakpoint tree elements shouldn't persist their represented objects
        https://bugs.webkit.org/show_bug.cgi?id=170611
        <rdar://problem/31506161>

        Reviewed by Joseph Pecoraro.

        Prevent tree elements for DOM and XHR breakpoints from persisting their
        represented objects.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):

2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Source Map Resources should show up in the Debugger Sources list
        https://bugs.webkit.org/show_bug.cgi?id=170581
        <rdar://problem/31269140>

        Reviewed by Matt Baker.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        Include SourceMapResources in the DebuggerSidebar's Sources tree outline.

2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=16531
        <rdar://problem/5712895>

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.updateWithMetrics):
        Update request headers if provided in metrics.

2017-04-06  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Reorder Debugger tab sidebar panels: Scope Chain, Resource, Probes
        https://bugs.webkit.org/show_bug.cgi?id=170418
        <rdar://problem/31410771>

        Reviewed by Timothy Hatcher.

        Maintain the sidebar panel order defined by TabContentView when adding
        and removing panels.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
        Insert sidebar panel based on the panel order defined by TabContentView.

        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView):

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.addSidebarPanel):
        Implemented as an insert at the end.
        (WebInspector.Sidebar.prototype.insertSidebarPanel):
        Allow inserting into the sidebar panel collection.
        (WebInspector.Sidebar.prototype.removeSidebarPanel):
        Remove unused return value.

2017-04-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Probe values not showing in sidebar
        https://bugs.webkit.org/show_bug.cgi?id=170143

        Reviewed by Joseph Pecoraro.

        Force the DataGrid to refresh its layout after adding a probe sample.

        * UserInterface/Views/ProbeSetDataGrid.css:
        (.details-section.probe-set .data-grid tr.data-updated):
        (.details-section.probe-set .data-grid > tr.data-updated): Deleted.
        Drive-by fix: selector didn't match any rows.

        * UserInterface/Views/ProbeSetDataGrid.js:
        (WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame):

2017-04-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: XHR breakpoints should be global
        https://bugs.webkit.org/show_bug.cgi?id=170033

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        Shorten XHR breakpoint tree element "URL contains:" title to "URL".

        * UserInterface/Controllers/DOMDebuggerManager.js:
        Change storage of XHR breakpoints from a map to a simple array.
        (WebInspector.DOMDebuggerManager):
        (WebInspector.DOMDebuggerManager.prototype.get xhrBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
        Dispatch the "breakpoint added" event immediately after adding the
        breakpoint, rather than waiting for it to resolve.

        (WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype._resolveXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._saveXHRBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):

        * UserInterface/Models/XHRBreakpoint.js:
        An XHR breakpoint should not be associated with a particular document.
        (WebInspector.XHRBreakpoint):
        (WebInspector.XHRBreakpoint.prototype.get serializableInfo):
        (WebInspector.XHRBreakpoint.prototype.saveIdentityToCookie):
        (WebInspector.XHRBreakpoint.prototype.get documentURL): Deleted.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        Use default emdash-separated title/subtitle style instead of the
        custom "URL contains:" labeling.

        (.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle):
        (.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle:before): Deleted.
        (body[dir=ltr] .sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
        (body[dir=rtl] .sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
        (WebInspector.DebuggerSidebarPanel):

        * UserInterface/Views/XHRBreakpointTreeElement.js:
        (WebInspector.XHRBreakpointTreeElement):

2017-04-04  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: layout issues in Type Profiler popovers
        https://bugs.webkit.org/show_bug.cgi?id=170467

        Reviewed by Timothy Hatcher.

        Flip some margins and padding. Remove the -1px leading margin for
        the prototype disclosure button, as it is unnecessary and looks
        (more) wrong when in RTL.

        * UserInterface/Views/TypeTreeElement.css:
        (.item.type-tree-element > .disclosure-button):
        (.item.type-tree-element.prototype):
        (body[dir=ltr] .item.type-tree-element.prototype):
        (body[dir=rtl] .item.type-tree-element.prototype):
        * UserInterface/Views/TypeTreeView.css:
        (.tree-outline.type):
        (body[dir=ltr] .tree-outline.type):
        (body[dir=rtl] .tree-outline.type):
        (.tree-outline.type li .empty-message):
        (body[dir=ltr] .tree-outline.type li .empty-message):
        (body[dir=rtl] .tree-outline.type li .empty-message):

2017-04-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include more Network information in Resource Details Sidebar
        https://bugs.webkit.org/show_bug.cgi?id=170470

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        Updated localized strings.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.displayNameForProtocol):
        (WebInspector.Resource.displayNameForPriority):
        Aggregate all display name helpers here.

        * UserInterface/Views/DetailsSectionSimpleRow.js:
        (WebInspector.DetailsSectionSimpleRow.prototype.get tooltip):
        (WebInspector.DetailsSectionSimpleRow.prototype.set tooltip):
        Allow setting a tooltip on the value.

        * UserInterface/Views/NetworkGridContentView.css:
        (.cache-type):
        Cache type shows up in multiple places. Simplify the CSS to apply anywhere.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView):
        Updated column names.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._cachedRowValue):
        Include more detail information in the sidebar.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        (WebInspector.ResourceTimelineDataGridNode.prototype._displayNameForPriority): Deleted.
        Use shared code for display names.

2017-04-04  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: fix alignment of close button shown while docked
        https://bugs.webkit.org/show_bug.cgi?id=170472

        Reviewed by Matt Baker.

        * UserInterface/Views/Toolbar.css:
        (.toolbar .control-section):
        (body[dir=ltr] .toolbar .control-section):
        (body[dir=rtl] .toolbar .control-section):

2017-04-04  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: layout issues in debugger dashboard, arrows are on wrong side
        https://bugs.webkit.org/show_bug.cgi?id=170425

        Reviewed by Devin Rousso.

        We need to move the up/down dashboard arrows to the trailing side for RTL.
        Clean up some messy spacing rules so that the source location does not
        overlap the arrows or get too close to the function icon.

        * UserInterface/Views/DashboardContainerView.css:
        (.toolbar .dashboard):
        (body[dir=ltr] .toolbar .dashboard):
        (body[dir=rtl] .toolbar .dashboard):
        (.dashboard-container .advance-arrow):
        (body[dir=ltr] .dashboard-container .advance-arrow):
        (body[dir=rtl] .dashboard-container .advance-arrow):
        (.toolbar.label-only .dashboard-container .advance-arrow):
        (body[dir=ltr] .toolbar.label-only .dashboard-container .advance-arrow):
        (body[dir=rtl] .toolbar.label-only .dashboard-container .advance-arrow):
        * UserInterface/Views/DebuggerDashboardView.css:
        (.toolbar .dashboard.debugger):
        (body[dir=ltr] .toolbar .dashboard.debugger):
        (body[dir=rtl] .toolbar .dashboard.debugger):
        (.dashboard.debugger .navigation-bar):
        (body[dir=ltr] .dashboard.debugger .navigation-bar):
        (body[dir=rtl] .dashboard.debugger .navigation-bar):
        (.dashboard.debugger > .location):
        (.dashboard.debugger > .location > :first-child):
        (body[dir=ltr] .dashboard.debugger > .location > :last-child):
        (body[dir=rtl] .dashboard.debugger > .location > :last-child):
        (.dashboard.debugger > .location .function-icon):
        (body[dir=ltr] .dashboard.debugger > .location .function-icon):
        (body[dir=rtl] .dashboard.debugger > .location .function-icon):
        (.dashboard.debugger > .location .go-to-link):

2017-04-03  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: results in Search navigation sidebar have misplaced highlights
        https://bugs.webkit.org/show_bug.cgi?id=170292

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/SourceCodeSearchMatchObject.js:
        (WebInspector.SourceCodeSearchMatchObject.prototype.get className):
        * UserInterface/Views/SearchIcons.css:
        (.source-code-match .icon):
        (.source-code-match-icon .icon): Deleted.
        Remove -icon suffix from the class name since the class is attached to a result
        and is not specific to the icon displayed within the result <li>.

        * UserInterface/Views/SearchResultTreeElement.js:
        (WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
        Flip the leading and trailing context in RTL so that the highlight is not overflowed
        to the left when too much context is included on the right side. Less context must be
        used in RTL because we must not overflow to the right, as it may hide the result. And,
        we don't know the exact starting character either as it may be overflowed to the right
        as the user resizes the expanded sidebar larger or smaller. So show less context to
        be conservative about never overflowing the highlighted result string.

        * UserInterface/Views/SearchSidebarPanel.css:
        (.sidebar > .panel.navigation.search .item.source-code-match .title):
        When in RTL, show source code matches as LTR with text-align to right.

2017-04-03  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: clicking on the body of a CSS rule after editing the selector causes the section to disappear
        https://bugs.webkit.org/show_bug.cgi?id=169803

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._handleKeyDown):
        (WebInspector.CSSStyleDeclarationSection.prototype._handleBlur):
        Keep the section marked as `_editorActive` if the action taken would still place focus
        within the section (selector or properties).  Doing so will prevent it from being removed.

2017-04-03  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: hierarchical path component labels should guess directionality based on content
        https://bugs.webkit.org/show_bug.cgi?id=170298

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/HierarchicalPathComponent.js:
        (WebInspector.HierarchicalPathComponent):
        Use dir="auto" since this will properly set 'unicode-bidi:isolate' for form elements too.
        This is applied to the title label and to the <select> for the path component.

2017-04-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Show additional pause reason details for DOM "subtree modified" breakpoint
        https://bugs.webkit.org/show_bug.cgi?id=169479

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New Pause Reason UI strings.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
        Include a link for the target node when breaking for subtree modifications.
        This is either the parent of a node being inserted, or a node that is
        being removed.

2017-04-03  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: showing the Find banner doesn't immediately focus it
        https://bugs.webkit.org/show_bug.cgi?id=169804

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        (WebInspector._focusChanged):
        Slightly change the logic from <https://webkit.org/b/168119> (r213689) to not prevent a new
        selection if the focus change target is an element from WebInspector.startEditing.

2017-04-03  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: WebSockets: Don't store binary frames in memory since they are never shown
        https://bugs.webkit.org/show_bug.cgi?id=169649
        <rdar://problem/31053069>

        Reviewed by Brian Burg.

        * UserInterface/Models/WebSocketResource.js:
        (WebInspector.WebSocketResource.prototype.addFrame):

2017-04-03  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Preference for Auto Showing Scope Chain sidebar on pause
        https://bugs.webkit.org/show_bug.cgi?id=149487

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Setting.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.layout):
        Add WebInspector.Setting for showing Scope Chain on pause.

        * UserInterface/Base/Main.js:
        (WebInspector.showDebuggerTab):
        (WebInspector._debuggerDidPause):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
        Modify parameters to use a dictionary of options instead of just a single value.  In doing
        so, add support for a value that will show the Scope Chain sidebar.

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings):
        (.content-view.settings > .header):
        Drive-by: add padding to bottom of Settings tab so that additional scroll space is mirrored.

2017-04-03  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: layout issues in call frame tree elements and async call stacks
        https://bugs.webkit.org/show_bug.cgi?id=170419

        Reviewed by Matt Baker.

        * UserInterface/Views/CallFrameTreeElement.css:
        (.tree-outline .item.call-frame .status):
        (body[dir=ltr] .tree-outline .item.call-frame .status):
        (body[dir=rtl] .tree-outline .item.call-frame .status):
        Flip the current call frame indicator and make sure it sticks to the leading edge.

        (.tree-outline .item.call-frame.async-boundary):
        (body[dir=ltr] .tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
        (body[dir=rtl] .tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
        (.tree-outline .item.call-frame.async-boundary .icon):
        (body[dir=ltr] .tree-outline .item.call-frame.async-boundary .icon):
        (body[dir=rtl] .tree-outline .item.call-frame.async-boundary .icon):
        Flip the icon's padding.

        (.tree-outline .item.call-frame.async-boundary::after):
        (body[dir=ltr] .tree-outline .item.call-frame.async-boundary::after):
        (body[dir=rtl] .tree-outline .item.call-frame.async-boundary::after):
        (.tree-outline .item.call-frame.async-boundary::before):
        (body[dir=ltr] .tree-outline .item.call-frame.async-boundary::before):
        (body[dir=rtl] .tree-outline .item.call-frame.async-boundary::before):
        (.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary): Deleted.
        Fix the leading and trailing horizontal rules so they have correct spacing.

        * UserInterface/Views/CallFrameView.css:
        (.call-frame .icon): Remove redundant property.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .tree-outline.single-thread):
        (body[dir=ltr] .sidebar > .panel.navigation.debugger .tree-outline.single-thread):
        (body[dir=rtl] .sidebar > .panel.navigation.debugger .tree-outline.single-thread):
        Fix the leading unindent for call tree frame elements.

2017-04-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Elements tab: show indicators for hidden DOM breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=168761

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New DOM breakpoint content menu item.

        * UserInterface/Views/DOMTreeContentView.css:
        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
        (.content-view.dom-tree .tree-outline.dom li.expanded .status-image.breakpoint.subtree):
        New styles for collapsed breakpoint marker.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement):
        (WebInspector.DOMTreeElement.prototype.set breakpointStatus):
        If the status change indicates the only breakpoint was added or removed,
        update subtree breakpoint counts on the element's parent chain.

        (WebInspector.DOMTreeElement.prototype.revealAndHighlight):
        Reveal the tree element, and add a highlighted line animation
        identical to the one used used by TextEditor.

        (WebInspector.DOMTreeElement.prototype.subtreeBreakpointCountDidChange):
        (WebInspector.DOMTreeElement.prototype.updateSelectionArea):
        Selection area should be updated when animating the element highlight.
        (WebInspector.DOMTreeElement.prototype.onreveal):
        Animate highlight if needed.
        (WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
        (WebInspector.DOMTreeElement.prototype._statusImageClicked):
        Do nothing when clicking the collapsed breakpoint marker.
        (WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
        Add "Reveal Breakpoint" menu item. Reveals the first descendant
        with at least one breakpoint.

        (WebInspector.DOMTreeElement.prototype._highlightAnimationEnd):

        * UserInterface/Views/DOMTreeOutline.css:
        (@keyframes dom-tree-outline-highlight-fadeout):
        (.highlight .selection-area):
        Styles for highlight fade animation.

        * UserInterface/Views/TreeElement.js:
        (WebInspector.TreeElement.prototype.selfOrDescendant):
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype.selfOrDescendant):
        Find a node matching a predicate.

2017-04-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: DetailsSection should hide header "options" when collapsed
        https://bugs.webkit.org/show_bug.cgi?id=170029

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners.collapsed > .header > .filter): Deleted.
        DetailsSection is responsible for hiding options when collapsed.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .details-section.paused-reason.collapsed > .header > .options):

        * UserInterface/Views/DetailsSection.css:
        (body[dir=ltr] .details-section > .header > .options,):
        (body[dir=ltr] .details-section > .header::before,):
        (.details-section.collapsed  > .header > .options):
        (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow),): Deleted.
        (.details-section.collapsed  > .header > label): Deleted.
        Removed unnecessary rules. The "options" class covers these cases.

        * UserInterface/Views/DetailsSection.js:
        (WebInspector.DetailsSection.prototype.get titleElement):
        (WebInspector.DetailsSection.prototype.set titleElement):
        Added title element customization so that the hack used by ProbeSetDetailsSection
        to get a link into the title can be removed. Yuck!

        * UserInterface/Views/ProbeSetDetailsSection.js:
        (WebInspector.ProbeSetDetailsSection):
        (WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):
        Use the new DetailsSection title element setter.

        * UserInterface/Views/VisualStyleDetailsPanel.css:
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .options):
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear): Deleted.
        (.sidebar > .panel.details.css-style .visual > .details-section .details-section.collapsed > .header > .visual-style-section-clear,): Deleted.
        Remove the "visual-style-section-clear" class, as it's no longer needed.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
        (WebInspector.VisualStyleDetailsPanel.prototype._generateSection):

2017-04-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Space" is not localizable in Timelines record button tooltips
        https://bugs.webkit.org/show_bug.cgi?id=170420
        <rdar://problem/30871371>

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/LoadLocalizedStrings.js:
        (WebInspector.unlocalizedString):
        (WebInspector.UIString):
        * UserInterface/Base/Main.js:
        Move UIString / unlocalizedString to LoadLocalizedString.js.
        They may be needed before Main.js has introduced it.

        * UserInterface/Test/Test.js:
        Provide a default implementaiton of unlocalizedString.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Models/KeyboardShortcut.js:
        Most keys use a symbol to represent the key. "Space" was the one
        exception, so use a localized string.

2017-04-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Tooltip for close tab button should match Safari
        https://bugs.webkit.org/show_bug.cgi?id=170417
        <rdar://problem/31378423>

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/GeneralTabBarItem.js:
        (WebInspector.GeneralTabBarItem):
        Updated tooltip to match Safari's most descriptive tooltip.

2017-04-03  Devin Rousso  <webkit@devinrousso.com>

        REGRESSION (r214354): Web Inspector: WebSocket connection icon obscures close content view icon
        https://bugs.webkit.org/show_bug.cgi?id=170104

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceTreeElement.css:
        (.item.resource.resource-type-websocket .status > .ready-state):
        (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open):
        (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .ready-state.open):
        (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open):
        (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting):
        (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .ready-state.connecting):
        (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting):
        (.item.resource.resource-type-websocket .status > div): Deleted.
        (.item.resource.resource-type-websocket:not(.selected) .status .open): Deleted.
        (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .open): Deleted.
        (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .open): Deleted.
        (.item.resource.resource-type-websocket:not(.selected) .status .connecting): Deleted.
        (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .connecting): Deleted.
        (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .connecting): Deleted.

        * UserInterface/Views/WebSocketResourceTreeElement.js:
        (WebInspector.WebSocketResourceTreeElement.prototype._updateConnectionStatus):
        Apply an additional CSS class to the connection indicator element so that the styles can be
        applied more specifically to just that element.

2017-04-01  Jon Lee  <jonlee@apple.com>

        Add missing text styles
        https://bugs.webkit.org/show_bug.cgi?id=170295
        rdar://problem/30219503

        Reviewed by Dean Jackson.

        * UserInterface/Models/CSSKeywordCompletions.js: Update keyword completions

2017-04-01  Dan Bernstein  <mitz@apple.com>

        Localizable strings files are out of date
        https://bugs.webkit.org/show_bug.cgi?id=170383

        Reviewed by Tim Horton.

        Ran update-webkit-localizable-strings.

        * Localizations/en.lproj/localizedStrings.js:

2017-03-30  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Styles sidebar warning icon appears inside property value text
        https://bugs.webkit.org/show_bug.cgi?id=170281

        Reviewed by Timothy Hatcher.

        Style rule warning icon should always come before the property name,
        regardless of which property part (name/value) the error is for. This
        information is conveyed by the red strikethrough, which is applied to
        the property name, value, or both.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:

2017-03-29  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: WebSockets: Messages log should remain being scrolled to the bottom when a new message is added
        https://bugs.webkit.org/show_bug.cgi?id=170090

        Reviewed by Matt Baker.

        Adding many Web Socket messages quickly can create a performance bottleneck. Batch addition of DataGrid nodes
        using requestAnimationFrame, and scroll to the bottom of the DataGrid at most once per a batch update.

        * UserInterface/Views/WebSocketContentView.js:
        (WebInspector.WebSocketContentView):
        (WebInspector.WebSocketContentView.prototype.shown):
        (WebInspector.WebSocketContentView.prototype.hidden):
        (WebInspector.WebSocketContentView.prototype._updateFramesSoon):
        Batch WebSocketContentView DOM modifications using requestAnimationFrame.

        (WebInspector.WebSocketContentView.prototype._updateFrames):
        (WebInspector.WebSocketContentView.prototype._addFrame):
        (WebInspector.WebSocketContentView.prototype.addFrame): Deleted.
        Make addFrame method private since it isn't used anywhere outside of this class.

        (WebInspector.WebSocketContentView.prototype._updateState): Deleted.
        Make _updateState a part of _updateFramesSoon.

2017-03-29  Sam Brodkin  <isam@apple.com>

        Web Inspector: Network tab content view is blank after reload
        https://bugs.webkit.org/show_bug.cgi?id=168029

        Reviewed by Brian Burg.

        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
        showDefaultContentView() which shows networkGridView in the contentView was not being called
        when the NetworkSidebarPanel was not visible. Removing the if statement always shows the
        networkGridView which fixes the bug. This wouldn't be easy to regression test.

2017-03-28  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: keyboard shortcuts with directionality need to be flipped (forward/back, etc)
        https://bugs.webkit.org/show_bug.cgi?id=165761

        Reviewed by Matt Baker.

        Original patch by Devin Rousso.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        Flip the functionality of keyboard shortcuts when in RTL so that the action of
        pressing the left or right arrows/curly braces matches what happens when the
        corresponding left or right buttons are clicked.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype._keyDown):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._keyDown):
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline.prototype._treeKeyDown):
        Flip the Left and Right keyboard shortcuts to expand/collapse the selected item when in RTL.

2017-03-28  Brian Burg  <bburg@apple.com>

        Web Inspector: Add "Disable Caches" option that only applies to the inspected page while Web Inspector is open
        https://bugs.webkit.org/show_bug.cgi?id=169865
        <rdar://problem/31250573>

        Reviewed by Joseph Pecoraro.

        Hook up a button in the Network tab to WebCore::Page's resourceCachingDisabled flag.
        If it is active, resource loads are subject to a cache policy that never uses a cached response.

        * Localizations/en.lproj/localizedStrings.js:
        Add localized strings.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        Add a setting for whether to disable resource caching and inform the backend
        of our preference. If someone changes the setting, tell the backend again.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        (WebInspector.NetworkGridContentView.prototype.get navigationItems):
        (WebInspector.NetworkGridContentView.prototype._resourceCachingDisabledSettingChanged):
        (WebInspector.NetworkGridContentView.prototype._toggleDisableResourceCache):
        Add a new activatable navigation item that toggles disableResourceCaching for the inspected page.

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-10.3.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:
        Update legacy backend commands to remove the old/broken Network.setCacheDisabled command.

2017-03-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Inspecting a Main Resource that is JS/JSON does not format / syntax highlight it properly
        https://bugs.webkit.org/show_bug.cgi?id=166862
        <rdar://problem/29835977>

        Reviewed by Brian Burg.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.get syntheticMIMEType):
        Don't override the mime type for Document resources. They should always
        have a mime type and we should use whatever it is.

2017-03-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Unable to Format JSON Request Data
        https://bugs.webkit.org/show_bug.cgi?id=170189

        Reviewed by Matt Baker.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
        When we are viewing request data we are looking at a TextResourceContentView
        which has a TextEditor without a delegate. In these cases we can just assume
        a JavaScript Program. In the majority of cases this will typically be JSON
        data, and either Program or Module will highlight and format as expected.

2017-03-27  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Option-clicking the close tab button should close all other tabs
        https://bugs.webkit.org/show_bug.cgi?id=169046

        Reviewed by Matt Baker.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.prototype._handleClick):

2017-03-27  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: The inspector sidebar has weird sub-column sizing issues
        https://bugs.webkit.org/show_bug.cgi?id=161966

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.resizerDragEnded):
        (WebInspector.Sidebar.prototype._recalculateWidth):
        Ensure that the selected sidebar panel is notified of the size change (sizeDidChange) when
        the resizer drag ends.

        * UserInterface/Views/DetailsSectionDataGridRow.js:
        (WebInspector.DetailsSectionDataGridRow.prototype.sizeDidChange):
        * UserInterface/Views/ProbeSetDetailsSection.js:
        (WebInspector.ProbeSetDetailsSection.prototype.sizeDidChange):
        Add/update the sizeDidChange protected function.

        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype.initialLayout):
        (WebInspector.ComputedStyleDetailsPanel.prototype.sizeDidChange):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype.sizeDidChange):
        * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
        (WebInspector.LayerTreeDetailsSidebarPanel.prototype.sizeDidChange):
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype.sizeDidChange):
        * UserInterface/Views/ProbeDetailsSidebarPanel.js:
        (WebInspector.ProbeDetailsSidebarPanel.prototype.sizeDidChange):
        Update the contained DataGrid elements whenever the sidebar size changes so that the resizer
        elements are positioned correctly.

        * UserInterface/Views/View.js:
        (WebInspector.View.prototype.updateLayoutIfNeeded):
        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
        Ensure the layoutReason is also propagated.

2017-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Resource Details Sidebar displays previous image metrics when viewing resource where content load failed
        https://bugs.webkit.org/show_bug.cgi?id=170065
        <rdar://problem/27081591>

        Reviewed by Matt Baker.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.prototype.getImageSize.imageDidLoad):
        (WebInspector.Resource.prototype.getImageSize.requestContentFailure):
        (WebInspector.Resource.prototype.getImageSize):
        If the requestContent failed, return a null image size.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection.hideImageSection):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection):
        If the callback is called with a null size, hide the image size section.

2017-03-24  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: number scripts are used inconsistently throughout the UI
        https://bugs.webkit.org/show_bug.cgi?id=168290

        Reviewed by Joseph Pecoraro.

        Original patch by Devin Rousso.

        * Localizations/en.lproj/localizedStrings.js: Add new string for FPS bars.
        * UserInterface/Base/Utilities.js:
        (value.d):
        (value):
        Localize %d formatted values by default. If that's not desired, then you need to stringify
        the number outside of String.format and Number.abbreviate and pass it as %s instead.
        Also add a global variable for zwsp (zero-width space) and use it in DataGridNode.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._renderRepeatCount): Abbreviate the repeat count,
        and cause it to be localized.

        * UserInterface/Views/DataGridNode.js:
        (WebInspector.DataGridNode.prototype.createCellContent):
        If we don't know anything about a cell's data other than that it's a number,
        run the number through toLocaleString().

        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
        Don't localize @%d tags for snapshot objects since this is not done elsewhere in the UI.

        * UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js: Localize integer version number.
        (WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.layout):

        * UserInterface/Views/MemoryTimelineView.js:
        (WebInspector.MemoryTimelineView.prototype._updateMaxComparisonLegend): Use Number.percentageString().

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers):
        Localize "%d fps" markers.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype._viewModeDidChange):
        Localize frame label numbers.

2017-03-24  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Adding a WebSocket message may change the currently selected resource
        https://bugs.webkit.org/show_bug.cgi?id=170036
        <rdar://problem/31231463>

        Reviewed by Joseph Pecoraro.

        Calling increaseSize on a resource may cause a WebInspector.TimelineDataGrid#TimelineDataGrid#_refreshDirtyDataGridNodes call.
        Make sure _refreshDirtyDataGridNodes preserves selection of a treeElement.

        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
        Re-attaching treeElement causes it to lose selection. Select it again after re-attaching.

2017-03-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add context menu item to log content of WebSocket frame
        https://bugs.webkit.org/show_bug.cgi?id=169945

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Views/WebSocketContentView.js:
        (WebInspector.WebSocketContentView):
        (WebInspector.WebSocketContentView.prototype.addFrame):
        (WebInspector.WebSocketContentView.prototype._addRow):
        Rework the way CSS classes are applied so the isOutgoing and isText flags can also be passed
        to the WebSocketDataGridNode.  This is necessary because a non-text frame shouldn't be able
        to be logged to the console.

        * UserInterface/Views/WebSocketDataGridNode.js:
        (WebInspector.WebSocketDataGridNode.prototype.appendContextMenuItems):

2017-03-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: allow users to click links in inline/user-agent styles
        https://bugs.webkit.org/show_bug.cgi?id=170054

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.set style):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateJumpToSymbolTrackingMode):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
        Always enable the token tracking controller, but only act on hovered/clicked token if it is
        a link or the owner style declaration has a source code location (for jumping to the Resource).

2017-03-24  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Indicate whether a WebSocket connection is open or close
        https://bugs.webkit.org/show_bug.cgi?id=168948

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        Added WebSocketResourceTreeElement.js and SpanningDataGridNode.js.

        * UserInterface/Views/WebSocketContentView.js:
        (WebInspector.WebSocketContentView):
        (WebInspector.WebSocketContentView.prototype.shown):
        (WebInspector.WebSocketContentView.prototype.hidden):
        (WebInspector.WebSocketContentView.prototype._updateState):
        Listen to changes in the readyState and add a SpanningDataGridNode when the current state
        becomes Closed.

        * UserInterface/Views/WebSocketResourceTreeElement.js: Added.
        (WebInspector.WebSocketResourceTreeElement.prototype.onattach):
        (WebInspector.WebSocketResourceTreeElement.prototype.ondetach):
        (WebInspector.WebSocketResourceTreeElement.prototype._updateConnectionStatus):
        Listen to changes in the readyState and add/remove the status element depending on the
        current state:
         - Closed: show no status indicator
         - Connecting: show a small circle with a yellow color
         - Open: show a small circle with a green color

        * UserInterface/Views/ResourceTreeElement.css:
        (.item.resource.resource-type-websocket .status > div):
        (.item.resource.resource-type-websocket:not(.selected) .status .open):
        (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .open):
        (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .open):
        (.item.resource.resource-type-websocket:not(.selected) .status .connecting):
        (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .connecting):
        (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .connecting):

        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement):
        Use WebSocketResourceTreeElement as the constructor for WebSocket resources.

        * UserInterface/Views/SpanningDataGridNode.js: Added.
        (WebInspector.SpanningDataGridNode.prototype.createCells):
        Creates a single cell that spans all the columns (via CSS colspan) of the parent DataGrid.

        * UserInterface/Views/DataGrid.css:
        (.data-grid td.spanning):
        Center content of spanning nodes and prevent user interaction.

        * UserInterface/Views/DataGridNode.js:
        (WebInspector.DataGridNode.prototype.createCell):
        Add additional checks so that a DataGridNode can be created with a column identifier that is
        not in the DataGrid.  This is used by SpanningGridDataNode, as it shouldn't match one single
        column in the DataGrid since it spans them all.

        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.ondetach):
        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.ondetach):
        * UserInterface/Views/DOMBreakpointTreeElement.js:
        (WebInspector.DOMBreakpointTreeElement.prototype.ondetach):
        * UserInterface/Views/XHRBreakpointTreeElement.js:
        (WebInspector.XHRBreakpointTreeElement.prototype.ondetach):
        Add ondetach function (with super calls) for future use.

2017-03-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Cache type is not styled correctly in Timelines tab
        https://bugs.webkit.org/show_bug.cgi?id=170032

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkGridContentView.css:
        (.content-view:matches(.network, .network-grid) > .data-grid .cache-type):
        (.content-view:matches(.network, .network-grid) > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type):
        (.content-view.network-grid > .data-grid .cache-type): Deleted.
        (.content-view.network-grid > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type): Deleted.
        The different network grids have different class names. Handle both.

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

        Web Inspector: Editing local storage keys/values starts with truncated strings
        https://bugs.webkit.org/show_bug.cgi?id=169896

        Reviewed by Brian Burg.

        * UserInterface/Views/DataGrid.css:
        (.data-grid td.editing > div):
        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype._editingCancelled):
        div.cell-content is removed because the <td> itself is contenteditable (using -webkit-user-modify:read-write-plaintext-only),
        not the inner div.cell-content. Re-create div.cell-content after commiting (by pressing Enter) or canceling (by pressing Esc)
        since it may get removed while editing.

2017-03-22  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Clicking DOM breakpoint marker should enable/disable breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=169856
        <rdar://problem/31133090>

        Reviewed by Joseph Pecoraro.

        Clicking DOM breakpoint marker should enable/disable breakpoints,
        matching the behavior of the marker's context menu:

        - If one or more breakpoints are disabled, click enables all
        - If all breakpoints are enabled, click disables all

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
        (WebInspector.DOMTreeElement.prototype._statusImageClicked):

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

        Web Inspector: RTL: minor layout issues in Breakpoint Editor popover
        https://bugs.webkit.org/show_bug.cgi?id=169765

        Reviewed by Brian Burg.

        * UserInterface/Controllers/BreakpointPopoverController.js:
        (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
        Fix typo.

        * UserInterface/Views/BreakpointActionView.css:
        (body[dir=ltr] .breakpoint-action-button-container):
        (body[dir=rtl] .breakpoint-action-button-container):
        (:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
        (body[dir=ltr] :matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
        (body[dir=rtl] :matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
        (.breakpoint-action-block-body > .description):
        (body[dir=ltr] .breakpoint-action-block-body > .description):
        (body[dir=rtl] .breakpoint-action-block-body > .description):
        (.breakpoint-action-block-body > input):
        (.breakpoint-action-button-container): Deleted.
        (.breakpoint-action-append-button, .breakpoint-action-remove-button): Deleted.

        * UserInterface/Views/BreakpointActionView.js:
        (WebInspector.BreakpointActionView.prototype._updateBody):
        Manually apply `dir="ltr"` to the description element to force proper rendering.

        * UserInterface/Views/BreakpointPopoverController.css:
        (.popover .edit-breakpoint-popover-content):
        (.popover .edit-breakpoint-popover-content > table > tr > th):
        (#edit-breakpoint-popover-ignore):
        (body[dir=ltr] :matches(#edit-breakpoint-popover-ignore, #edit-breakpoint-popover-auto-continue)):
        (body[dir=rtl] :matches(#edit-breakpoint-popover-ignore, #edit-breakpoint-popover-auto-continue)):
        (#edit-breakpoint-popoover-auto-continue): Deleted.

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

        Web Inspector: Icon next to "An error occurred..." message changes size when Inspector window is resized
        https://bugs.webkit.org/show_bug.cgi?id=169901

        Reviewed by Brian Burg.

        * UserInterface/Views/Main.css:
        (.message-text-view.error::before):

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

        Web Inspector: Clicking on Clear Network Items icon throws an exception if timing popover is visible
        https://bugs.webkit.org/show_bug.cgi?id=169852
        <rdar://problem/31132652>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
        (WebInspector.ResourceTimelineDataGridNode):

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

        REGRESSION (r187873): Web Inspector: When resizing, prevent DataGrid columns from collapsing entirely
        https://bugs.webkit.org/show_bug.cgi?id=169899

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype.resizerDragging):
        leftMinimum and rightMaximum variables were always NaN because this.ColumnResizePadding is undefined.

2017-03-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Pseudo-class markers overlap DOM breakpoints and disclosure triangle
        https://bugs.webkit.org/show_bug.cgi?id=169850
        <rdar://problem/31132335>

        Reviewed by Joseph Pecoraro.

        DOMTreeContentView should always have at least 7px of gutter space to
        accomodate pseudo-class markers. When DOM breakpoints are visible the
        gutter size is increased so breakpoints and markers do not overlap.

        * UserInterface/Views/DOMTreeContentView.css:
        (.content-view.dom-tree .tree-outline.dom):
        (.content-view.dom-tree.show-gutter .tree-outline.dom):
        (body[dir=ltr] .content-view.dom-tree .tree-outline.dom):
        (body[dir=rtl] .content-view.dom-tree .tree-outline.dom):
        (body[dir=ltr] .content-view.dom-tree.show-gutter .tree-outline.dom): Deleted.
        (body[dir=rtl] .content-view.dom-tree.show-gutter .tree-outline.dom): Deleted.

        * UserInterface/Views/DOMTreeOutline.css:
        (.content-view.dom-tree.show-gutter .tree-outline.dom):
        Change pseudo-class marker indent when showing DOM breakpoint gutter.
        (body[dir=ltr] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
        Drive-by fix: copy paste error.

2017-03-19  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r212910): Active call frame status icon has incorrect left margin
        https://bugs.webkit.org/show_bug.cgi?id=169862

        Reviewed by Brian Burg.

        * UserInterface/Views/CallFrameTreeElement.css:
        (.tree-outline .item.call-frame .status):
        (body[dir=ltr] .tree-outline .item.call-frame .status):
        (body[dir=rtl] .tree-outline .item.call-frame .status):

2017-03-18  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Empty attribute added to a DOM tree outline element should not add whitespace within the tag
        https://bugs.webkit.org/show_bug.cgi?id=139623

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._attributeEditingCommitted):
        If the `newText` after editing has no content, remove the element for that attribute.

2017-03-18  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add keyboard shortcut to clear timeline records
        https://bugs.webkit.org/show_bug.cgi?id=132485

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        (WebInspector.TimelineRecordingContentView.prototype.handleClearShortcut):

2017-03-17  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: wrong filename when saving resource from ResourceImageContentView
        https://bugs.webkit.org/show_bug.cgi?id=54454

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ResourceContentView.js:
        (WebInspector.ResourceContentView.prototype.get supportsSave):
        (WebInspector.ResourceContentView.prototype.get saveData):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype.get supportsSave): Deleted.
        Add save data getter to the parent class, so that both Images and Fonts can be saved.

        * UserInterface/Views/Resource.js:
        (WebInspector.Resource.prototype.canRequestContent):
        Drive-by: remove unused function.

2017-03-16  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: memory category timelines would look better with ruler tick-aligned guides
        https://bugs.webkit.org/show_bug.cgi?id=158100

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/MemoryTimelineView.css:
        (.timeline-view.memory > .content > .details):
        (.timeline-view.memory > .content > .details > .timeline-ruler):
        (body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler):
        (body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler):
        Make the TimelineRuler absolutely positioned so it can use the full height of the view,
        providing enough space for the markers to be visible.

2017-03-16  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Console Evaluation links in the Console should not show normally
        https://bugs.webkit.org/show_bug.cgi?id=157483

        Reviewed by Matt Baker.

        * UserInterface/Models/CallFrame.js:
        (WebInspector.CallFrame):
        (WebInspector.CallFrame.prototype.get isConsoleEvaluation):
        (WebInspector.CallFrame.fromDebuggerPayload):
        (WebInspector.CallFrame.fromPayload):
        Move console evaluation check to the constructor for consistency.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
        * UserInterface/Views/StackTraceView.js:
        (WebInspector.StackTraceView):
        Only add CallFrameView elements if the corresponding CallFame is not a console evaluation.

2017-03-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r213691): Saving DOM breakpoints broken after refactoring
        https://bugs.webkit.org/show_bug.cgi?id=169779

        Reviewed by Joseph Pecoraro.

        Use correct method: _saveBreakpoints -> _saveDOMBreakpoints.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        (WebInspector.DOMDebuggerManager.prototype.addDOMBreakpoint):
        Remove check before saving to be consistent with similar code in
        DebuggerManager and DOMDebuggerManager.

2017-03-16  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: add "Save Selected" context menu item to Console
        https://bugs.webkit.org/show_bug.cgi?id=151837

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.saveDataToFile):
        Allow data to be saved without a provided URL.  It will default to localized "Untitled".

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._handleContextMenuEvent):

2017-03-16  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: RTL: selected frame indicator is not positioned correctly
        https://bugs.webkit.org/show_bug.cgi?id=169763

        Reviewed by Matt Baker.

        * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateFrameMarker):
        (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._mouseClicked):
        Treat the current mouse position (event.pageX) as a negative value when in RTL, meaning that
        the delta movement from the starting position is flipped.

        * UserInterface/Views/TimelineRuler.css:
        (body[dir=ltr] .timeline-ruler > .header > .divider,):
        (body[dir=rtl] .timeline-ruler > .header > .divider,):
        (.timeline-ruler > .header > .divider):
        (.timeline-ruler > .header > .divider > .label):
        (body[dir=ltr] .timeline-ruler > .header > .divider > .label):
        (body[dir=rtl] .timeline-ruler > .header > .divider > .label):
        (.timeline-ruler > .markers > .divider):
        (.timeline-ruler > .markers > .marker):
        (body[dir=ltr] .timeline-ruler > .markers > .marker):
        (body[dir=rtl] .timeline-ruler > .markers > .marker):
        (.timeline-ruler > .markers > .marker::before):
        (body[dir=ltr] .timeline-ruler > .markers > .marker::before):
        (body[dir=rtl] .timeline-ruler > .markers > .marker::before):
        (body[dir=ltr] .timeline-ruler > .markers > .marker.current-time):
        (body[dir=rtl] .timeline-ruler > .markers > .marker.current-time):
        (.timeline-ruler > .markers > .marker.current-time::before):
        (.timeline-ruler > .markers > .marker.current-time): Deleted.

        (.timeline-ruler > .selection-handle):
        (body[dir=ltr] .timeline-ruler > .selection-handle.left):
        (body[dir=rtl] .timeline-ruler > .selection-handle.left):
        (body[dir=ltr] .timeline-ruler > .selection-handle.right):
        (body[dir=rtl] .timeline-ruler > .selection-handle.right):
        Drive-by: add CSS variable for clarity.

2017-03-16  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: RTL: filter mode icon in Debugger sidebar is misaligned
        https://bugs.webkit.org/show_bug.cgi?id=169766

        Reviewed by Matt Baker.

        * UserInterface/Views/FilterBar.css:
        (.filter-bar > .navigation-bar > .item):
        (body[dir=ltr] .filter-bar > .navigation-bar > .item):
        (body[dir=rtl] .filter-bar > .navigation-bar > .item):

2017-03-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Refactoring: remove DebuggerTreeElement class
        https://bugs.webkit.org/show_bug.cgi?id=169697

        Reviewed by Devin Rousso.

        Remove unnecessary class DebuggerTreeElement from TreeElement class hierarchy.
        The `sourceCodeLocation` property on IssueMessage and Breakpoint (the debugger
        objects) can be tested for generically using TreeElement.prototype.representedObject.

        * UserInterface/Main.html:
        Remove file.

        * UserInterface/Views/BreakpointTreeElement.js:
        * UserInterface/Views/IssueTreeElement.js:
        Change base class to GeneralTreeElement.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
        (WebInspector.DebuggerSidebarPanel.prototype._compareTreeElements):
        (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
        (WebInspector.DebuggerSidebarPanel.prototype._compareDebuggerTreeElements): Deleted.
        Renamed to just "_compareTreeElements".

        * UserInterface/Views/DebuggerTreeElement.js: Removed.

2017-03-16  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: RTL: goto arrow for source locations is pointing wrong way in Timeline data grids
        https://bugs.webkit.org/show_bug.cgi?id=169764

        Reviewed by Matt Baker.

        * UserInterface/Views/DataGrid.css:
        (body[dir=rtl] .data-grid td .go-to-arrow):

2017-03-16  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: add FindBanner support for RTL layout
        https://bugs.webkit.org/show_bug.cgi?id=168723

        Reviewed by Timothy Hatcher.

        Due to the large number of CSS tricks used by this widget, adding RTL
        support involves changing a large number of rules. The important parts:

        - Use '.segmented.{previous,next}-result' instead of '.segmented.
        {left,right}', this makes the style rules way less confusing for RTL.

        - Flip icons so icons look like "< >" but actions are reversed.

        - Get rid of the weird expanding button divider. This is impossible
        to mirror with the existing adjacent sibling combinator, and it does
        not match the system appearance. Just replace the mini-divider with a
        full divider and remove related dynamic rules that trigger on :active.

        - Always keep the button divider between next/previous on the rightmost
        button, to avoid subtle differences between LTR and RTL.

        - Fix some mistakes where we weren't using --border-color and also
        didn't adjust the handcoded border color for the inactive window case.

        * UserInterface/Views/FindBanner.css:
        (.find-banner):
        (body[dir=ltr] .find-banner > :first-child,):
        (body[dir=ltr] .find-banner > :last-child,):
        (.find-banner > input[type="search"]):
        (body[dir=ltr] .find-banner > input[type="search"]):
        (body[dir=rtl] .find-banner > input[type="search"]):
        (.find-banner > button:active:not(:disabled)):
        (.find-banner > button.segmented):
        (.find-banner > button.segmented.previous-result):
        (body[dir=ltr] .find-banner > button.segmented.previous-result):
        (body[dir=rtl] .find-banner > button.segmented.previous-result):
        (body[dir=ltr] .find-banner > button.segmented.previous-result > .glyph):
        (body[dir=rtl] .find-banner > button.segmented.previous-result > .glyph):
        (body[dir=ltr] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph):
        (body[dir=rtl] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph):
        (.find-banner > button.segmented.next-result):
        (body[dir=ltr] .find-banner > button.segmented.next-result):
        (body[dir=rtl] .find-banner > button.segmented.next-result):
        (body[dir=ltr] .find-banner > button.segmented.next-result > .glyph):
        (body[dir=rtl] .find-banner > button.segmented.next-result > .glyph):
        (body[dir=ltr] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph):
        (body[dir=rtl] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph):
        (.find-banner.console-find-banner > input[type="search"]):
        (body[dir=ltr] .find-banner.console-find-banner > input[type="search"]):
        (body[dir=rtl] .find-banner.console-find-banner > input[type="search"]):
        (body[dir=ltr] .find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container):
        (body[dir=rtl] .find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container):
        (.find-banner > :first-child): Deleted.
        (.find-banner > :last-child): Deleted.
        (.find-banner > button.segmented.left): Deleted.
        (.find-banner > button:not(:active).segmented.right:before): Deleted.
        (.find-banner > button.segmented.left:active + button.segmented.right,): Deleted.
        (.find-banner > button.segmented.left:active + button.segmented.right:before): Deleted.
        (.find-banner > button.segmented.left > .glyph): Deleted.
        (.find-banner > button.segmented.left:active:not(:disabled) > .glyph): Deleted.
        (.find-banner > button.segmented.right): Deleted.
        (.find-banner > button.segmented.right > .glyph): Deleted.
        (.find-banner > button.segmented.right:active:not(:disabled) > .glyph): Deleted.
        (.find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container): Deleted.

        * UserInterface/Views/FindBanner.js:
        (WebInspector.FindBanner):
        Change left and right to logical names for the buttons, and inline
        some style classes with single uses.

2017-03-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Selecting text in the console does not do what I expect
        https://bugs.webkit.org/show_bug.cgi?id=169570

        Reviewed by Matt Baker.

        * UserInterface/Views/ConsoleMessageView.css:
        (.console-message-text > span > :matches(.console-message-enclosed, .console-message-preview, .console-message-preview-divider)):
        (.console-message .console-message-location):
        (.console-message-location.call-frame):
        Prevent text selection on anything other than the message text.  The other information that
        is not selectable can still be copied by selecting the message itself and copying.

2017-03-15  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: WebSockets: Update Arrow Up icon to fit in with the rest of our iconography
        https://bugs.webkit.org/show_bug.cgi?id=169696
        <rdar://problem/31073748>

        Reviewed by Matt Baker.

        * UserInterface/Images/ArrowUp.svg:
        * UserInterface/Images/gtk/ArrowUp.svg:

2017-03-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Add icons for SVG Image cluster path components
        https://bugs.webkit.org/show_bug.cgi?id=169687

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/Image.svg: Added.
        * UserInterface/Images/Source.svg: Added.
        * UserInterface/Images/gtk/Image.svg: Added.
        * UserInterface/Images/gtk/Source.svg: Added.

        * UserInterface/Views/PathComponentIcons.css:
        (.image-icon .icon):
        (.source-icon .icon):

        * UserInterface/Views/SVGImageResourceClusterContentView.js:
        (WebInspector.SVGImageResourceClusterContentView):

2017-03-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: RTL: flip Memory timelines
        https://bugs.webkit.org/show_bug.cgi?id=169694

        Reviewed by Brian Burg.

        * UserInterface/Views/MemoryCategoryView.css:
        (body[dir=rtl] .memory-category-view > .graph):

2017-03-15  Joseph Pecoraro  <pecoraro@apple.com>

        JSContext Inspector: NetworkAgent may be unavailable
        https://bugs.webkit.org/show_bug.cgi?id=169691

        Reviewed by Brian Burg.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
        Check that NetworkAgent even exists. An augmented JSContext may have Resources
        without having a NetworkAgent.

2017-03-15  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r213622): Web Inspector: DataGrid headers should NOT be centered
        https://bugs.webkit.org/show_bug.cgi?id=169645
        <rdar://problem/31051520>

        Reviewed by Matt Baker.

        * UserInterface/Views/DataGrid.css:
        (.data-grid th):
        (body[dir=ltr] .data-grid th):
        (body[dir=rtl] .data-grid th):

2017-03-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: SVG image content view should toggle between image and source
        https://bugs.webkit.org/show_bug.cgi?id=16079

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:

        * UserInterface/Views/ResourceClusterContentView.js:
        (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
        Show the SVG cluster content view if the MIME type matches an SVG file.

        * UserInterface/Views/SVGImageResourceClusterContentView.js: Added.
        (WebInspector.SVGImageResourceClusterContentView):
        (WebInspector.SVGImageResourceClusterContentView.prototype.get resource):
        (WebInspector.SVGImageResourceClusterContentView.prototype.get selectionPathComponents):
        (WebInspector.SVGImageResourceClusterContentView.prototype.shown):
        (WebInspector.SVGImageResourceClusterContentView.prototype.closed):
        (WebInspector.SVGImageResourceClusterContentView.prototype.saveToCookie):
        (WebInspector.SVGImageResourceClusterContentView.prototype.restoreFromCookie):
        (WebInspector.SVGImageResourceClusterContentView.prototype._pathComponentForContentView):
        (WebInspector.SVGImageResourceClusterContentView.prototype._identifierForContentView):
        (WebInspector.SVGImageResourceClusterContentView.prototype._showContentViewForIdentifier):
        (WebInspector.SVGImageResourceClusterContentView.prototype._pathComponentSelected):

2017-03-15  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: RTL: add support for Timeline ruler selections/movement
        https://bugs.webkit.org/show_bug.cgi?id=169588

        Reviewed by Matt Baker.

        * UserInterface/Views/TimelineOverview.css:
        (body[dir=ltr] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right):
        (body[dir=rtl] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.left):
        (body[dir=ltr] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right):
        (body[dir=rtl] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.left):
        (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right): Deleted.
        (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right): Deleted.
        Fixes alignment of selection handles when in Frames view.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype._handleScrollEvent):
        Support horizontal scrolling in timelines by treating the current scroll value as negative
        when in RTL, flipping the scroll direction.

        * UserInterface/Views/TimelineRuler.css:
        (body[dir=ltr] .timeline-ruler > .selection-handle.left):
        (body[dir=rtl] .timeline-ruler > .selection-handle.left):
        (body[dir=ltr] .timeline-ruler > .selection-handle.right):
        (body[dir=rtl] .timeline-ruler > .selection-handle.right):
        (body[dir=ltr] .timeline-ruler > .shaded-area.left):
        (body[dir=rtl] .timeline-ruler > .shaded-area.left):
        (body[dir=ltr] .timeline-ruler > .shaded-area.right):
        (body[dir=rtl] .timeline-ruler > .shaded-area.right):
        (.timeline-ruler > .selection-handle.left): Deleted.
        (.timeline-ruler > .selection-handle.right): Deleted.
        (.timeline-ruler > .shaded-area.left): Deleted.
        (.timeline-ruler > .shaded-area.right): Deleted.
        Flip the position alignment of the selection handles and shaded areas when in RTL.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype._handleMouseDown):
        (WebInspector.TimelineRuler.prototype._handleMouseMove):
        (WebInspector.TimelineRuler.prototype._handleMouseUp):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown):
        (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
        Treat the current mouse position (event.pageX) as a negative value when in RTL, meaning that
        the delta movement from the starting position is flipped.

2017-03-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: REGRESSION: Elements Tab > Node Details Sidebar > Properties Section is spammed with TypeErrors
        https://bugs.webkit.org/show_bug.cgi?id=153911
        <rdar://problem/24520098>

        Reviewed by Devin Rousso.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved.inspectedPage_node_collectPrototypes):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved):
        Update due to naming conventions for code that evalutes in the inspected page.

        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.fillSection):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties):
        Create a more complete ObjectTreeView for the different sections.

        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildren):
        PureAPI behaves the same as ClassAPI and just shows own properties.

        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype.showOnlyProperties):
        In only properties mode don't show the Prototype expander at the end.

        (WebInspector.ObjectTreeView.prototype.setPrototypeNameOverride):
        Allow a prototype name override at the top level. This will allow clients
        to specify that the object at the top level is a Prototype object, so that
        ObjectTreePropertyTreeElements can infer the right NativeFunctionParameter
        information knowing that those properties are on a particular prototype.

        (WebInspector.ObjectTreeView.prototype.update):
        For the PureAPI use getOwnProperties instead of getDisplayableProperties.
        This avoids the special handling we have for DOM native properties which
        we bubble up to the top as value descriptors even though they are actually
        accessor descriptors on prototypes.

        (WebInspector.ObjectTreeView.prototype._updateProperties):
        Pass the prototype name override onward for object properties.

2017-03-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Exception when fetching computed styles can break future updates of section
        https://bugs.webkit.org/show_bug.cgi?id=169638
        <rdar://problem/30588688>

        Reviewed by Devin Rousso.

        * UserInterface/Models/DOMNodeStyles.js:
        (WebInspector.DOMNodeStyles.prototype.refresh.wrap):
        (WebInspector.DOMNodeStyles.prototype.refresh):
        Gracefully handle exceptions. If an exception did happen we
        would be unable to update these in the future.

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

        Web Inspector: RTL: add support for Memory timeline
        https://bugs.webkit.org/show_bug.cgi?id=169584

        Reviewed by Brian Burg.

        * UserInterface/Views/MemoryCategoryView.css:
        (.memory-category-view > .details):
        (body[dir=ltr] .memory-category-view > .details):
        (body[dir=rtl] .memory-category-view > .details):

        * UserInterface/Views/MemoryTimelineOverviewGraph.css:
        (.timeline-overview-graph.memory > .legend):
        (body[dir=ltr] .timeline-overview-graph.memory > .legend):
        (body[dir=rtl] .timeline-overview-graph.memory > .legend):
        (.timeline-overview-graph.memory .memory-pressure-event):
        (body[dir=ltr] .timeline-overview-graph.memory .memory-pressure-event):
        (body[dir=rtl] .timeline-overview-graph.memory .memory-pressure-event):

        * UserInterface/Views/MemoryTimelineOverviewGraph.js:
        (WebInspector.MemoryTimelineOverviewGraph.prototype.layout):
        Rework the calculation for the marker offset to use "right" in RTL.

        * UserInterface/Views/MemoryTimelineView.css:
        (.timeline-view.memory > .content > .details > .timeline-ruler):
        (body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler):
        (body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler):
        (.timeline-view.memory > .content > .overview > .divider):
        (body[dir=ltr] .timeline-view.memory > .content > .overview > .divider):
        (body[dir=rtl] .timeline-view.memory > .content > .overview > .divider):
        (.timeline-view.memory .legend):
        (body[dir=ltr] .timeline-view.memory .legend):
        (body[dir=rtl] .timeline-view.memory .legend):
        (.timeline-view.memory .legend > .row):
        (.timeline-view.memory .legend > .row > .swatch):
        (body[dir=ltr] .timeline-view.memory .legend > .row > .swatch):
        (body[dir=rtl] .timeline-view.memory .legend > .row > .swatch):
        (body[dir=ltr] .timeline-view.memory .legend > .row > :matches(.label, .size)):
        (body[dir=rtl] .timeline-view.memory .legend > .row > :matches(.label, .size)):
        (.timeline-view.memory .legend > .row > .label):
        (.timeline-view.memory .legend > .row > .size):

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

        Web Inspector: RTL: add support for Timeline graphs
        https://bugs.webkit.org/show_bug.cgi?id=169585

        Reviewed by Brian Burg.

        * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
        (WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.layout):
        Rework the calculation for the icon offset to use "right" in RTL.

        * UserInterface/Views/MemoryTimelineOverviewGraph.css:
        (body[dir=rtl] .timeline-overview-graph.memory > .stacked-line-chart):
        Flip the chart when in RTL.

        * UserInterface/Views/TimelineRecordBar.css:
        (.timeline-record-bar):
        (body[dir=ltr] .timeline-record-bar > .segment.inactive):
        (body[dir=rtl] .timeline-record-bar > .segment.inactive):
        (body[dir=ltr] .timeline-record-bar.unfinished > .segment):
        (body[dir=rtl] .timeline-record-bar.unfinished > .segment):
        (body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        (body[dir=rtl] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        (body[dir=ltr] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        (body[dir=rtl] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
        (.timeline-record-bar > .segment.inactive,): Deleted.
        (.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
        (:matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.

        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.prototype.refresh):
        Apply the position updates to "right" in RTL.

        * UserInterface/Views/TimelineRecordFrame.js:
        (WebInspector.TimelineRecordFrame.prototype.refresh):
        Apply the position updates to "right" in RTL.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.layout):
        (WebInspector.TimelineRuler.prototype._updatePositionOfElement):
        (WebInspector.TimelineRuler.prototype._updateMarkers):
        (WebInspector.TimelineRuler.prototype._updateSelection):
        Apply the position updates to "right" in RTL.

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

        Web Inspector: RTL: add support for DataGrid disclosure arrows and indentation
        https://bugs.webkit.org/show_bug.cgi?id=169582

        Reviewed by Brian Burg.

        * UserInterface/Views/DataGrid.css:
        (body[dir=rtl] .data-grid tr.parent td.disclosure::before):
        Flip the image in RTL.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype._updateScrollbarPadding):
        Rework the padding calculation for the scrollbar offset to use "right" in RTL.

        * UserInterface/Views/DataGridNode.js:
        (WebInspector.DataGridNode.prototype.get indentPadding):
        (WebInspector.DataGridNode.prototype.createCell):
        Rework the padding calculation for indenting (as a child) to use "right" in RTL.

        (WebInspector.DataGridNode.prototype.isEventWithinDisclosureTriangle):
        Calculate the position of the ::before triangle based on the layout direction.

        (WebInspector.DataGridNode.prototype.get leftPadding): Deleted.

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

        Web Inspector: RTL: add support for TimelineOverview sidebar and container layout
        https://bugs.webkit.org/show_bug.cgi?id=169583

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineOverview.css:
        (body[dir=ltr] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)):
        (body[dir=rtl] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)):
        (body[dir=ltr] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)):
        (body[dir=rtl] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)):
        (.timeline-overview > .navigation-bar.timelines):
        (.timeline-overview > .tree-outline.timelines):
        (.timeline-overview > .scroll-container):
        (.timeline-overview > .timeline-ruler):
        (.timeline-overview > .graphs-container):
        (.timeline-overview > .scroll-container > .scroll-width-sizer):
        (body[dir=ltr] .timeline-overview > .scroll-container > .scroll-width-sizer):
        (body[dir=rtl] .timeline-overview > .scroll-container > .scroll-width-sizer):
        (.timeline-overview.frames > .graphs-container): Deleted.

2017-03-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: More accurate Resource Timing data in Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=169577

        Reviewed by Youenn Fablet.

        * UserInterface/Models/ResourceTimingData.js:
        (WebInspector.ResourceTimingData.prototype.get requestStart):
        (WebInspector.ResourceTimingData.prototype.get responseStart):
        Fallback to the startTime if available instead of using the
        inaccurate WebContentProcess gathered timestamps.

        (WebInspector.ResourceTimingData.prototype.markResponseEndTime):
        Verify responseEnd compared to other times we may have.

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

        Web Inspector: Remove unnecessary assert for Number.percentageString
        https://bugs.webkit.org/show_bug.cgi?id=169589

        Reviewed by Matt Baker.

        * UserInterface/Base/Utilities.js:
        (Number.percentageString):

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

        Web Inspector: allow the user to copy locked CSS selectors in Style - Rules
        https://bugs.webkit.org/show_bug.cgi?id=169587

        Reviewed by Matt Baker.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section:matches(.locked, .selector-locked) > .header > .selector):

2017-03-13  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: WebSockets: color of outgoing message icon should match text color
        https://bugs.webkit.org/show_bug.cgi?id=169512
        <rdar://problem/30994284>

        Reviewed by Devin Rousso.

        Include SVG icon as an inline SVG element to make currentColor work.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Views/WebSocketContentView.css:
        (.web-socket.content-view .outgoing .icon): Deleted.
        * UserInterface/Views/WebSocketContentView.js:
        (WebInspector.WebSocketContentView):
        (WebInspector.WebSocketContentView.prototype.addFrame):
        (WebInspector.WebSocketContentView.prototype._addRow):
        (WebInspector.WebSocketContentView.prototype._timeStringFromTimestamp): Deleted.
        * UserInterface/Views/WebSocketDataGridNode.js: Added.
        (WebInspector.WebSocketDataGridNode.prototype.createCellContent):
        (WebInspector.WebSocketDataGridNode.prototype._timeStringFromTimestamp):
        (WebInspector.WebSocketDataGridNode):

2017-03-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Event Listeners detail section is unhelpful, default should show listeners by element rather than by event
        https://bugs.webkit.org/show_bug.cgi?id=167077

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Main.html:
        * UserInterface/Views/EventListenerSection.js: Removed.

        * UserInterface/Models/DOMNode.js:
        (WebInspector.DOMNode.prototype.eventListeners): Renamed to getEventListeners.

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.css: Added.
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
        (body[dir=ltr] .sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
        (body[dir=rtl] .sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:active):
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners.collapsed > .header > .filter):
        (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter > select):

        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.createOption):
        (WebInspector.DOMNodeDetailsSidebarPanel):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.createEventListenerSection):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByEvent):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.eventListenersCallback):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners):
        Add a filter to the Event Listeners section that changes the way in which event listeners
        are grouped.  Currently supports two methods:
         - Group by Event
         - Group by Node

        * UserInterface/Views/EventListenerSectionGroup.js:
        (WebInspector.EventListenerSectionGroup):
        Add ability to display the event type.

        * UserInterface/Views/DetailsSection.css:
        (.details-section):
        Drive-by fix: CSS variable was named incorrectly.

2017-03-13  Devin Rousso  <webkit@devinrousso.com>

        Web Inspector: Event Listeners section is missing 'once', 'passive' event listener flags
        https://bugs.webkit.org/show_bug.cgi?id=167080

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/EventListenerSectionGroup.js:
        (WebInspector.EventListenerSectionGroup):
        (WebInspector.EventListenerSectionGroup.prototype._type): Deleted.

2017-03-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add "goto arrow" to DOMNodeTreeElements in the Debugger tab
        https://bugs.webkit.org/show_bug.cgi?id=168752

        Reviewed by Devin Rousso.

        * UserInterface/Base/DOMUtilities.js:
        (WebInspector.linkifyNodeReference):
        (WebInspector.linkifyNodeReferenceElement):
        Expose linkifying an existing element.

        * UserInterface/Views/DOMNodeTreeElement.js:
        (WebInspector.DOMNodeTreeElement):
        (WebInspector.DOMNodeTreeElement.prototype.populateContextMenu):
        Add "Reveal in DOM Tree" context menu item.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node:not(:hover, .selected) .status .go-to-arrow):
        Hide the go-to arrow unless hovering or selected.

2017-03-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: RTL: fix broken font content view
        https://bugs.webkit.org/show_bug.cgi?id=169513

        Reviewed by Brian Burg.

        Add RTL support to the Font content view.

        * UserInterface/Views/FontResourceContentView.css:
        (.content-view.resource.font .preview > .line > .metric):
        (body[dir=ltr] .content-view.resource.font .preview > .line > .metric):
        (body[dir=rtl] .content-view.resource.font .preview > .line > .metric):
        Compensate for the flipped z-order of the content and metric elements in
        RTL by pushing metrics below the content.

2017-03-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Only show "Break on..." menu if backend supports DOM breakpoints
        https://bugs.webkit.org/show_bug.cgi?id=169488

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/DOMBreakpointTreeController.js:
        (WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
        Added assert to catch future cases where UI is being added when
        backend support doesn't exist.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        Check for backend support.

2017-03-10  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: popover with compositing reasons in Layers sidebar has hard to read layout
        https://bugs.webkit.org/show_bug.cgi?id=167081

        Reviewed by Brian Burg.

        * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
        (.layer-tree-popover):
        (.layer-tree-popover p):
        (.layer-tree-popover ul):
        (body[dir=ltr] .layer-tree-popover ul):
        (body[dir=rtl] .layer-tree-popover ul):
        Show `list-item-style` and make the <p> element stand out more (larger and bold).

2017-03-10  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: in Resources tab navigation bar, can't save the same file from context menu item more than once
        https://bugs.webkit.org/show_bug.cgi?id=165665

        Reviewed by Brian Burg.

        * UserInterface/Views/ContextMenuUtilities.js:
        (WebInspector.appendContextMenuItemsForSourceCode):
        Force the "Save As" dialog to appear when saving, as otherwise subsequent clicks on "Save"
        in the context menu will just override the previously saved file.

2017-03-10  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: REGRESSION(r213149): scope bar items in elements sidebar have wrong padding/margin
        https://bugs.webkit.org/show_bug.cgi?id=169204

        Reviewed by Brian Burg.

        * UserInterface/Views/Sidebar.css:
        (.sidebar > .navigation-bar):
        Replace `align-content` with `align-items`, as the former causes the child elements to fill
        as much vertical space as possible instead of only using the space necessary for its content.

        * UserInterface/Views/ScopeRadioButtonNavigationItem.css:
        (.scope-radio-button-navigation-item > .arrows):
        Drive-by fix: ensure that the up/down arrows are not clickable, which would prevent the
        <select> from showing.

2017-03-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add XHR breakpoints UI
        https://bugs.webkit.org/show_bug.cgi?id=168763
        <rdar://problem/30952439>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        New UI strings.

        * UserInterface/Controllers/DOMDebuggerManager.js:
        Plumbing for XHR breakpoints. Like DOM breakpoints, they are tracked
        per-page. Unlike DOM breakpoints, they have no separate "resolved"
        state, and are simply added/removed as the main frame changes.

        (WebInspector.DOMDebuggerManager):
        (WebInspector.DOMDebuggerManager.prototype.get allRequestsBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype.get xhrBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype.isBreakpointRemovable):
        (WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype._detachXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint.breakpointUpdated):
        (WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._resolveXHRBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._saveXHRBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype._domBreakpointDisabledStateDidChange):
        (WebInspector.DOMDebuggerManager.prototype._xhrBreakpointDisabledStateDidChange):
        (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
        (WebInspector.DOMDebuggerManager.prototype._saveBreakpoints): Deleted.
        Renamed `saveDOMBreakpoints`.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype._pauseReasonFromPayload):
        Plumbing for XHR breakpoint pause reason.

        * UserInterface/Controllers/XHRBreakpointTreeController.js: Added.
        Creates the "All Requests" breakpoint, handles DOMDebuggerManager messages,
        and updates an associated tree outline as XHR breakpoints are added and removed.

        (WebInspector.XHRBreakpointTreeController):
        (WebInspector.XHRBreakpointTreeController.prototype.revealAndSelect):
        (WebInspector.XHRBreakpointTreeController.prototype.disconnect):
        (WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointAdded):
        (WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointRemoved):
        (WebInspector.XHRBreakpointTreeController.prototype._mainResourceDidChange):
        (WebInspector.XHRBreakpointTreeController.prototype._reset):

        * UserInterface/Main.html:
        New files.

        * UserInterface/Models/XHRBreakpoint.js: Added.
        New model class. XHR breakpoints have an associated URL, which is matched
        against the request URL when deciding whether to break. An empty URL matches
        all XMLHttpRequests.

        (WebInspector.XHRBreakpoint):
        (WebInspector.XHRBreakpoint.prototype.get documentURL):
        (WebInspector.XHRBreakpoint.prototype.get url):
        (WebInspector.XHRBreakpoint.prototype.get disabled):
        (WebInspector.XHRBreakpoint.prototype.set disabled):
        (WebInspector.XHRBreakpoint.prototype.get serializableInfo):
        (WebInspector.XHRBreakpoint.prototype.saveIdentityToCookie):

        * UserInterface/Test.html:
        New files.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        Plumbing for new represented object type, to prevent runtime assertion.

        * UserInterface/Views/DOMBreakpointTreeElement.js:
        (WebInspector.DOMBreakpointTreeElement):
        Reuse BreakpointTreeElement styles.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
        (WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
        (WebInspector.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked):
        (WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):

        * UserInterface/Views/InputPopover.css: Added.
        (.popover .input-popover-content):
        (.popover .input-popover-content > .editor):
        (.popover .input-popover-content > .editor > .CodeMirror):
        (.popover .input-popover-content > .editor > .CodeMirror-scroll):

        * UserInterface/Views/InputPopover.js: Added.
        New general purpose popover class. Style and structure lifted from
        the Popover implementation used by the Probe Expressions UI. A follow-up
        has been filed to switch that UI over to this new class:
        https://bugs.webkit.org/show_bug.cgi?id=169428.

        (WebInspector.InputPopover):
        (WebInspector.InputPopover.prototype.get value):
        (WebInspector.InputPopover.prototype.get result):
        (WebInspector.InputPopover.prototype.show):
        (WebInspector.InputPopover.prototype._presentOverTargetElement):

        * UserInterface/Views/XHRBreakpointTreeElement.js: Added.
        Tree element class for XHR breakpoints. Behaves identically to
        script and DOM breakpoint tree elements.

        (WebInspector.XHRBreakpointTreeElement):
        Reuse BreakpointTreeElement styles.
        (WebInspector.XHRBreakpointTreeElement.prototype.onattach):
        (WebInspector.XHRBreakpointTreeElement.prototype.ondetach):
        (WebInspector.XHRBreakpointTreeElement.prototype.ondelete):
        (WebInspector.XHRBreakpointTreeElement.prototype.onenter):
        (WebInspector.XHRBreakpointTreeElement.prototype.onspace):
        (WebInspector.XHRBreakpointTreeElement.prototype.populateContextMenu):
        (WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementClicked):
        (WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementFocused):
        (WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementMouseDown):
        (WebInspector.XHRBreakpointTreeElement.prototype._toggleBreakpoint):
        (WebInspector.XHRBreakpointTreeElement.prototype._updateStatus):

2017-03-09  Matt Baker  <mattbaker@apple.com>

        REGRESSION (r196271): Web Inspector: DOM element loses focus/active selection after committing an inline attribute editor in DOMTreeOutline
        https://bugs.webkit.org/show_bug.cgi?id=168119
        <rdar://problem/30466013>

        Reviewed by Brian Burg.

        Fix a regression caused by http://trac.webkit.org/changeset/196271, which
        updated WebInspector.isEventTargetAnEditableField to detect the editing
        scenarios used by DOMTreeElement and DataGrid. This subtly changed the
        behavior of WebInspector._focusChanged, which expected all editable fields
        to be backed by a CodeMirror instance.

        * UserInterface/Base/Main.js:

2017-03-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show HTTP protocol version and other Network Load Metrics (IP Address, Priority, Connection ID)
        https://bugs.webkit.org/show_bug.cgi?id=29687
        <rdar://problem/19281586>

        Reviewed by Matt Baker and Brian Burg.

        These columns are available in the Network DataGrids, but are
        initially hidden. They can be shown by right clicking on the
        table header and showing these columns. We are going to rework
        the default list of visible columns later.

        * Localizations/en.lproj/localizedStrings.js:
        New localized strings for data grid headers and Low/Medium/High.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
        * UserInterface/Protocol/NetworkObserver.js:
        (WebInspector.NetworkObserver.prototype.loadingFinished):
        Pass metrics on to the Resource.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource):
        (WebInspector.Resource.displayNameForType):
        (WebInspector.Resource.responseSourceFromPayload):
        (WebInspector.Resource.networkPriorityFromPayload):
        (WebInspector.Resource.connectionIdentifierFromPayload):
        (WebInspector.Resource.prototype.get protocol):
        (WebInspector.Resource.prototype.get priority):
        (WebInspector.Resource.prototype.get remoteAddress):
        (WebInspector.Resource.prototype.get connectionIdentifier):
        (WebInspector.Resource.prototype.updateWithMetrics):
        Include metrics accessors and default values.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView):
        Add metrics columns if the backend may be sending them.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        (WebInspector.ResourceTimelineDataGridNode.prototype._displayNameForPriority):
        (WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
        Display strings for new columns.

        * UserInterface/Views/TimelineDataGridNode.js:
        * UserInterface/Views/TimelineRecordBar.js:
        (WebInspector.TimelineRecordBar.prototype.refresh):
        Avoid assertions if Graph column is unavailable.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid):
        (WebInspector.DataGrid.prototype.createSettings):
        (WebInspector.DataGrid.prototype.setColumnVisible):
        Better support for restoring user preference of initially
        hidden columns which the user may have shown.

        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel):
        (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
        Show the Protocol and Priority in the Resources sidebar.

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

        Web Inspector: Show individual messages in the content pane for a WebSocket
        https://bugs.webkit.org/show_bug.cgi?id=169011

        Reviewed by Joseph Pecoraro.

        When selecting a Web Socket in Network panel or Resources, display a table
        of all messages that have been sent and received.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.webSocketWillSendHandshakeRequest):
        Add a walltime parameter.

        (WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
        Fix a bug: masked messages are outgoing, not incoming.

        * UserInterface/Images/ArrowUp.svg: Added.
        * UserInterface/Images/gtk/ArrowUp.svg: Added.
        Add an icon for outgoing messages.

        * UserInterface/Main.html:
        * UserInterface/Models/WebSocketResource.js:
        (WebInspector.WebSocketResource):
        (WebInspector.WebSocketResource.prototype.get walltime):
        (WebInspector.WebSocketResource.prototype.addFrame):
        (WebInspector.WebSocketResource.prototype._walltimeForWebSocketTimestamp):
        * UserInterface/Protocol/NetworkObserver.js:
        (WebInspector.NetworkObserver.prototype.webSocketWillSendHandshakeRequest):
        (WebInspector.NetworkObserver.prototype.webSocketFrameSent):
        (WebInspector.NetworkObserver.prototype.webSocketFrameError):
        (WebInspector.NetworkObserver):
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
        * UserInterface/Views/ResourceClusterContentView.js:
        (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
        * UserInterface/Views/WebSocketContentView.css: Added.
        (.web-socket.content-view > .data-grid):
        (.web-socket.content-view > .data-grid table.data):
        (.web-socket.content-view > .data-grid td.data-column,):
        (body[dir=ltr] .web-socket.content-view > .data-grid .data-column > div):
        (body[dir=rtl] .web-socket.content-view > .data-grid .data-column > div):
        (.web-socket.content-view .icon):
        (body[dir=ltr] .web-socket.content-view .icon):
        (body[dir=rtl] .web-socket.content-view .icon):
        (.web-socket.content-view .outgoing .icon):
        (.web-socket.content-view .data-grid.variable-height-rows table.data tr:nth-child(odd)):
        (.web-socket.content-view .data-grid table.data tr.revealed):
        (.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
        (.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):

        * UserInterface/Views/WebSocketContentView.js: Added.
        (WebInspector.WebSocketContentView):
        Only show Time column when walltime is available.

        (WebInspector.WebSocketContentView.textForOpcode):
        (WebInspector.WebSocketContentView.prototype.shown):
        (WebInspector.WebSocketContentView.prototype.hidden):
        (WebInspector.WebSocketContentView.prototype.addFrame):
        (WebInspector.WebSocketContentView.prototype._updateFrames):
        Only render frames that haven't been rendered yet.

        (WebInspector.WebSocketContentView.prototype._addRow):
        (WebInspector.WebSocketContentView.prototype._timeStringFromTimestamp):

2017-03-09  Matt Baker  <mattbaker@apple.com>

        Web Inspector: DOMTreeManager dispatches DocumentUpdated twice when the document is cleared
        https://bugs.webkit.org/show_bug.cgi?id=168984

        Reviewed by Timothy Hatcher.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype._setDocument):
        Compare old and new document values before dispatching message.

2017-03-09  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Add settings for controlling Styles sidebar intelligence
        https://bugs.webkit.org/show_bug.cgi?id=169181

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Setting.js:
        Add three new settings:
         - stylesShowInlineWarnings
         - stylesInsertNewline
         - stylesSelectOnFirstClick

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseDown):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.update):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings > .separator): Added.
        (.content-view.settings > .setting-container):
        (.content-view.settings > .setting-container.combined):

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.layout.createContainer):
        (WebInspector.SettingsTabContentView.prototype.layout.createSeparator): Added.
        (WebInspector.SettingsTabContentView.prototype.layout):

2017-03-08  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add DOM breakpoints UI for node/subtree modification events
        https://bugs.webkit.org/show_bug.cgi?id=168101

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        New UI strings.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        Add new manager.

        * UserInterface/Controllers/DOMBreakpointTreeController.js: Added.
        Handles messages from DOMDebuggerManager, and updates an associated
        tree outline as DOM breakpoints are added and removed.
        (WebInspector.DOMBreakpointTreeController):
        (WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
        (WebInspector.DOMBreakpointTreeController.prototype.disconnect):
        (WebInspector.DOMBreakpointTreeController.prototype._addBreakpointTreeElement):
        (WebInspector.DOMBreakpointTreeController.prototype._removeBreakpointTreeElement):
        (WebInspector.DOMBreakpointTreeController.prototype._domBreakpointAdded):
        (WebInspector.DOMBreakpointTreeController.prototype._domBreakpointRemoved):
        (WebInspector.DOMBreakpointTreeController.prototype._domBreakpointResolvedStateDidChange):
        (WebInspector.DOMBreakpointTreeController.prototype._mainResourceDidChange):

        * UserInterface/Controllers/DOMDebuggerManager.js: Added.
        New frontend manager for the DOMDebugger domain. A DOM breakpoint is
        described by a location (URL and node path) and type. The manager keeps
        all known DOM breakpoints in memory, and considers a breakpoint to be
        "resolved" once its location is pushed to the frontend.

        Breakpoints located within a child frame are still associated with the
        main frame. Whenever a the main resource of a child frame changes, all
        unresolved breakpoints associated with the main frame are speculatively
        resolved.

        (WebInspector.DOMDebuggerManager):
        (WebInspector.DOMDebuggerManager.prototype.get supported):
        (WebInspector.DOMDebuggerManager.prototype.get domBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype.domBreakpointsForNode):
        (WebInspector.DOMDebuggerManager.prototype.addDOMBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._detachDOMBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._detachBreakpointsForFrame):
        (WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._updateDOMBreakpoint):
        (WebInspector.DOMDebuggerManager.prototype._saveBreakpoints):
        (WebInspector.DOMDebuggerManager.prototype._domBreakpointDisabledStateDidChange):
        (WebInspector.DOMDebuggerManager.prototype._childFrameWasRemoved):
        (WebInspector.DOMDebuggerManager.prototype._mainFrameDidChange):
        (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
        (WebInspector.DOMDebuggerManager.prototype._nodeInserted):
        (WebInspector.DOMDebuggerManager.prototype._nodeRemoved):

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype._pauseReasonFromPayload):
        Plumbing for DOM breakpoint pause reason.

        * UserInterface/Images/DOMBreakpoint.svg: Added.
        New art. Visually very similar to a script breakpoint, with some
        tweaks to make it suitable for display in the DOM tree gutter.

        * UserInterface/Main.html:
        New files.

        * UserInterface/Models/DOMBreakpoint.js: Added.
        New model class. DOM breakpoints are either associated with a DOM node
        when created, or constructed from a cookie and resolved in the future.

        (WebInspector.DOMBreakpoint):
        (WebInspector.DOMBreakpoint.prototype.get type):
        (WebInspector.DOMBreakpoint.prototype.get url):
        (WebInspector.DOMBreakpoint.prototype.get path):
        (WebInspector.DOMBreakpoint.prototype.get disabled):
        (WebInspector.DOMBreakpoint.prototype.set disabled):
        (WebInspector.DOMBreakpoint.prototype.get domNodeIdentifier):
        (WebInspector.DOMBreakpoint.prototype.set domNodeIdentifier):
        (WebInspector.DOMBreakpoint.prototype.get serializableInfo):
        (WebInspector.DOMBreakpoint.prototype.saveIdentityToCookie):

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        The DOMDebugger should not be enabled for legacy backends, since legacy
        backend support was never tested and may have issues.

        * UserInterface/Test.html:
        New files.

        * UserInterface/Test/Test.js:
        (WebInspector.loaded):
        Add new manager.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.createFromRepresentedObject):
        (WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject):
        Plumbing for additional represented object types. DOMNode is included
        because the Debugger sidebar panel shows DOM breakpoint tree elements
        as children of a DOM node tree element.

        * UserInterface/Views/DOMBreakpointTreeElement.css: Added.
        (.item.dom-breakpoint .icon):
        (.item.dom-breakpoint.breakpoint-paused-icon .icon):
        (.item.dom-breakpoint .status img):
        (.item.dom-breakpoint .status > img.disabled):
        Styles for "Pause Reason" and "DOM Breakpoints" sections.

        * UserInterface/Views/DOMBreakpointTreeElement.js: Added.
        Tree element class for DOM breakpoints. Includes a breakpoint status
        element and context menu for delete/disable actions, similar to script
        breakpoint tree elements.

        (WebInspector.DOMBreakpointTreeElement):
        (WebInspector.DOMBreakpointTreeElement.displayNameForType):
        (WebInspector.DOMBreakpointTreeElement.prototype.onattach):
        (WebInspector.DOMBreakpointTreeElement.prototype.ondetach):
        (WebInspector.DOMBreakpointTreeElement.prototype.ondelete):
        (WebInspector.DOMBreakpointTreeElement.prototype.onenter):
        (WebInspector.DOMBreakpointTreeElement.prototype.onspace):
        (WebInspector.DOMBreakpointTreeElement.prototype.populateContextMenu):
        (WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementClicked):
        (WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementFocused):
        (WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementMouseDown):
        (WebInspector.DOMBreakpointTreeElement.prototype._toggleBreakpoint):
        (WebInspector.DOMBreakpointTreeElement.prototype._updateStatus):

        * UserInterface/Views/DOMNodeTreeElement.js: Added.
        Tree element class for DOM nodes, which serves as a parent for DOM
        breakpoint tree elements. Includes context menu for bulk delete/disable
        of all child breakpoints.

        (WebInspector.DOMNodeTreeElement):
        (WebInspector.DOMNodeTreeElement.prototype.ondelete):
        (WebInspector.DOMNodeTreeElement.prototype.populateContextMenu):

        * UserInterface/Views/DOMTreeContentView.css:
        Styles for DOM breakpoint gutter and breakpoint indicators, including
        "left pointing" breakpoints for RTL mode.

        (.content-view.dom-tree.show-gutter .tree-outline.dom):
        (body[dir=ltr] .content-view.dom-tree.show-gutter .tree-outline.dom):
        (body[dir=rtl] .content-view.dom-tree.show-gutter .tree-outline.dom):
        (.content-view.dom-tree .tree-outline.dom li .status-image):
        (body[dir=ltr] .content-view.dom-tree .tree-outline.dom li .status-image):
        (body[dir=rtl] .content-view.dom-tree .tree-outline.dom li .status-image):
        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
        (body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li.selected .status-image.breakpoint):
        (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled):
        (.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint):
        (.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint.disabled):

        * UserInterface/Views/DOMTreeContentView.js:
        Add support for DOM breakpoint gutter and breakpoint indicators.
        Breakpoint indicator elements are part of the DOM tree element, and are
        updated whenever there a breakpoint's disabled or resolved state changes.

        (WebInspector.DOMTreeContentView):
        (WebInspector.DOMTreeContentView.prototype.get breakpointGutterEnabled):
        (WebInspector.DOMTreeContentView.prototype.set breakpointGutterEnabled):
        (WebInspector.DOMTreeContentView.prototype.shown):
        (WebInspector.DOMTreeContentView.prototype.closed):
        (WebInspector.DOMTreeContentView.prototype._domTreeElementAdded):
        (WebInspector.DOMTreeContentView.prototype._domBreakpointAddedOrRemoved):
        (WebInspector.DOMTreeContentView.prototype._domBreakpointDisabledStateDidChange):
        (WebInspector.DOMTreeContentView.prototype._domBreakpointResolvedStateDidChange):
        (WebInspector.DOMTreeContentView.prototype._updateBreakpointStatus):
        (WebInspector.DOMTreeContentView.prototype._restoreBreakpointsAfterUpdate):
        (WebInspector.DOMTreeContentView.prototype._breakpointsEnabledDidChange):

        * UserInterface/Views/DOMTreeElement.js:
        Add support for breakpoint status element and content menu.
        (WebInspector.DOMTreeElement):
        (WebInspector.DOMTreeElement.prototype.get breakpointStatus):
        (WebInspector.DOMTreeElement.prototype.set breakpointStatus):
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        (WebInspector.DOMTreeElement.prototype.updateTitle):
        (WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
        (WebInspector.DOMTreeElement.prototype._statusImageContextmenu):

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .titles):
        (.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .icon):
        Styles for DOM node tree elements.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        Add new DOM Breakpoints section, and support for the "DOM" pause reason.

        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype.closed):
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
        (WebInspector.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):

        * UserInterface/Views/FrameDOMTreeContentView.js:
        (WebInspector.FrameDOMTreeContentView.prototype._rootDOMNodeAvailable):
        Restore DOM breakpoints once the root node is available.

        * UserInterface/Views/Variables.css:
        (:root):
        Fill and stroke colors for resolved, unresolved, and disabled breakpoints.

        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-10.3.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:

2017-03-08  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: table header columns and cells don't line up, dragging seems backwards
        https://bugs.webkit.org/show_bug.cgi?id=168289

        Reviewed by Brian Burg.

        Changed the algorithm used to position columns when in RTL to use right offsets instead of
        left offsets.  This also applies to the resizer elements between columns.

        * UserInterface/Views/DataGrid.css:
        (.data-grid):
        (.data-grid th):
        (body[dir=ltr] .data-grid :matches(th, td):not(:last-child)):
        (body[dir=rtl] .data-grid :matches(th, td):not(:last-child)):
        (.data-grid th:matches(.sort-ascending, .sort-descending)):
        (body[dir=ltr] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
        (body[dir=rtl] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
        (.data-grid .right div):
        (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
        (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
        (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
        (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
        (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
        (.data-grid th.sort-ascending > div:first-child::after):
        (.data-grid th.sort-descending > div:first-child::after):
        (.data-grid tr.parent td.disclosure::before):
        (body[dir=ltr] .data-grid tr.parent td.disclosure::before):
        (body[dir=rtl] .data-grid tr.parent td.disclosure::before):
        (.data-grid td .icon):
        (body[dir=ltr] .data-grid td .icon):
        (body[dir=rtl] .data-grid td .icon):
        (.data-grid td .go-to-arrow):
        (body[dir=ltr] .data-grid td .go-to-arrow):
        (body[dir=rtl] .data-grid td .go-to-arrow):
        (.data-grid .resizer):
        (body[dir=ltr] .data-grid .resizer):
        (body[dir=rtl] .data-grid .resizer):
        (.data-grid table:matches(.header, .data)):
        (body[dir=ltr] .data-grid table:matches(.header, .data)):
        (body[dir=rtl] .data-grid table:matches(.header, .data)):
        (body[dir=ltr] .data-grid :matches(th, td):first-child):
        (body[dir=rtl] .data-grid :matches(th, td):first-child):
        (@media (-webkit-min-device-pixel-ratio: 2)):
        (.data-grid :matches(th, td):not(:last-child)): Deleted.
        (.data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
        (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child): Deleted.
        (.data-grid table.header, .data-grid table.data): Deleted.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype._positionResizerElements):
        (WebInspector.DataGrid.prototype._positionHeaderViews):
        (WebInspector.DataGrid.prototype.resizerDragging):

2017-03-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Should be able to see where Resources came from (Memory Cache, Disk Cache)
        https://bugs.webkit.org/show_bug.cgi?id=164892
        <rdar://problem/29320562>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        New localized strings for memory/disk cache information.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
        Make this legacy path more explicit.

        (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
        Make this memory cache path more explicit.

        (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
        Pass the resource's response source onward.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource):
        (WebInspector.Resource.responseSourceFromPayload):
        (WebInspector.Resource.prototype.get responseSource):
        (WebInspector.Resource.prototype.hasResponse):
        (WebInspector.Resource.prototype.updateForResponse):
        (WebInspector.Resource.prototype.markAsCached):
        (WebInspector.Resource.prototype.legacyMarkServedFromMemoryCache):
        (WebInspector.Resource.prototype.legacyMarkServedFromDiskCache):
        Include a WebInspector.ResponseSource enum.
        Update a Resource's responseSource state where appropriate.

        * UserInterface/Protocol/NetworkObserver.js:
        (WebInspector.NetworkObserver.prototype.requestServedFromCache):
        Mark legacy path.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView):
        Tweak default column sizes to make Cached and graph columns a little larger.

        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
        (WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
        Update "Cached" column data with more information if available.

        * UserInterface/Views/NetworkGridContentView.css:
        (.content-view.network-grid > .data-grid .cache-type):
        (.content-view.network-grid > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type):
        Style the cache type a secondary color.

2017-03-08  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: add a "create breakpoint" context menu item for linkified source locations
        https://bugs.webkit.org/show_bug.cgi?id=47442

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.isShowingResourcesTab): Added.
        (WebInspector.linkifyElement):
        Now calls WebInspector.appendContextMenuItemsForSourceCode on "contextmenu" events for the
        created element.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.breakpointForSourceCodeLocation):
        Returns the first breakpoint (since there should only be one) that matches the given location.

        * UserInterface/Views/ContextMenuUtilities.js:
        (WebInspector.appendContextMenuItemsForSourceCode):
        Rework parameters to also accept a WebInspector.SourceCodeLocation, thereby allowing the
        setting of breakpoints so long as the associated WebInspector.SourceCode is a script.

        * UserInterface/Views/Main.css:
        (.resource-link, .go-to-link):
        Prevent link from being selected.

2017-03-08  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: Switching back to System Direction doesn't change the dock side
        https://bugs.webkit.org/show_bug.cgi?id=169323

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.setLayoutDirection):
        Change the dock side based on the resolved layout direction, not the current setting value.

2017-03-08  Matt Baker  <mattbaker@apple.com>

        REGRESSION (r212998): Web Inspector: DetailsSections with options have broken layout
        https://bugs.webkit.org/show_bug.cgi?id=169350

        Reviewed by Brian Burg.

        * UserInterface/Views/DetailsSection.css:
        (.details-section):
        Fix negative margin.
        (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow),):
        (body[dir=ltr] .details-section > .header::before,):
        (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar),): Deleted.
        It looks like :matches doesn't accept compound selectors in its selector list.

2017-03-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: DOM Tree broken if an element has a "debounce" attribute
        https://bugs.webkit.org/show_bug.cgi?id=169336
        <rdar://problem/30899430>

        Reviewed by Brian Burg.

        * UserInterface/Models/DOMNode.js:
        (WebInspector.DOMNode):
        (WebInspector.DOMNode.prototype.getAttribute):
        (WebInspector.DOMNode.prototype.removeAttribute.mycallback):
        (WebInspector.DOMNode.prototype.removeAttribute):
        Convert the attributes map to an actual Map to avoid name collisions
        with Object.prototype properties.

2017-03-07  Chris Dumez  <cdumez@apple.com>

        Drop non-standard MessageEvent.webkitInitMessageEvent()
        https://bugs.webkit.org/show_bug.cgi?id=169295

        Reviewed by Joseph Pecoraro.

        Drop MessageEvent.webkitInitMessageEvent and update parameters for various
        init*Event() operations to match the current implementation.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-03-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Show Web Socket connections in Network tab
        https://bugs.webkit.org/show_bug.cgi?id=167520

        Reviewed by Joseph Pecoraro.

        Show Web Socket connections in Network and Resources tabs. Display HTTP headers
        of Web Socket handshake request in the details sidebar.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.initialize):
        (WebInspector.FrameResourceManager.prototype.webSocketCreated):
        (WebInspector.FrameResourceManager.prototype.webSocketWillSendHandshakeRequest):
        webSocketWillSendHandshakeRequest doesn't receive a request URL as one of its parameters.
        Store URLs received from webSocketCreated method in _webSocketIdentifierToURL map.

        (WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
        (WebInspector.FrameResourceManager.prototype.webSocketFrameReceived):
        (WebInspector.FrameResourceManager.prototype.webSocketFrameSent):
        (WebInspector.FrameResourceManager.prototype.webSocketClosed):
        Mark resource as finished when Web Socket handshake is complete or Web Socket is closed.
        This may change in the future.

        (WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
        * UserInterface/Main.html:

        * UserInterface/Models/WebSocketResource.js: Added.
        (WebInspector.WebSocketResource):
        (WebInspector.WebSocketResource.prototype.set readyState):
        (WebInspector.WebSocketResource.prototype.get readyState):
        (WebInspector.WebSocketResource.prototype.get frames):
        (WebInspector.WebSocketResource.prototype.addFrame):
        Introduce WebSocketResource model to store WebSocket frames (incoming and outgoing messages)
        and readyState.

        * UserInterface/Protocol/NetworkObserver.js:
        (WebInspector.NetworkObserver.prototype.webSocketCreated):
        (WebInspector.NetworkObserver.prototype.webSocketWillSendHandshakeRequest):
        (WebInspector.NetworkObserver.prototype.webSocketHandshakeResponseReceived):
        (WebInspector.NetworkObserver.prototype.webSocketClosed):
        (WebInspector.NetworkObserver.prototype.webSocketFrameReceived):
        (WebInspector.NetworkObserver.prototype.webSocketFrameError):
        (WebInspector.NetworkObserver.prototype.webSocketFrameSent):
        (WebInspector.NetworkObserver):
        Add corresponding methods for the newly added FrameResourceManager methods.

        * UserInterface/Test.html:
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
        Don't show the go to arrow for WebSocket items since WebSocketContentView isn't implemented
        yet.

        * UserInterface/Views/ResourceClusterContentView.js:
        (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
        Don't show any content views for WebSocket items.

        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype.ondblclick):
        Don't open WebSocket URL in a new browser tab.

2017-03-02  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Should be able to push nodes in an iframe subtree to the frontend
        https://bugs.webkit.org/show_bug.cgi?id=169086

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype._selectedNodeDidChange):
        Use the URL of the main frame instead of the content frame URL.

2017-03-01  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Annotators should not be enabled if the TextEditor is not visible
        https://bugs.webkit.org/show_bug.cgi?id=169059

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._addResource):
        (WebInspector.DebuggerSidebarPanel.prototype._addScript):
        Only call `showDefaultContentViewForTreeElement` if the panel has been added to a sidebar.

        It is not valid to simply check whether the panel is visible, as the sidebar can be collapsed.
        In that case, we still want to display the content view, so we instead check that the panel
        has been added to a sidebar, meaning that it is ready to be displayed in the current tab.

2017-02-28  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: expose the Layout Direction setting in Production builds, keep using LTR by default
        https://bugs.webkit.org/show_bug.cgi?id=168999

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.layout):
        Remove the WebInspector.isDebugUIEnabled() check around the Layout Direction setting.

2017-02-28  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: It is possible to get the New Tab button in addition to the seven expected tabs
        https://bugs.webkit.org/show_bug.cgi?id=168976

        Reviewed by Brian Burg.

        * UserInterface/Views/TabBar.css:
        (.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon):
        (.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close):
        (.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned, .default-tab):hover > .icon): Deleted.
        (.tab-bar.collapsed:not(.hide-titles) > .item:not(.default-tab):hover > .close): Deleted.

2017-02-28  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: CSS variable uses that are unresolved should have an error or warning icon
        https://bugs.webkit.org/show_bug.cgi?id=168352

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.update):
        Insert a warning icon if the variable is not found in the computed style.

2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: add support for Color Picker
        https://bugs.webkit.org/show_bug.cgi?id=168853

        Reviewed by Brian Burg.

        * UserInterface/Views/ColorPicker.css:
        (.color-picker):
        (body[dir=ltr] .color-picker > .brightness):
        (body[dir=rtl] .color-picker > .brightness):
        (body[dir=ltr] .color-picker > .opacity):
        (body[dir=rtl] .color-picker > .opacity):
        (.color-picker > .brightness): Deleted.
        (.color-picker > .opacity): Deleted.

        * UserInterface/Views/ColorWheel.js:
        (WebInspector.ColorWheel.prototype.set dimension):
        Set the CSS width and height style of the container element to ensure that the element only
        takes up the space it needs.

        * UserInterface/Views/Slider.css:
        (.slider):
        * UserInterface/Views/Variables.css:
        (:root):
        Add `--slider-height` CSS variable for convenience.

2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: add support for Bezier/Spring editor
        https://bugs.webkit.org/show_bug.cgi?id=168854

        Reviewed by Brian Burg.

        * UserInterface/Views/BezierEditor.css:
        (.bezier-editor):
        (body[dir=ltr] .bezier-editor):
        (body[dir=rtl] .bezier-editor):
        (.bezier-editor > .bezier-preview-timing):
        (body[dir=ltr] .bezier-editor > .bezier-preview-timing):
        (body[dir=rtl] .bezier-editor > .bezier-preview-timing):
        (@keyframes bezierPreview):
        (body[dir=rtl] .bezier-editor > .bezier-container):
        (.bezier-editor > .number-input-container > input):
        (body[dir=ltr] .bezier-editor > .number-input-container > input):
        (body[dir=rtl] .bezier-editor > .number-input-container > input):

        * UserInterface/Views/SpringEditor.css:
        (.spring-editor > .spring-timing):
        (.spring-editor > .spring-timing::before):
        (.spring-editor > .spring-timing::after):
        (body[dir=ltr] .spring-editor > .spring-timing::before, body[dir=rtl] .spring-editor > .spring-timing::after):
        (body[dir=ltr] .spring-editor > .spring-timing::after, body[dir=rtl] .spring-editor > .spring-timing::before):
        (.spring-editor > .number-input-container > .number-input-row > input):

        * UserInterface/Views/SpringEditor.js:
        (WebInspector.SpringEditor.prototype._updatePreviewAnimation):

2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: Elements tab Styles sidebar label/arrows need adjustment
        https://bugs.webkit.org/show_bug.cgi?id=168746

        Reviewed by Brian Burg.

        * UserInterface/Views/ScopeRadioButtonNavigationItem.css:
        (.scope-radio-button-navigation-item):
        (.scope-radio-button-navigation-item > .scope-radio-button-item-select):
        (body[dir=ltr] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
        (body[dir=rtl] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
        (.scope-radio-button-navigation-item > .scope-radio-button-item-select:focus):
        (.scope-radio-button-navigation-item > .arrows):
        (body[dir=ltr] .scope-radio-button-navigation-item > .arrows):
        (body[dir=rtl] .scope-radio-button-navigation-item > .arrows):

2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: copying a search result out of Search Tab navigation sidebar does nothing
        https://bugs.webkit.org/show_bug.cgi?id=167074

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector._copy):
        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView.prototype.handleCopyEvent):
        Provide the container TabContentView with the opportunity to intercept the copy event.

        * UserInterface/Models/SourceCodeTextRange.js:
        (WebInspector.SourceCodeTextRange.prototype.get synthesizedTextValue):
        * UserInterface/Views/SearchResultTreeElement.js:
        (WebInspector.SearchResultTreeElement.prototype.get synthesizedTextValue):
        Generate a string with the format `${url}:${lineNumber}:${resultLine}`.

2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: Styles - Rules sidebar icons are misaligned
        https://bugs.webkit.org/show_bug.cgi?id=168807

        Reviewed by Brian Burg.

        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section > .header):
        (body[dir=ltr] .style-declaration-section > .header):
        (body[dir=rtl] .style-declaration-section > .header):
        (.style-declaration-section.locked > .header > .locked-icon):
        (body[dir=ltr] .style-declaration-section.locked > .header > .locked-icon):
        (body[dir=rtl] .style-declaration-section.locked > .header > .locked-icon):
        (.style-declaration-section > .header > .icon):
        (body[dir=ltr] .style-declaration-section > .header > .icon):
        (body[dir=rtl] .style-declaration-section > .header > .icon):
        (.style-declaration-section > .header > textarea):
        (body[dir=ltr] .style-declaration-section > .header > textarea):
        (body[dir=rtl] .style-declaration-section > .header > textarea):
        (.style-declaration-section.invalid-selector > .header > .icon):

        * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
        (.sidebar > .panel.details.css-style > .content):
        (.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
        (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
        (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
        (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
        (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
        (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
        (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
        (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
        (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):

        * UserInterface/Views/Variables.css:
        (:root):

2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: disclosure triangles in details section headers should be flipped and aligned right
        https://bugs.webkit.org/show_bug.cgi?id=168283

        Reviewed by Brian Burg.

        * UserInterface/Views/DetailsSection.css:
        (.details-section):
        (.details-section > .header):
        (body[dir=ltr] .details-section > .header):
        (body[dir=rtl] .details-section > .header):
        (.details-section > .header > .options > .navigation-bar):
        (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar), body[dir=rtl] .details-section > .header::before):
        (body[dir=ltr] .details-section > .header::before, body[dir=rtl] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar)):
        (.details-section > .header::before):
        (body[dir=rtl] .details-section > .header::before):
        (.details-section > .header > label):
        (.details-section > .header > label > input[type="checkbox"]):
        (body[dir=ltr] .details-section > .header > label > input[type="checkbox"]):
        (body[dir=rtl] .details-section > .header > label > input[type="checkbox"]):
        (.details-section > .header .go-to-arrow):
        (body[dir=ltr] .details-section > .header .go-to-arrow):
        (body[dir=rtl] .details-section > .header .go-to-arrow):
        (.details-section > .content > .group > .row.simple > .label):
        (body[dir=ltr] .details-section > .content > .group > .row.simple > .label):
        (body[dir=rtl] .details-section > .content > .group > .row.simple > .label):
        (.details-section > .content > .group > .row.simple > .value):
        (body[dir=ltr] .details-section > .content > .group > .row.simple > .value):
        (body[dir=rtl] .details-section > .content > .group > .row.simple > .value):
        (.details-section > .content > .group > .row.simple > .value .go-to-arrow):
        (body[dir=ltr] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
        (body[dir=rtl] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
        (.details-section > .header > :matches(.node-link, .go-to-arrow)): Deleted.

2017-02-24  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: add support for Error page
        https://bugs.webkit.org/show_bug.cgi?id=168855

        Reviewed by Brian Burg.

        * UserInterface/Debug/UncaughtExceptionReporter.css:
        (.uncaught-exception-sheet):
        (body[dir=ltr] .uncaught-exception-sheet):
        (body[dir=rtl] .uncaught-exception-sheet):
        (.uncaught-exception-sheet h1 > img):
        (body[dir=ltr] .uncaught-exception-sheet h1 > img):
        (body[dir=rtl] .uncaught-exception-sheet h1 > img):
        (.uncaught-exception-sheet h2 > img):
        (body[dir=ltr] .uncaught-exception-sheet h2 > img):
        (body[dir=rtl] .uncaught-exception-sheet h2 > img):
        (.uncaught-exception-sheet dd):
        (body[dir=ltr] .uncaught-exception-sheet dd):
        (body[dir=rtl] .uncaught-exception-sheet dd):
        (.uncaught-exception-sheet ul):
        (body[dir=ltr] .uncaught-exception-sheet ul):
        (body[dir=rtl] .uncaught-exception-sheet ul):

2017-02-24  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Uncaught Exception: Unknown angle units "undefined"
        https://bugs.webkit.org/show_bug.cgi?id=168851

        Reviewed by Brian Burg.

        * UserInterface/Views/GradientEditor.js:
        (WebInspector.GradientEditor.prototype._gradientTypeChanged):

2017-02-24  Jon Lee  <jonlee@apple.com>

        Alias "system-ui" for the System font name
        https://bugs.webkit.org/show_bug.cgi?id=151493

        Reviewed by Tim Horton and Joseph Pecoraro.

        * UserInterface/Models/CSSKeywordCompletions.js: Ditto.

2017-02-23  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: DOM Tree spacing is wrong
        https://bugs.webkit.org/show_bug.cgi?id=168744

        Reviewed by Brian Burg.

        * UserInterface/Base/Utilities.js:
        (Element.prototype.totalOffsetRight):

        * UserInterface/Views/DOMTreeOutline.css:
        (.tree-outline.dom):
        (.tree-outline.dom ol):
        (body[dir=ltr] .tree-outline.dom ol):
        (body[dir=rtl] .tree-outline.dom ol):
        (.tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
        (body[dir=ltr] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
        (body[dir=rtl] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
        (.tree-outline.dom li.selected + ol.children.expanded):
        (.tree-outline.dom li):
        (body[dir=ltr] .tree-outline.dom li):
        (body[dir=rtl] .tree-outline.dom li):
        (.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
        (body[dir=rtl] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
        (body[dir=ltr] .tree-outline.dom.single-node li):
        (body[dir=rtl] .tree-outline.dom.single-node li):
        (.tree-outline.dom li.parent):
        (body[dir=ltr] .tree-outline.dom li.parent):
        (body[dir=rtl] .tree-outline.dom li.parent):
        (body[dir=ltr] .tree-outline.dom li .html-tag.close):
        (body[dir=rtl] .tree-outline.dom li .html-tag.close):
        (.tree-outline.dom li.parent::before):
        (body[dir=rtl] .tree-outline.dom li.parent::before):
        (body[dir=ltr] .tree-outline.dom li.parent::before):
        (.tree-outline.dom li.parent.shadow::after):
        (body[dir=ltr] .tree-outline.dom li.parent.shadow::after):
        (body[dir=rtl] .tree-outline.dom li.parent.shadow::after):
        (.tree-outline.dom.single-node li): Deleted.
        (.tree-outline.dom li .html-tag.close): Deleted.

        * UserInterface/Views/TreeElement.js:
        (WebInspector.TreeElement.prototype.isEventWithinDisclosureTriangle):
        Calculate the position of the ::before triangle based on the layout direction.

2017-02-23  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: navigation sidebar section disclosure triangles and tree element icons should be aligned right
        https://bugs.webkit.org/show_bug.cgi?id=168284

        Reviewed by Brian Burg.

        * UserInterface/Views/TreeOutline.css:
        (.tree-outline,):
        (.tree-outline.large .item):
        (body[dir=ltr] .tree-outline .item :matches(.disclosure-button, .icon)):
        (body[dir=rtl] .tree-outline .item :matches(.disclosure-button, .icon)):
        (body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
        (body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
        (.tree-outline .item .disclosure-button):
        (body[dir=rtl] .tree-outline .item .disclosure-button):
        (.tree-outline .item .icon):
        (body[dir=ltr] .tree-outline .item .icon):
        (body[dir=rtl] .tree-outline .item .icon):
        (.tree-outline.large .item .icon):
        (.tree-outline .item .status):
        (body[dir=ltr] .tree-outline .item .status):
        (body[dir=rtl] .tree-outline .item .status):
        (.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon): Deleted.

        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline._generateStyleRulesIfNeeded):

2017-02-22  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: RTL: Sidebar borders are on the wrong side
        https://bugs.webkit.org/show_bug.cgi?id=168743

        Reviewed by Matt Baker.

        * UserInterface/Views/Sidebar.css:
        (body[dir=ltr] .sidebar.right > .resizer, body[dir=rtl] .sidebar.left > .resizer):
        (body[dir=ltr] .sidebar.left > .resizer, body[dir=rtl] .sidebar.right > .resizer):
        (body[dir=ltr] .sidebar.left, body[dir=rtl] .sidebar.right):
        (body[dir=ltr] .sidebar.right, body[dir=rtl] .sidebar.left):
        (.sidebar.right > .resizer): Deleted.
        (.sidebar.left > .resizer): Deleted.
        (.sidebar.left): Deleted.
        (.sidebar.right): Deleted.

        * UserInterface/Views/Sidebar.js:
        (WebInspector.Sidebar.prototype.resizerDragging):
        Reverse the change if the direction is RTL.

2017-02-22  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: Settings tab labels need adjustment
        https://bugs.webkit.org/show_bug.cgi?id=168497

        Reviewed by Matt Baker.

        Flip margins. Use 'text-align: end' instead of manually choosing
        right and left based on body[dir].

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings > .setting-container > .setting-name):
        (body[dir=ltr] .content-view.settings > .setting-container > .setting-name):
        (body[dir=rtl] .content-view.settings > .setting-container > .setting-name):
        (.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
        (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
        (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
        (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
        (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
        (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]):

2017-02-21  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Prefer Resources tab over Network tab when showing files
        https://bugs.webkit.org/show_bug.cgi?id=168021

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.handlePossibleLinkClick):
        (WebInspector.openURL):
        Add `options` parameter to provide greater customization.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Add logic for `ignoreNetworkTab` option that will ignore instances of NetworkTabContentView.

        * UserInterface/Controllers/BreakpointPopoverController.js:
        (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):
        * UserInterface/Protocol/InspectorFrontendAPI.js:
        (InspectorFrontendAPI.showMainResourceForFrame):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
        * UserInterface/Views/ContextMenuUtilities.js:
        (WebInspector.appendContextMenuItemsForSourceCode):
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
        (WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/NetworkTimelineView.js:
        (WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement):
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
        (WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
        * UserInterface/Views/TimelineDataGrid.js:
        (WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
        Change arguments of functions to change content views to ignore the Network tab.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView.prototype.hasRepresentedObject):
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject):
        * UserInterface/Views/NetworkTabContentView.js:
        (WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
        Ensure that the Network tab can only display resources that it has entries for in its view.

2017-02-21  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: console scope bar's unread message indicator is misaligned
        https://bugs.webkit.org/show_bug.cgi?id=168625

        Reviewed by Matt Baker.

        * UserInterface/Views/LogContentView.css:
        (.log-scope-bar > li.unread::before):
        (body[dir=ltr] .log-scope-bar > li.unread::before):
        (body[dir=rtl] .log-scope-bar > li.unread::before):

2017-02-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Tooltip for "Show console tab" should read "Show Console tab"
        https://bugs.webkit.org/show_bug.cgi?id=168630
        <rdar://problem/30621662>

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):

2017-02-20  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: back/forward navigation buttons should not be flipped
        https://bugs.webkit.org/show_bug.cgi?id=168275
        <rdar://problem/30506897>

        Reviewed by Matt Baker.

        The leading button is always "back" and the trailing button is always "forward", but
        in RTL the icons are swapped so that it still looks like '< >' from left-to-right.

        Rename the two arrows in the SVG to "left" and "right" arrows, and use them appropriately
        in ContentBrowser for back-forward icons based on the layout direction.

        * UserInterface/Images/BackForwardArrows.svg:
        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser):
        * UserInterface/Views/FindBanner.css:
        (.find-banner > button.segmented.left > .glyph):
        (.find-banner > button.segmented.left:active:not(:disabled) > .glyph):
        (.find-banner > button.segmented.right > .glyph):
        (.find-banner > button.segmented.right:active:not(:disabled) > .glyph):

2017-02-20  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: hierarchical path components need spacing and icon adjustments
        https://bugs.webkit.org/show_bug.cgi?id=168581

        Reviewed by Matt Baker.

        Flip a bunch of padding, margin, and offsets. Flip the chevron using a CSS transform.

        * UserInterface/Views/HierarchicalPathComponent.css:
        (.hierarchical-path-component):
        (.hierarchical-path-component > .icon):
        (.hierarchical-path-component > :matches(.icon, .selector-arrows)):
        (body[dir=ltr] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
        (body[dir=rtl] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
        (.hierarchical-path-component > .selector-arrows):
        (.hierarchical-path-component > select):
        (body[dir=ltr] .hierarchical-path-component > select):
        (body[dir=rtl] .hierarchical-path-component > select):
        (.hierarchical-path-component > .separator):
        (body[dir=ltr] .hierarchical-path-component > .separator):
        (body[dir=rtl] .hierarchical-path-component > .separator):
        (.hierarchical-path-component.text-only):
        (body[dir=ltr] .hierarchical-path-component.text-only):
        (body[dir=rtl] .hierarchical-path-component.text-only):
        (body[dir=ltr] .hierarchical-path-component.text-only > select):
        (body[dir=rtl] .hierarchical-path-component.text-only > select):

2017-02-20  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: adjust positioning of scope bar items with multiple values
        https://bugs.webkit.org/show_bug.cgi?id=168575

        Reviewed by Matt Baker.

        Mirror the leading margin as necessary. Adjust the <select> positioning
        so that the popup is really close to the scope bar item's position.

        * UserInterface/Views/ScopeBar.css:
        (body[dir=ltr] .scope-bar > li.multiple > select):
        (body[dir=rtl] .scope-bar > li.multiple > select):
        (.scope-bar > li.multiple > .arrows):
        (body[dir=ltr] .scope-bar > li.multiple > .arrows):
        (body[dir=rtl] .scope-bar > li.multiple > .arrows):

2017-02-20  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: sidebar expand/collapse icons need to be flipped
        https://bugs.webkit.org/show_bug.cgi?id=168276
        <rdar://problem/30506999>

        Reviewed by Matt Baker.

        The sidebars themselves are already flipped due to the layout direction change, but the
        icons have a directional design and need to be manually flipped based on the layout direction.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView):

2017-02-17  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Use Maps in FrameResourceManager instead of objects
        https://bugs.webkit.org/show_bug.cgi?id=168549
        <rdar://problem/30590110>

        Reviewed by Joseph Pecoraro.

        Use Map for _frameIdentifierMap and _resourceRequestIdentifierMap.

        * UserInterface/Controllers/FrameResourceManager.js:
        (WebInspector.FrameResourceManager.prototype.initialize):
        (WebInspector.FrameResourceManager.prototype.get frames):
        (WebInspector.FrameResourceManager.prototype.frameForIdentifier):
        (WebInspector.FrameResourceManager.prototype.frameDidDetach):
        (WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
        (WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
        (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveData):
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
        (WebInspector.FrameResourceManager.prototype.resourceRequestDidFailLoading):
        (WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
        (WebInspector.FrameResourceManager.prototype._processMainFrameResourceTreePayload):
        (WebInspector.FrameResourceManager.prototype._createFrame):

2017-02-17  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
        https://bugs.webkit.org/show_bug.cgi?id=168273
        <rdar://problem/29949325>

        Reviewed by Matt Baker.

        Add the ability to dock Web Inspector to the left of the inspected view.
        The frontend decides whether the Dock to Side button docks left or right
        based on the current layout direction.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Rename the "Dock to Right" button to "Dock to Side" instead. It's easier to just
        have one button than to try and conditionally hide one or the other based on
        the layout direction. Change the dock callback and the icon used for the button
        depending on layout direction.

        (WebInspector.resolvedLayoutDirection):
        Refactor getLayoutDirection() to resolvedLayoutDirection() so callers get back
        either "ltr" or "rtl".

        Flip the dock side if layout direction changes while docked to the side.

        Adjust various code paths to account for the existing of left docking. In particular,
        resize rejection needs special-casing for resizing leftward from beyond the right side
        of the Inspector view when it is docked to the left. Improve related comments since it
        took me an unbelievable amount of time to understand what this code is supposed to do.

        * UserInterface/Views/Main.css:
        (body.docked.right):
        (body.docked.left #docked-resizer):
        (body.docked:matches(.right, .left) #navigation-sidebar.collapsed > .resizer):
        (body.docked.right #navigation-sidebar.collapsed > .resizer): Deleted.
        Add .docked.left analogues to rules for .docked.right.

2017-02-17  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: add TabBar support for RTL layout
        https://bugs.webkit.org/show_bug.cgi?id=168446

        Reviewed by Matt Baker.

        There are two types of changes needed:
         - Flip leading and trailing borders and margins for the tab items.
         - Enumerate tabs in reverse order when performing manual layout.

        Along the way, I added some color variables local to TabBar.css to
        reduce the number of redundant border-style and color declarations.

        * UserInterface/Base/Main.js:
        Change this to resolvedLayoutDirection(), and resolve "System" to "ltr" or "rtl".
        This makes it suitable for use in manual layout without worrying about "System".
        Fix the one existing use-site to not do its own resolution of "System".

        * UserInterface/Views/TabBar.css:
        Define commonly used colors and border styles and adopt var() usages.
        Flip borders that should vary in RTL vs LTR, but not all of them. In
        many cases, the border is not direction-dependent and looks the same
        on both sides. Also, no need to swap animated properties as all manual
        layout is done from the left edge.

        (.tab-bar):
        (body.window-inactive .tab-bar):
        (.tab-bar > .top-border):
        (body.window-inactive .tab-bar > .top-border):
        (.tab-bar > .item):
        (body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item),):
        (body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item),):
        (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover):
        (body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
        (body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
        (body.window-inactive .tab-bar > .item):
        (body[dir=ltr].window-inactive .tab-bar > .item):
        (body[dir=rtl].window-inactive .tab-bar > .item):
        (.tab-bar > .item > .close):
        (body[dir=ltr] .tab-bar > .item > .close):
        (body[dir=rtl] .tab-bar > .item > .close):
        (.tab-bar > .item:not(.pinned) > .flex-space:last-child):
        (body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
        (body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
        (.tab-bar > .item > .title):
        (body[dir=ltr] .tab-bar > .item > .title):
        (body[dir=rtl] .tab-bar > .item > .title):
        (.tab-bar.collapsed > .item > .close):
        (body[dir=ltr] .tab-bar.collapsed > .item > .close):
        (body[dir=rtl] .tab-bar.collapsed > .item > .close):

        * UserInterface/Views/TabBar.js:
        When doing manual layout, keep doing calculations with respect to the left edge
        and keep the list of tab items in logical (LTR) order, as in the DOM. But, when
        manually positioning tab items for RTL layout direction, reverse the tab items
        so that it matches the screen/layout order of the flipped flexbox items.

        (WebInspector.TabBar.prototype.insertTabBarItem):
        (WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
        In RTL, put extra space after closing a tab to the left of normal tabs. This
        matches the behavior of LTR, but requires some additional measurement since we
        still position tabs using `left` and can't simply infer the leftover space.

        (WebInspector.TabBar.prototype._tabBarItemsFromLeftToRight): Added.
        (WebInspector.TabBar.prototype._handleMouseMoved):
        (WebInspector.TabBar.prototype._handleMouseUp):

2017-02-17  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Zoom level UI out of sync with setting value
        https://bugs.webkit.org/show_bug.cgi?id=168522

        Reviewed by Brian Burg.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView):
        Trigger a layout whenever the zoomFactor setting is changed. This is needed since the
        zoomFactor setting can also be modified by global keyboard shortcuts.

2017-02-17  Brian Burg  <bburg@apple.com>

        Web Inspector: Loc: Zoom level in Settings tab needs to use localized formatting
        https://bugs.webkit.org/show_bug.cgi?id=168465

        Reviewed by Matt Baker.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.layout):
        (WebInspector.SettingsTabContentView):

2017-02-17  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: CodeMirror text editor instances have scrollbars on left and right
        https://bugs.webkit.org/show_bug.cgi?id=168274

        Reviewed by Matt Baker.

        CodeMirror doesn't draw its own scrollbar correctly when content is in RTL,
        so it draws an extra scrollbar on the right side. And, for the majority of
        cases, we don't want to view CSS / JS content aligned to the right.

        Manually set the "dir" attribute for all CodeMirror editor instances to "ltr".
        Clients can override this if custom RTL layout is available in a particular case.

        * UserInterface/Views/CodeMirrorEditor.js:
        (WebInspector.CodeMirrorEditor.create):
        (WebInspector.CodeMirrorEditor):

2017-02-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Timeline DataGridNodes are lacking detail in title
        https://bugs.webkit.org/show_bug.cgi?id=168529
        <rdar://problem/30579959>

        Reviewed by Brian Burg.

        * UserInterface/Views/TimelineDataGridNode.js:
        (WebInspector.TimelineDataGridNode.prototype.displayName):
        Include detailed information for DataGridNode display names, since we
        want to show maximum detail for records in the DataGrid.

2017-02-16  Brian Burg  <bburg@apple.com>

        Web Inspector: add DebugUI setting to manually override UI layout direction
        https://bugs.webkit.org/show_bug.cgi?id=168222

        Reviewed by Joseph Pecoraro.

        Expose three layout direction settings:
         - System (inherit system UI layout direction)
         - LTR (the default regardless of system language)
         - RTL (under development, only accessible via this menu)

        * UserInterface/Base/Main.js:
        The UI layout direction is normally only set once per frontend load.
        There is no expectation on macOS that applications can switch dynamically.
        But, for DebugUI purposes we need to switch the layout direction quickly.
        Store the new setting and trigger a hard reload of the frontend page.
        If the 'system' setting is specified, fall back to the system layout
        direction as provided by InspectorFrontendHost.

        * UserInterface/Base/Setting.js:
        Add an application-level setting for (user interface) layout direction.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView):
        (WebInspector.SettingsTabContentView.prototype.layout):
        (WebInspector.SettingsTabContentView.prototype.initialLayout): Deleted.
        Make this a normal layout() method so that we can dirty the view
        when DebugUI is turned on or off.

2017-02-16  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: popovers shouldn't be dismissed when Web Inspector window is dragged
        https://bugs.webkit.org/show_bug.cgi?id=166935

        Reviewed by Joseph Pecoraro.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._mouseDown): Created.
        (WebInspector._dockedResizerMouseDown):
        (WebInspector._moveWindowMouseDown):
        Applies Popover.EventPreventDismissSymbol whenever a mousedown event is fired for an element
        that controls the positioning or size of the WebInspector window.

        * UserInterface/Views/Popover.js:
        (WebInspector.Popover.prototype._handleEvent):
        (WebInspector.Popover.EventPreventDismissSymbol):
        Do not dismiss the popover if Popover.EventPreventDismissSymbol is applied to the event.

2017-02-15  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Request headers when copied & pasted should follow HTTP format, colon instead of tab
        https://bugs.webkit.org/show_bug.cgi?id=168155

        Reviewed by Matt Baker.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid):
        (WebInspector.DataGrid.prototype.set copyTextDelimiter):
        (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
        (WebInspector.DataGrid.prototype._copyTextForDataGridHeaders):
        * UserInterface/Views/ResourceDetailsSidebarPanel.js:
        (WebInspector.ResourceDetailsSidebarPanel.prototype._createNameValueDataGrid):
        Allow instances of DataGrid to change the delimiter between items when copying rows.

2017-02-15  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Split console should be allowed when docked bottom on Elements/Resources/Debugger/Storage tabs
        https://bugs.webkit.org/show_bug.cgi?id=168385

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.updateDockedState):
        If the new docked configuration does not support the split console, hide it.

        * UserInterface/Views/DebuggerTabContentView.js:
        (WebInspector.DebuggerTabContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/ElementsTabContentView.js:
        (WebInspector.ElementsTabContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/ResourcesTabContentView.js:
        (WebInspector.ResourcesTabContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/StorageTabContentView.js:
        (WebInspector.StorageTabContentView.prototype.get supportsSplitContentBrowser):

2017-02-14  Brian Burg  <bburg@apple.com>

        Web Inspector: RTL: adjust padding of dashboard icons
        https://bugs.webkit.org/show_bug.cgi?id=168340

        Reviewed by Matt Baker.

        Extract the direction-dependent padding into a "local" variable.
        Use two rules to apply it to whichever is the leading side.

        While we tend to use leading/trailing in Apple layout technologies,
        I think the CSS logical properties specification sticks to using
        -start and -end, so let's use that nomenclature where we can.

        * UserInterface/Views/DefaultDashboardView.css:
        (.toolbar .dashboard.default > .item > div):
        (body[dir=ltr] .toolbar .dashboard.default > .item > div):
        (body[dir=rtl] .toolbar .dashboard.default > .item > div):

2017-02-14  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] add navigator.getUserMedia for compatibility with legacy content
        https://bugs.webkit.org/show_bug.cgi?id=168324
        <rdar://problem/30513125>

        Reviewed by Youenn Fablet.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-02-13  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: provide a way to show current value of CSS variables in style rules
        https://bugs.webkit.org/show_bug.cgi?id=168172

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Images/CSSVariable.svg: Added.

        * UserInterface/Models/TextMarker.js:
        (WebInspector.TextMarker.Type):

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor._createInlineSwatches.update):

        * UserInterface/Views/CodeMirrorTextMarkers.js:
        (createCodeMirrorTextMarkers):
        (createCodeMirrorVariableTextMarkers):

        * UserInterface/Views/InlineSwatch.css:
        (.inline-swatch.variable):
        (.inline-swatch:matches(.bezier, .spring, .variable)):
        (.inline-swatch:matches(.bezier, .spring, .variable):hover):
        (.inline-swatch:matches(.bezier, .spring, .variable):active):
        (.inline-swatch-variable-popover):
        (.inline-swatch-variable-popover .CodeMirror):
        (.inline-swatch-variable-popover .CodeMirror pre):
        (.inline-swatch:matches(.bezier, .spring):hover): Deleted.
        (.inline-swatch:matches(.bezier, .spring):active): Deleted.

        * UserInterface/Views/InlineSwatch.js:
        (WebInspector.InlineSwatch):
        (WebInspector.InlineSwatch.prototype._fallbackValue):
        (WebInspector.InlineSwatch.prototype._swatchElementClicked):
        (WebInspector.InlineSwatch.prototype._valueEditorValueDidChange):
        (WebInspector.InlineSwatch.Type):

2017-02-13  Matt Baker  <mattbaker@apple.com>

        REGRESSION(r188138): Web Inspector: cannot edit next/previous DOM attribute by using tab/shift-tab
        https://bugs.webkit.org/show_bug.cgi?id=168120
        <rdar://problem/30466065>

        Reviewed by Joseph Pecoraro.

        DOMTreeElement's attribute editing committed handler shouldn't early return
        when a `moveDirection` has been specified.

        * UserInterface/Views/DOMTreeElement.js:

2017-02-12  Brian Burg  <bburg@apple.com>

        Web Inspector: Assertion failed: !this._items.has(item) (at Collection.js:50)
        https://bugs.webkit.org/show_bug.cgi?id=168212

        Reviewed by Joseph Pecoraro.

        When turning on DebugUI, WebKit-internal scripts were being added to the
        Collection that is the represented object for the Extra Scripts folder.
        This was not balanced out by removing the scripts when DebugUI is turned
        off, so switching DebugUI on and off several times hit a multiple-add assertion.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._scriptWasRemoved):
        Remove the script from its Collection if applicable.

2017-02-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Debugger sidebar panel should not have multiple tree selections
        https://bugs.webkit.org/show_bug.cgi?id=166000
        <rdar://problem/29721988>

        Reviewed by Timothy Hatcher.

        The method for synchronizing tree element selection across a sidebar's
        tree outlines fails for selections made during startup, because it depends
        on events which are being suppressed.

        This adds a new class, TreeOutlineGroup, which restricts tree element selection
        inside a group of tree outlines by receiving messages directly from TreeElement.

        * UserInterface/Main.html:
        Add file for TreeOutlineGroup class.

        * UserInterface/Views/ContentBrowserTabContentView.js:
        (WebInspector.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
        (WebInspector.ContentBrowserTabContentView):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
        Update `createContentTreeOutline` calls for new signature.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel):
        Replace _visibleContentTreeOutlines with a TreeOutlineGroup, which
        contains the single-selection behavior previously handled by the sidebar.

        (WebInspector.NavigationSidebarPanel.prototype.get contentTreeOutlines):
        (WebInspector.NavigationSidebarPanel.prototype.get hasSelectedElement):
        Implement using the sidebar's tree outline group.
        (WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
        Remove first parameter, which is always true.
        (WebInspector.NavigationSidebarPanel.prototype.treeElementForRepresentedObject):
        (WebInspector.NavigationSidebarPanel.prototype.saveStateToCookie):
        (WebInspector.NavigationSidebarPanel.prototype.pruneStaleResourceTreeElements):
        (WebInspector.NavigationSidebarPanel.prototype._checkForEmptyFilterResults):
        (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
        (WebInspector.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
        (WebInspector.NavigationSidebarPanel.prototype.set contentTreeOutline): Deleted.
        Remove unused setter.
        (WebInspector.NavigationSidebarPanel.prototype.get visibleContentTreeOutlines): Deleted.
        Renamed to contentTreeOutlines.
        (WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus): Deleted.
        No longer needed.
        (WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange): Deleted.
        Selection across trees handled by the tree outline group.

        * UserInterface/Views/TreeElement.js:
        (WebInspector.TreeElement.prototype.select):
        Inform the element's tree outline group (if any), of the selection changed.

        * UserInterface/Views/TreeOutlineGroup.js: Added.
        (WebInspector.TreeOutlineGroup):
        (WebInspector.TreeOutlineGroup.groupForTreeOutline):
        (WebInspector.TreeOutlineGroup.prototype.get selectedTreeElement):
        (WebInspector.TreeOutlineGroup.prototype.itemAdded):
        Associate tree outline with the group and wrap tree elements. If the
        incoming tree outline has a selection, deselect the group's currently
        selected tree element.

        (WebInspector.TreeOutlineGroup.prototype.itemRemoved):
        Disassociate the tree outline from the group.
        (WebInspector.TreeOutlineGroup.prototype.didSelectTreeElement):
        Called by TreeElement when it becomes selected.
        (WebInspector.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
        Deselect any selected items in all tree outlines belonging to the group,
        except for the specified item.

2017-02-10  Matt Baker  <mattbaker@apple.com>

        Web Inspector: ContentViewContainer can have redundant back-forward entries after ContentView close
        https://bugs.webkit.org/show_bug.cgi?id=168105

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/BackForwardEntry.js:
        (WebInspector.BackForwardEntry.prototype.isEqual):
        Make check for equal ContentView/cookie reusable.

        * UserInterface/Views/ContentViewContainer.js:
        (WebInspector.ContentViewContainer.prototype.showContentView):
        Use BackForwardEntry.prototype.isEqual.
        (WebInspector.ContentViewContainer.prototype.replaceContentView):
        (WebInspector.ContentViewContainer.prototype.closeContentView):
        Clean-up the BackForwardEntry list after changes that can cause
        identical entries to become adjacent.

        (WebInspector.ContentViewContainer.prototype._removeIdenticalAdjacentBackForwardEntries):
        Remove consecutive entries with the same ContentView and cookie.
        (WebInspector.ContentViewContainer):
        (WebInspector.ContentViewContainer.closeAllContentViewsOfPrototype): Deleted.
        Drive-by cleanup: removed dead code.

2017-02-10  Matt Baker  <mattbaker@apple.com>

        REGRESSION (r211829): Web Inspector: Elements tab is blank when added after page load
        https://bugs.webkit.org/show_bug.cgi?id=168142

        Reviewed by Brian Burg.

        The Elements tab can be shown in two ways: by adding the Elements tab
        from the "New Tab" tab, or via Inspect Element. In both cases we should
        be checking that the ContentView exists, and create it if needed.

        * UserInterface/Views/ElementsTabContentView.js:
        (WebInspector.ElementsTabContentView.prototype.showRepresentedObject):
        (WebInspector.ElementsTabContentView.prototype.shown):

2017-02-09  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: changing dock side from windowed to bottom should cause split console to collapse on Timeline and Network tabs
        https://bugs.webkit.org/show_bug.cgi?id=167841

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        (WebInspector.updateDockedState):

2017-02-09  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Option+hover on -webkit-transform in Styles sidebar underlines only half the property
        https://bugs.webkit.org/show_bug.cgi?id=167949

        Reviewed by Joseph Pecoraro.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
        Attempt to merge tokens (specifically the `text` and `start` values) if the either the 
        previous or next token is of the type "meta".

2017-02-09  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Remove legacy Navigator.webkitGetUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=168016

        Reviewed by Youenn Fablet.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-02-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r211912.
        https://bugs.webkit.org/show_bug.cgi?id=168034

        http/tests/media/media-stream/disconnected-frame-permission-
        denied.html should be updated (Requested by youenn on
        #webkit).

        Reverted changeset:

        "[MediaStream] Remove legacy Navigator.webkitGetUserMedia"
        https://bugs.webkit.org/show_bug.cgi?id=168016
        http://trac.webkit.org/changeset/211912

2017-02-08  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Remove legacy Navigator.webkitGetUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=168016

        Reviewed by Youenn Fablet.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-02-08  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r211907.

        Broke the build

        Reverted changeset:

        "[MediaStream] Remove legacy Navigator.webkitGetUserMedia"
        https://bugs.webkit.org/show_bug.cgi?id=168016
        http://trac.webkit.org/changeset/211907

2017-02-08  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Remove legacy Navigator.webkitGetUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=168016

        Reviewed by Youenn Fablet.

        * UserInterface/Models/NativeFunctionParameters.js:

2017-02-07  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: gradient editor should allow switching the units of the 'angle' parameter
        https://bugs.webkit.org/show_bug.cgi?id=166938

        Reviewed by Brian Burg.

        * UserInterface/Test.html:
        Add WebInspector.Gradient for new model object tests.

        * UserInterface/Models/Gradient.js:
        (WebInspector.Gradient.fromString):
        (WebInspector.LinearGradient):
        (WebInspector.LinearGradient.fromComponents):
        (WebInspector.LinearGradient.prototype.set angleValue):
        (WebInspector.LinearGradient.prototype.get angleValue):
        (WebInspector.LinearGradient.prototype.set angleUnits):
        (WebInspector.LinearGradient.prototype.get angleUnits):
        (WebInspector.LinearGradient.prototype.copy):
        (WebInspector.LinearGradient.prototype.toString):
        (WebInspector.LinearGradient.prototype._angleValueForUnits):
        Rework part of WebInspector.LinearGradient to support units other than "deg".

        * UserInterface/Views/GradientEditor.css:
        (.gradient-editor > .gradient-angle > input[type="range"]):
        (.gradient-editor > .gradient-angle > input[type="number"]):

        * UserInterface/Views/GradientEditor.js:
        (WebInspector.GradientEditor):
        (WebInspector.GradientEditor.prototype.set gradient):
        (WebInspector.GradientEditor.prototype._gradientTypeChanged):
        (WebInspector.GradientEditor.prototype._angleValueChanged):
        (WebInspector.GradientEditor.prototype._angleUnitsChanged):
        (WebInspector.GradientEditor.prototype._angleChanged): Deleted.
        Add <select> for each unit type that will change the units of the gradient.

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

        Web Inspector: DOMTreeOutline becomes collapsed after switching back to Elements tab
        https://bugs.webkit.org/show_bug.cgi?id=167924

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline.prototype.update):
        Drive-by fix: move variable initialization below the early return.

        * UserInterface/Views/ElementsTabContentView.js:
        (WebInspector.ElementsTabContentView.prototype.shown): Deleted.
        Calling this._showDOMTreeContentView isn't necessary. The base class
        implementation will call `shown` on the content view.

2017-02-06  Fujii Hironori  <Hironori.Fujii@sony.com>

        Web Inspector: sibling elements's disclosure triangles aren't vertically aligned in DOM tree outline in certain ports
        https://bugs.webkit.org/show_bug.cgi?id=167568

        Reviewed by Brian Burg.

        The triangle has 13px height and has float:left. If the line-height
        is smaller than 13px, the sibling element's triangles aren't
        vertically aligned.

        * UserInterface/Views/DOMTreeOutline.css:
        (.tree-outline.dom li.parent): Set line-height 13px explicitly.

2017-02-03  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Add stroke-linecap property values to CSS autocompletion
        https://bugs.webkit.org/show_bug.cgi?id=167778

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/CSSKeywordCompletions.js:
        Add autocompletion values for fill-rule and stroke-linecap.

2017-02-02  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: can't jump from Search Tab result to see resource in other tabs (Resource, Debugger, Network)
        https://bugs.webkit.org/show_bug.cgi?id=167072

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.tabContentViewForRepresentedObject):
        (WebInspector.showRepresentedObject):
        (WebInspector.showMainFrameDOMTree):
        (WebInspector.showSourceCodeForFrame):
        (WebInspector.showSourceCode):
        (WebInspector.showSourceCodeLocation):
        (WebInspector.showOriginalUnformattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeLocation):
        (WebInspector.showOriginalOrFormattedSourceCodeTextRange):
        (WebInspector.showResourceRequest):
        Rework parameters to add optional `options` dictionary that can be used to indicate
        additional functionality.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
        Ignore instances of SearchTabContentView as it can display content views for all types of
        searchable data.  Determined by a newly added optional `options` parameter.

        * UserInterface/Base/Utilities.js:
        (Object.shallowMerge):
        Merges the keys of two objects into a new one.

        * UserInterface/Views/ComputedStyleDetailsPanel.js:
        (WebInspector.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked):
        (WebInspector.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked):

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.performSearch.createTreeElementForMatchObject):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.resourceCallback):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts.scriptCallback):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.domSearchResults):
        (WebInspector.SearchSidebarPanel.prototype.performSearch.domCallback):
        (WebInspector.SearchSidebarPanel.prototype.performSearch):
        (WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
        * UserInterface/Views/TreeElement.js:
        (WebInspector.TreeElement.treeElementDoubleClicked):
        Add an event dispatch whenever a TreeElement is double clicked via the `dblclick` event.

2017-02-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Web Inspector: Upgrade Esprima to the latest one to support dynamic import
        https://bugs.webkit.org/show_bug.cgi?id=167698

        Reviewed by Joseph Pecoraro.

        * UserInterface/External/Esprima/esprima.js:
        Update to Esprima@5307e30 (4.0.0-dev).

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
        (WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        (WebInspector.ScriptSyntaxTree):
        * UserInterface/Workers/Formatter/ESTreeWalker.js:
        (ESTreeWalker.prototype._walkChildren):
        (ESTreeWalker):
        Add new nodes, SpreadProperty, RestProperty, and Import.
        SpreadProperty and RestProperty are the part of ES2018 rest and spread properties.
        https://github.com/sebmarkbage/ecmascript-rest-spread
        Import is dynamic import node. The syntax is similar to Super.
        https://github.com/tc39/proposal-dynamic-import

        * UserInterface/Workers/Formatter/EsprimaFormatter.js:
        (EsprimaFormatter.prototype._handleTokenAtNode):

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

        Web Inspector: Remove keyboard shortcut to close tab - does not match expectations
        https://bugs.webkit.org/show_bug.cgi?id=167672

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):

2017-01-31  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Tooltip text should not end in a period
        https://bugs.webkit.org/show_bug.cgi?id=167130

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/BezierEditor.js:
        (WebInspector.BezierEditor):
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        * UserInterface/Views/GeneralTabBarItem.js:
        (WebInspector.GeneralTabBarItem):
        * UserInterface/Views/HeapSnapshotContentView.js:
        (WebInspector.HeapSnapshotInstancesContentView):
        (WebInspector.HeapSnapshotObjectGraphContentView):
        * UserInterface/Views/InlineSwatch.js:
        (WebInspector.InlineSwatch):
        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateEntries):
        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateProperties):
        * UserInterface/Views/ObjectTreeView.js:
        (WebInspector.ObjectTreeView.prototype._updateEntries):
        (WebInspector.ObjectTreeView.prototype._updateProperties):
        * UserInterface/Views/ResourceTimelineDataGridNode.js:
        (WebInspector.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
        * UserInterface/Views/SpringEditor.js:
        (WebInspector.SpringEditor):
        * UserInterface/Views/TypeTreeElement.js:
        (WebInspector.TypeTreeElement.prototype.onpopulate):
        * UserInterface/Views/TypeTreeView.js:
        (WebInspector.TypeTreeView.prototype._populate):
        * UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
        (WebInspector.VisualStyleCommaSeparatedKeywordEditor):
        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
        * UserInterface/Views/VisualStylePropertyEditorLink.js:
        (WebInspector.VisualStylePropertyEditorLink.prototype.set linked):
        * UserInterface/Views/VisualStylePropertyNameInput.js:
        (WebInspector.VisualStylePropertyNameInput):
        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection):
        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype._updateCheckboxTitle):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._updateSelectorIcon):

2017-01-31  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: add CSS color keyword entries for all grey/gray variations
        https://bugs.webkit.org/show_bug.cgi?id=167668

        Reviewed by Matt Baker.

        * UserInterface/Models/Color.js:
        (WebInspector.Color.Keywords):

2017-01-31  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Network tab: provide a way to preserve log on navigation
        https://bugs.webkit.org/show_bug.cgi?id=166908

        Reviewed by Matt Baker.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Setting.js:
        (WebInspector.settings):
        Add clearNetworkOnNavigate global setting.

        * UserInterface/Views/NetworkGridContentView.css:
        (.content-view.network-grid > .data-grid .preserved:not(.selected) .cell-content):
        (.content-view.network-grid > .data-grid .preserved:not(.selected) .cell-content .timeline-record-bar > .segment):
        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        (WebInspector.NetworkGridContentView.prototype._mainResourceDidChange):
        * UserInterface/Views/NetworkSidebarPanel.css:
        (.sidebar > .panel.navigation.network .tree-outline > .preserved:not(.selected) > :not(.status)):
        (.sidebar > .panel.navigation.network .tree-outline > .preserved:not(.selected) > .icon):
        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel):
        (WebInspector.NetworkSidebarPanel.prototype._mainResourceDidChange):
        Add styling to preserved network records.

        * UserInterface/Controllers/TimelineManager.js:
        (WebInspector.TimelineManager.prototype._mainResourceDidChange):
        Only reset the persistent network timeline if the clearNetworkOnNavigate setting is true.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.initialLayout):
        (WebInspector.SettingsTabContentView):
        Add checkbox and spacers for new setting.

2017-01-31  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: User Settings: Secondary-clicking the New Tab and Settings tabs should not produce a context menu
        https://bugs.webkit.org/show_bug.cgi?id=167651

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/PinnedTabBarItem.js:
        (WebInspector.PinnedTabBarItem):
        (WebInspector.PinnedTabBarItem.prototype._handleContextMenuEvent):
        Always preventDefault() to ensure that the system context menu is never shown.

        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar):
        (WebInspector.TabBar.prototype.get newTabTabBarItem):
        (WebInspector.TabBar.prototype._handleNewTabContextMenu): Deleted.
        Move the event dispatch to WebInspector.PinnedTabBarItem to give all instances a contextmenu
        event handler.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):

2017-01-31  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Address some ESLint warnings
        https://bugs.webkit.org/show_bug.cgi?id=167634

        Reviewed by Brian Burg.

        * UserInterface/Base/DOMUtilities.js:
        (WebInspector.linkifyNodeReference):
        (isSimiliarNode):
        (WebInspector.xpathIndex):
        These empty statements were supposed to be returns!

        * UserInterface/Base/Main.js:
        * UserInterface/Models/CSSProperty.js:
        (WebInspector.CSSProperty.prototype.get relatedLonghandProperties):
        * UserInterface/Models/DOMNode.js:
        * UserInterface/Protocol/Connection.js:
        (InspectorBackend.Connection):
        (InspectorBackend.MainConnection):
        (InspectorBackend.WorkerConnection):
        * UserInterface/Protocol/MainTarget.js:
        (WebInspector.MainTarget):
        * UserInterface/Protocol/WorkerTarget.js:
        (WebInspector.WorkerTarget):
        * UserInterface/Test/Test.js:
        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        * UserInterface/Views/ConsoleSession.js:
        (WebInspector.ConsoleSession):
        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel):
        * UserInterface/Views/ScriptContentView.js:
        (WebInspector.ScriptContentView.prototype._toggleTypeAnnotations):
        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._createControlFlowScrollEventHandler):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype._toggleTypeAnnotations):
        * UserInterface/Workers/Formatter/EsprimaFormatter.js:
        (EsprimaFormatter.prototype._handleTokenAtNode):
        Address pedantic warnings for consistent style.

2017-01-30  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: "bouncy highlight" element in TextEditor/DOMTreeOutline should update or dismiss when user scrolls
        https://bugs.webkit.org/show_bug.cgi?id=167146

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype._revealSearchResult.scrollHandler):
        (WebInspector.TextEditor.prototype._revealSearchResult.animationEnded):
        (WebInspector.TextEditor.prototype._revealSearchResult):

2017-01-30  Joseph Pecoraro  <pecoraro@apple.com>

        Implement PerformanceObserver
        https://bugs.webkit.org/show_bug.cgi?id=167546
        <rdar://problem/30247959>

        Reviewed by Ryosuke Niwa.

        * UserInterface/Models/NativeFunctionParameters.js:
        Improve API view display of built-in performance methods.

2017-01-30  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Need some limit on Async Call Stacks for async loops (rAF loops)
        https://bugs.webkit.org/show_bug.cgi?id=165633
        <rdar://problem/29738502>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        Text for "Truncated" marker tree element.

        * UserInterface/Models/StackTrace.js:
        (WebInspector.StackTrace):
        (WebInspector.StackTrace.fromPayload):
        (WebInspector.StackTrace.prototype.get truncated):
        Plumbing for new Console.StackTrace property `truncated`.

        * UserInterface/Views/ThreadTreeElement.css:
        (.tree-outline > .item.thread + ol > .item.truncated-call-frames):
        (.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
        Styles for "Truncated" marker tree element.

        * UserInterface/Views/ThreadTreeElement.js:
        (WebInspector.ThreadTreeElement.prototype.refresh):
        Append "Truncated" marker tree element if necessary.

        * Versions/Inspector-iOS-10.3.json:

2017-01-30  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r211345.

        The LayoutTest for this change is failing an assertion.

        Reverted changeset:

        "Web Inspector: Need some limit on Async Call Stacks for async
        loops (rAF loops)"
        https://bugs.webkit.org/show_bug.cgi?id=165633
        http://trac.webkit.org/changeset/211345

2017-01-28  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Need some limit on Async Call Stacks for async loops (rAF loops)
        https://bugs.webkit.org/show_bug.cgi?id=165633
        <rdar://problem/29738502>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        Text for "Truncated" marker tree element.

        * UserInterface/Models/StackTrace.js:
        (WebInspector.StackTrace):
        (WebInspector.StackTrace.fromPayload):
        (WebInspector.StackTrace.prototype.get truncated):
        Plumbing for new Console.StackTrace property `truncated`.

        * UserInterface/Views/ThreadTreeElement.css:
        (.tree-outline > .item.thread + ol > .item.truncated-call-frames):
        (.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
        Styles for "Truncated" marker tree element.

        * UserInterface/Views/ThreadTreeElement.js:
        (WebInspector.ThreadTreeElement.prototype.refresh):
        Append "Truncated" marker tree element if necessary.

        * Versions/Inspector-iOS-10.3.json:

2017-01-27  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: gradient editor should provide horizontal slider for 'angle' value where applicable
        https://bugs.webkit.org/show_bug.cgi?id=166937

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/GradientEditor.css:
        (.gradient-editor):
        (.gradient-editor > .gradient-angle):
        (.gradient-editor > .gradient-angle > input[type="range"]):
        (.gradient-editor > .gradient-angle > input[type="number"]):
        (.gradient-editor > .gradient-angle > input::-webkit-inner-spin-button):
        (.gradient-editor > .gradient-angle > input): Deleted.

        * UserInterface/Views/GradientEditor.js:
        (WebInspector.GradientEditor):
        (WebInspector.GradientEditor.prototype.set gradient):
        (WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected):
        (WebInspector.GradientEditor.prototype._gradientTypeChanged):
        (WebInspector.GradientEditor.prototype._angleChanged):
        (WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted.
        (WebInspector.GradientEditor.prototype._angleInputValueDidChange): Deleted.
        Remove the DragToAdjustController and replace with an <input type="range">.

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

        Web Inspector: Provide a way to trigger a Garbage Collection
        https://bugs.webkit.org/show_bug.cgi?id=167345
        <rdar://problem/30102853>

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        New "Garbage collect" tooltip.

        * Versions/Inspector-iOS-10.3.json:
        * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
        Update 10.3 so it generates its list of supported domains for workers.
        Note that the Heap domain is not be available in this backend but it is now.

        * UserInterface/Protocol/Connection.js:
        (InspectorBackend.WorkerConnection):
        * UserInterface/Protocol/HeapObserver.js:
        (WebInspector.HeapObserver.prototype.garbageCollected):
        * UserInterface/Protocol/InspectorBackend.js:
        (InspectorBackendClass):
        (InspectorBackendClass.prototype.get workerSupportedDomains):
        (InspectorBackendClass.prototype.workerSupportedDomain):

        * UserInterface/Images/NavigationItemClear.svg: Added.
        * UserInterface/Images/NavigationItemGarbageCollect.svg: Added.
        New image for Garbage Collection. Better image for clearing.
        
        * UserInterface/Images/gtk/NavigationItemClear.svg: Added.
        Copy the Trash icon for Clear for gtk.

        * UserInterface/Protocol/Target.js:
        (WebInspector.Target.prototype.get HeapAgent):
        * UserInterface/Protocol/WorkerTarget.js:
        (WebInspector.WorkerTarget):
        Include Heap agent for Workers.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype.get navigationItems):
        (WebInspector.LogContentView.prototype._garbageCollect):
        Add garbage collect button which triggers gc on all capable targets.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView):
        Update the Clear icon to an improved icon.

        * UserInterface/Controllers/HeapManager.js:
        (WebInspector.HeapManager.prototype.garbageCollected):
        Timelines only shows Main Target events, do not show GC events for Workers.

2017-01-23  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: long press on New Tab Tab Item should show context menu with recently closed tabs that are still closed
        https://bugs.webkit.org/show_bug.cgi?id=166901

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/TabBar.js:
        (WebInspector.TabBar.Event):
        (WebInspector.TabBar.prototype._handleNewTabContextMenu):
        Add listener dispatch for contextmenu event on New Tab tab item.

        (WebInspector.TabBar.prototype.get newTabTabBarItem): Deleted.
        Unused.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        (WebInspector.TabBrowser.prototype._tabBarItemAdded):
        (WebInspector.TabBrowser.prototype._tabBarItemRemoved):
        (WebInspector.TabBrowser.prototype._handleNewTabContextMenu): Added.
        Create an array that keeps track of tabs as they are closed, and populate the contextmenu
        of the New Tab tab item with entries for each of these tabs.

2017-01-23  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: tree elements with depth > 1 should have context menu "expand all"/"collapse all" commands
        https://bugs.webkit.org/show_bug.cgi?id=135590

        Reviewed by Timothy Hatcher.

        Rework the context menu event handlers for all TreeOutline and TreeElement instances such
        that the TreeOutline handles the event listener and creates the context menu object and the
        TreeElement populates the list with items.  This is necessary due to the way in which
        children are laid out, as there is padding on either side of the element that would not
        trigger a context menu event.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/BreakpointTreeElement.js:
        (WebInspector.BreakpointTreeElement.prototype.ondetach):
        (WebInspector.BreakpointTreeElement.prototype.populateContextMenu):
        (WebInspector.BreakpointTreeElement.prototype.oncontextmenu): Deleted.
        * UserInterface/Views/ContextMenuUtilities.js:
        (WebInspector.appendContextMenuItemsForSourceCode):
        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
        * UserInterface/Views/DOMTreeOutline.js:
        (WebInspector.DOMTreeOutline):
        (WebInspector.DOMTreeOutline.prototype.populateContextMenu):
        (WebInspector.DOMTreeOutline.prototype._onmousedown):
        (WebInspector.DOMTreeOutline.prototype._onmousemove):
        (WebInspector.DOMTreeOutline.prototype._ondragstart):
        (WebInspector.DOMTreeOutline.prototype._ondragover):
        (WebInspector.DOMTreeOutline.prototype._ondrop):
        (WebInspector.DOMTreeOutline.prototype._treeElementFromEvent): Deleted.
        (WebInspector.DOMTreeOutline.prototype._contextMenuEventFired): Deleted.
        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._breakpointTreeOutlineContextMenuTreeElement):
        * UserInterface/Views/FrameTreeElement.js:
        (WebInspector.FrameTreeElement.prototype.onattach):
        * UserInterface/Views/GeneralTreeElement.js:
        (WebInspector.GeneralTreeElement.prototype.onattach):
        (WebInspector.GeneralTreeElement.prototype.ondetach): Deleted.
        * UserInterface/Views/ObjectTreeBaseTreeElement.js:
        (WebInspector.ObjectTreeBaseTreeElement.prototype.populateContextMenu):
        (WebInspector.ObjectTreeBaseTreeElement.prototype._logSymbolProperty):
        (WebInspector.ObjectTreeBaseTreeElement.prototype._logValue):
        (WebInspector.ObjectTreeBaseTreeElement.prototype.oncontextmenu): Deleted.
        (WebInspector.ObjectTreeBaseTreeElement.prototype._contextMenuHandler): Deleted.
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.prototype.populateContextMenu):
        (WebInspector.ResourceTreeElement.prototype.onattach): Deleted.
        (WebInspector.ResourceTreeElement.prototype._handleContextMenuEvent): Deleted.
        * UserInterface/Views/ThreadTreeElement.js:
        (WebInspector.ThreadTreeElement.prototype.populateContextMenu):
        (WebInspector.ThreadTreeElement.prototype.oncontextmenu): Deleted.
        * UserInterface/Views/TreeElement.js:
        (WebInspector.TreeElement.prototype.populateContextMenu):
        (WebInspector.TreeElement):
        * UserInterface/Views/TreeOutline.js:
        (WebInspector.TreeOutline):
        (WebInspector.TreeOutline.prototype.treeElementFromEvent):
        (WebInspector.TreeOutline.prototype.populateContextMenu):
        (WebInspector.TreeOutline._generateStyleRulesIfNeeded):
        * UserInterface/Views/VisualStyleSelectorTreeItem.js:
        (WebInspector.VisualStyleSelectorTreeItem.prototype.onattach):
        (WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._highlightNodesWithSelector):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._hideDOMNodeHighlight):
        (WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent): Deleted.
        * UserInterface/Views/WorkerTreeElement.js:
        (WebInspector.WorkerTreeElement.prototype.populateContextMenu):
        (WebInspector.WorkerTreeElement.prototype.onattach):
        (WebInspector.WorkerTreeElement.prototype._handleContextMenuEvent): Deleted.

        * UserInterface/Views/DataGrid.js:
        (WebInspector.DataGrid.prototype._contextMenuInDataTable):
        Add "Expand All"/"Collapse All" context menu items.

2017-01-23  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: color picker should feature an editable CSS value
        https://bugs.webkit.org/show_bug.cgi?id=124356

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ColorPicker.css:
        (.color-picker):
        (.color-picker.hide-inputs):
        (.color-picker > .color-inputs):
        (.color-picker > .color-inputs > div):
        (.color-picker > .color-inputs > div[hidden]):
        (.color-picker > .color-inputs input):

        * UserInterface/Views/ColorPicker.js:
        (WebInspector.ColorPicker.createColorInput):
        (WebInspector.ColorPicker):
        (WebInspector.ColorPicker.prototype.set color):
        (WebInspector.ColorPicker.prototype.set enableColorComponentInputs):
        (WebInspector.ColorPicker.prototype._updateColor):
        (WebInspector.ColorPicker.prototype._handleFormatChange):
        (WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
        (WebInspector.ColorPicker.prototype._showColorComponentInputs):
        (WebInspector.ColorPicker.prototype._handleColorInputInput):
        Add an input element (with a label for the component name and its units) for each component
        as part of the current color format (e.g. R, G, B, A).  If any of these inputs are changed
        then the color is also changed and the "ColorChanged" event is fired.

        * UserInterface/Controllers/CodeMirrorColorEditingController.js:
        (WebInspector.CodeMirrorColorEditingController.prototype.popoverWillPresent):
        * UserInterface/Views/InlineSwatch.js:
        (WebInspector.InlineSwatch.prototype._swatchElementClicked):
        Add FormatChanged event that fires whenever a new color is set with a different format or 
        the color value is set for the first time (there is no old format to compare to).  This is
        needed because if the format becomes RGB, RGBA, HSL, or HSLA from something not in that list
        then the size of the containing popover needs to change since the newly added color inputs
        will be displayed.

        * UserInterface/Views/GradientEditor.js:
        (WebInspector.GradientEditor):
        Prevent the color inputs from displaying at all, since there aren't individual swatches for
        each color in a gradient.

2017-01-20  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Search Tab should display search results immediately when closing and reopening Inspector
        https://bugs.webkit.org/show_bug.cgi?id=167073

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/SearchSidebarPanel.js:
        (WebInspector.SearchSidebarPanel.prototype.focusSearchField):
        Add parameter that will trigger a search with the current input value when true.

        * UserInterface/Views/SearchTabContentView.js:
        (WebInspector.SearchTabContentView):
        (WebInspector.SearchTabContentView.prototype.focusSearchField):
        (WebInspector.SearchTabContentView.prototype.initialLayout):

2017-01-19  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Network Tab's "Clear Network Items" button should have keyboard shortcuts
        https://bugs.webkit.org/show_bug.cgi?id=166943

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._clear):
        Move clear keyboard shortcut to main object and call _handleClearShortcut on the visible
        content view if able.

        * UserInterface/Controllers/JavaScriptLogViewController.js:
        (WebInspector.JavaScriptLogViewController):
        (WebInspector.JavaScriptLogViewController.prototype.requestClearMessages):
        (WebInspector.JavaScriptLogViewController.prototype._handleClearShortcut): Deleted.
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype.handleClearShortcut):
        Move logic for requesting to clear messages from the LogManager to a better named function.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        (WebInspector.NetworkGridContentView.prototype.handleClearShortcut):

2017-01-19  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Dashboard's log/error/warning help tag says "click to show the Console" even when clicking does nothing
        https://bugs.webkit.org/show_bug.cgi?id=167102

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.showConsoleTab):
        Don't revert to the All scopes if the requested scope is already selected.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/DefaultDashboardView.js:
        (WebInspector.DefaultDashboardView):
        (WebInspector.DefaultDashboardView.prototype._appendElementForNamedItem):
        (WebInspector.DefaultDashboardView.prototype._setItemEnabled):
        Only apply a title to the element when it is enabled.

2017-01-18  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: split console should be allowed for Network and Timeline tabs when Inspector is not docked
        https://bugs.webkit.org/show_bug.cgi?id=167075

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.dockedConfigurationSupportsSplitContentBrowser):
        Helper function to determine if the current docked state supports having the content view
        and split console at the same time.  Currently set to be true if not docked bottom.

        * UserInterface/Views/ClusterContentView.js:
        (WebInspector.ClusterContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/NetworkTabContentView.js:
        (WebInspector.NetworkTabContentView.prototype.get supportsSplitContentBrowser):
        * UserInterface/Views/TimelineTabContentView.js:
        (WebInspector.TimelineTabContentView.prototype.get supportsSplitContentBrowser): Deleted.
        Update supportsSplitContentBrowser functions to only be true/false based on the return value
        of WebInspector.dockedConfigurationSupportsSplitContentBrowser.

2017-01-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: console.table only works for the first 5 properties
        https://bugs.webkit.org/show_bug.cgi?id=167175

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ConsoleMessageView.js:
        (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
        Allow a max of 15 columns instead of 10.

2017-01-16  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: add "Persist Logs on Navigation" to settings screen
        https://bugs.webkit.org/show_bug.cgi?id=166992

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Setting.js:
        * UserInterface/Controllers/LogManager.js:
        (WebInspector.LogManager):
        (WebInspector.LogManager.prototype._delayedMessagesCleared):
        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype._sessionStarted):
        (WebInspector.LogContentView.prototype._handleContextMenuEvent):
        (WebInspector.LogContentView.prototype._toggleClearLogOnNavigateSetting):
        Move setting and UI toggle for "Keep Log on Navigation" to the global settings dictionary
        and content view.

        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.initialLayout):
        (WebInspector.SettingsTabContentView):
        Add checkbox for new setting and spacer between text settings and log settings.

2017-01-16  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: add UI Zoom level to Settings screen
        https://bugs.webkit.org/show_bug.cgi?id=166991

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        (WebInspector._dockedResizerMouseDown):
        (WebInspector._increaseZoom):
        (WebInspector._decreaseZoom):
        (WebInspector._resetZoom):
        (WebInspector.getZoomFactor): Renamed from _zoomFactor.
        (WebInspector.setZoomFactor): Renamed from _setZoomFactor.
        * UserInterface/Base/Setting.js:
        (WebInspector.settings):
        Moved zoomFactor setting to global dictionary.

        * UserInterface/Views/SettingsTabContentView.css:
        (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
        * UserInterface/Views/SettingsTabContentView.js:
        (WebInspector.SettingsTabContentView.prototype.initialLayout):
        Add UI input for changing zoomFactor.

2017-01-14  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Cmd-, should open Settings tab
        https://bugs.webkit.org/show_bug.cgi?id=167028

        Reviewed by Timothy Hatcher.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        (WebInspector._showSettingsTab): Added.

2017-01-13  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Settings tab is restored when reopening inspector
        https://bugs.webkit.org/show_bug.cgi?id=167025

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        (WebInspector._tabBrowserSelectedTabContentViewDidChange):
        Only save the selectedTabIndex if the current tab should be saved and reloaded upon opening
        the WebInspector window.

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

        Web Inspector: Resources disappear from the network tab when iframe gets removed from DOM
        https://bugs.webkit.org/show_bug.cgi?id=166776
        <rdar://problem/29909640>

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel):
        Don't remove resource tree elements from Network tab when iframe gets detached from the DOM.

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

        Web Inspector: the 'lock' icon for non-editable rules in the Style Rules sidebar lacks a tooltip
        https://bugs.webkit.org/show_bug.cgi?id=166909
        <rdar://problem/29959406>

        Reviewed by Matt Baker.

        Convert the lock icon from a pseudo-element to an 'img' element and add a title attribute.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/CSSStyleDeclarationSection.css:
        (.style-declaration-section.locked > .header > .locked-icon):
        (.style-declaration-section.locked > .header::before): Deleted.
        * UserInterface/Views/CSSStyleDeclarationSection.js:
        (WebInspector.CSSStyleDeclarationSection):

2017-01-12  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r209711): Web Inspector: in Elements Tab, selecting a deeply nested DOM element causes navigation bar buttons to be pushed off the leading edge
        https://bugs.webkit.org/show_bug.cgi?id=166898
        <rdar://problem/29951737>

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/HierarchicalPathComponent.js:
        (WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
        The following operations do NOT produce the same result:

            classList.toogle(aString, undefined)
            classList.toogle(aString, false)

        The former is an equivalent of classList.toogle(aString), e.g. it set a class if it wasn't set before.

2017-01-12  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: cubic-bezier editor behaves poorly for invalid inputs in component fields
        https://bugs.webkit.org/show_bug.cgi?id=166928

        Reviewed by Brian Burg.

        * UserInterface/Views/BezierEditor.css:
        (.bezier-editor):
        (.bezier-editor > .number-input-container > input):

        * UserInterface/Views/BezierEditor.js:
        (WebInspector.BezierEditor.createBezierInput):
        (WebInspector.BezierEditor):
        Add type, step, min, and max to the bezier component inputs to better control user input.

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

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

        Reviewed by Timothy Hatcher.

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

2017-01-11  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: spring function editor has unusual layout, should have left-aligned labels and slider tracks
        https://bugs.webkit.org/show_bug.cgi?id=166933

        Reviewed by Brian Burg.

        * UserInterface/Views/Main.css:
        (input[type=range]::-webkit-slider-thumb):
        (input[type=range]::-webkit-slider-runnable-track):
        (input[type=range]::-webkit-slider-runnable-track::before): Deleted.
        Fix slider styles.

        * UserInterface/Views/SpringEditor.css:
        (.spring-editor):
        (.spring-editor > .spring-preview):
        (.spring-editor > .spring-timing):
        (.spring-editor > .number-input-container > .number-input-row > .number-input-row-title):
        (.spring-editor > .number-input-container > .number-input-row > input):
        (.spring-editor > .number-input-container > .number-input-row > input::-webkit-inner-spin-button):
        (.spring-editor > .number-input-container > .number-input-row > input[type="range"]):
        Decrease spacing and left-align text.

        * UserInterface/Views/SpringEditor.js:
        (WebInspector.SpringEditor.prototype._handleNumberInputKeydown):
        (WebInspector.SpringEditor.prototype._changeSpringForInput):
        Only update editor values when the new value of any input has changed.  This allows users to
        enter decimal values ("." was being stripped by `parseFloat`).

2017-01-11  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: color, gradient, cubic-bezier, spring editors should be dismissable using ESC
        https://bugs.webkit.org/show_bug.cgi?id=166934

        Reviewed by Brian Burg.

        * UserInterface/Views/Popover.js:
        (WebInspector.Popover):
        (WebInspector.Popover.prototype.dismiss):
        (WebInspector.Popover.prototype.handleEvent):
        (WebInspector.Popover.prototype._addListenersIfNeeded):
        Adds a keydown listener while visible for the Escape key that dismisses the popover.

        * UserInterface/Views/QuickConsole.js:
        (WebInspector.QuickConsole.prototype.set keyboardShortcutDisabled):
        Expose the ability to disable the global keyboard shortcut.  This allows the Popover to have
        its own Escape keyboard shortcut to take precedence.

2017-01-11  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: fix UIString for Print Styles button
        https://bugs.webkit.org/show_bug.cgi?id=166892

        Reviewed by Brian Burg.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        Changed UIString to better match documentation.

2017-01-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r210260.
        https://bugs.webkit.org/show_bug.cgi?id=166860

        new colorpicker UI doesn't seem to work in trunk,
        investigating offline (Requested by brrian on #webkit).

        Reverted changeset:

        "Web Inspector: color picker should feature an editable CSS
        value"
        https://bugs.webkit.org/show_bug.cgi?id=124356
        http://trac.webkit.org/changeset/210260

2017-01-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r210110.
        https://bugs.webkit.org/show_bug.cgi?id=166783

        Introduced a regression commenting out individual properties
        (Requested by JoePeck on #webkit).

        Reverted changeset:

        "Web Inspector: Styles sidebar: Uncommenting CSS rules of
        pseudo-elements doesn't work"
        https://bugs.webkit.org/show_bug.cgi?id=165831
        http://trac.webkit.org/changeset/210110

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

        Web Inspector: Remove unused delegate from VisualStyleSelectorSection
        https://bugs.webkit.org/show_bug.cgi?id=166744

        Reviewed by Alex Christensen.

        * UserInterface/Views/VisualStyleDetailsPanel.js:
        (WebInspector.VisualStyleDetailsPanel.prototype.initialLayout):
        * UserInterface/Views/VisualStyleSelectorSection.js:
        (WebInspector.VisualStyleSelectorSection):

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

        Web Inspector: Test.html should support globals reportInternalError, reportUnhandledRejection, reportUncaughtException
        https://bugs.webkit.org/show_bug.cgi?id=161358
        <rdar://problem/28066446>

        Reviewed by Joseph Pecoraro.

        We have a hodgepodge of redundant code that reports uncaught exceptions in the inspector page.
        There is better handling of uncaught exceptions in the inspected page, such as including stack traces.

        This patch consolidates a lot of this code and makes it possible to report
        unhandled promise rejections, top-level uncaught exceptions, and exceptions
        caught in a try-catch block. The formatting and sanitization code for all of
        these things is shared and consistent. Finally, some tests have been added to
        catch regressions in unhandled rejection/uncaught exception reporting.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness): Explicitly set initial flag state here so it's easy to find all flags.

        (FrontendTestHarness.prototype.redirectConsoleToTestOutput):
        Extract this code to sanitize stack frames and put it in TestHarness. It is used
        by other methods that need to print stack frames.

        (FrontendTestHarness.prototype.reportUnhandledRejection):
        (FrontendTestHarness.prototype.reportUncaughtException):
        Added. Sanitize stack trace data so it is deterministic. Log the message to the
        original window.console but don't exit early. Sometimes the test page is not
        fully loaded if we throw an exception quite early in the test() method, and there's
        no harm in not early returning. If we do early return in this case, then a test that
        uses reportUncaughtException on purpose may not complete because the call to completeTest()
        would be skipped by returning early.

        (FrontendTestHarness.prototype.reportUncaughtExceptionFromEvent):
        Renamed from reportUncaughtException since the signature of that method suggests
        it should have a single exception argument rather than lots of data arguments.

        * UserInterface/Test/Test.js: Add globals.

        * UserInterface/Test/TestHarness.js:
        (TestHarness): Document class flags.
        (TestHarness.sanitizeURL):
        (TestHarness.sanitizeStackFrame):
        (TestHarness.prototype.sanitizeStack):
        Extract this code from other parts of the test harness. Make sanitizeStack
        an instance method so that there is only one place that needs to check the
        'suppressStackTraces' flag.

        * UserInterface/Test/TestSuite.js:
        (TestSuite.prototype.logThrownObject):
        (TestSuite):
        (AsyncTestSuite.prototype.runTestCases):
        (AsyncTestSuite):
        (SyncTestSuite.prototype.runTestCases):
        (SyncTestSuite):
        (TestSuite.messageFromThrownObject): Deleted.
        Inline some helpers with only one use-site and consolidate redundant code
        for adding an exception and message to the test results.

2017-01-04  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: application cache details not shown in Storage Tab
        https://bugs.webkit.org/show_bug.cgi?id=166699
        <rdar://problem/29871716>

        Reviewed by Brian Burg.

        Fix a ternary operator precedence. The following expression throws an exception:

            true || false ? i.dont.exist : false

        * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
        (WebInspector.ApplicationCacheFrameTreeElement.prototype.updateTitles):

2017-01-03  Brian Burg  <bburg@apple.com>

        Web Inspector: WrappedPromise constructor should behave like the Promise constructor
        https://bugs.webkit.org/show_bug.cgi?id=166523

        Reviewed by Joseph Pecoraro.

        * UserInterface/Models/WrappedPromise.js:
        (WebInspector.WrappedPromise):
        - Return the result of 'work' from the inner promise
        so WrappedPromise.promise can be chained.
        - Provide shim resolve, reject callbacks as parameters.

        (WebInspector.WrappedPromise.prototype.get settled): Added.
        Tells whether we already resolved or rejected the promise.

        (WebInspector.WrappedPromise.prototype.resolve):
        (WebInspector.WrappedPromise.prototype.reject):
        Throw an error if already settled and update the flag.

2017-01-03  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: color picker should feature an editable CSS value
        https://bugs.webkit.org/show_bug.cgi?id=124356

        Reviewed by Brian Burg.

        * UserInterface/Views/ColorPicker.css:
        (.color-picker):
        (.color-picker > .color-inputs):
        (.color-picker > .color-inputs > div):
        (.color-picker > .color-inputs > div[hidden]):
        (.color-picker > .color-inputs input):

        * UserInterface/Views/ColorPicker.js:
        (WebInspector.ColorPicker.createColorInput):
        (WebInspector.ColorPicker):
        (WebInspector.ColorPicker.prototype.set color):
        (WebInspector.ColorPicker.prototype.sliderValueDidChange):
        (WebInspector.ColorPicker.prototype._updateColor):
        (WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
        (WebInspector.ColorPicker.prototype._showColorComponentInputs):
        (WebInspector.ColorPicker.prototype._handleColorInputInput):
        Add an input element (with a label for the component name and its units) for each component
        as part of the current color format (e.g. R, G, B, A).  If any of these inputs are changed
        then the color is also changed and the "ColorChanged" event is fired.

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

        Web Inspector: "Invalid Characters" setting does the opposite of the checkbox
        https://bugs.webkit.org/show_bug.cgi?id=166664

        Reviewed by Brian Burg.

        * UserInterface/Views/CodeMirrorOverrides.css:
        (.CodeMirror .cm-invalidchar):
        (.show-invalid-characters .CodeMirror .cm-invalidchar):
        Hide invalid characters by default, and show them with the show class.

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

        Web Inspector: Fix Content Flow Container Regions Computed Style section
        https://bugs.webkit.org/show_bug.cgi?id=166294

        Reviewed by Brian Burg.

        * UserInterface/Controllers/DOMTreeManager.js:
        (WebInspector.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes):
        (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved):
        (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable):
        (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo):
        (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getComputedProperty): Deleted.
        (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getContentFlowName): Deleted.
        Update this to use Array.from() to convert the NodeList to an Array, and then
        use the already available RemoteObject's size property instead of getting the
        "length" property from the Array.

2017-01-03  Brian Burg  <bburg@apple.com>

        Web Inspector: opening Test.html in a normal browser window doesn't log errors to console
        https://bugs.webkit.org/show_bug.cgi?id=166570

        Reviewed by Joseph Pecoraro.

        Early syntax errors in the test harness should be logged to the page console since they are easier to
        debug in a normal browser using Web Inspector. But, the checks to revert to normal console don't work.

        * UserInterface/Test/FrontendTestHarness.js:
        (FrontendTestHarness.prototype.reportUncaughtException):
        Add a helper to encapsulate the meaning of checking this._shouldResendResults.
        This flag is always true until the test page injects its initializers into the
        inspector page, which will never happen when we view Test.html outside of the test harness.

2016-12-22  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r210069.
        https://bugs.webkit.org/show_bug.cgi?id=166439

        This patch makes all properties in Computed Styles strike-
        through when switching from the Rules panel. (Requested by NVI
        on #webkit).

        Reverted changeset:

        "Web Inspector: Uncommenting CSS properties doesn't work for
        inline styles"
        https://bugs.webkit.org/show_bug.cgi?id=166297
        http://trac.webkit.org/changeset/210069

2016-12-22  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Styles sidebar: Uncommenting CSS rules of pseudo-elements doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=165831
        <rdar://problem/29652688>

        Reviewed by Matt Baker.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor.prototype.uncommentAllProperties):
        Call _resetContent() when toggling all properties to ensure properties have text markers.

        (WebInspector.CSSStyleDeclarationTextEditor.prototype._propertyCommentCheckboxChanged):
        (WebInspector.CSSStyleDeclarationTextEditor.prototype._uncommentProperty): Added.
        This method is the opposite of _commentProperty. Introduce it to minimize code duplication.

2016-12-21  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Uncommenting CSS properties doesn't work for inline styles
        https://bugs.webkit.org/show_bug.cgi?id=166297

        Reviewed by Brian Burg.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        Update checkboxes for inline styles, too.

2016-12-20  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Window resize causes TimelineOverview graph elements to be repositioned
        https://bugs.webkit.org/show_bug.cgi?id=160207
        <rdar://problem/27553228>

        Reviewed by Brian Burg.

        TimelineRuler does not always update its divider positions when the start
        time changes while the end time remains the same. The check that determines
        whether the first or last divider positions have changed before doing a
        layout uses the ruler end time instead of calculating the last divider's
        position, and would falsely determine no change was needed.

        * UserInterface/Views/TimelineRuler.js:
        (WebInspector.TimelineRuler.prototype.set startTime):
        (WebInspector.TimelineRuler.prototype.set secondsPerPixel):
        Clear cached divider data on zoom or scroll, forcing dividers to be recalculated.
        (WebInspector.TimelineRuler.prototype.layout):
        Calculate accurate divider count and last divider time.

2016-12-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        Update keyword completions in the inspector for the new scroll snapping CSS properties
        https://bugs.webkit.org/show_bug.cgi?id=166235

        Reviewed by Joseph Pecoraro.

        The CSS keyword completions for the scroll snapping properties need to be updated for the latest version of the spec.

        * UserInterface/Models/CSSKeywordCompletions.js:

2016-12-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Console could be made useful for very simple await expressions
        https://bugs.webkit.org/show_bug.cgi?id=165681
        <rdar://problem/29755339>

        Reviewed by Brian Burg.

        Normally await expressions are only allowed inside of async functions.
        They make dealing with async operations easy, but can't be used directly
        in Web Inspector's console without making your own async function wrapper.

        This change allows simple await expressions to be run in the console.
        The supported syntaxes are (simple expression with optional assignment):

            await <expr>
            x = await <expr>
            let x = await <expr>

        Web Inspector's console will automatically wrap this in an async
        function and report the resulting value or exception. For instance
        in the last example above:

            let x;
            (async function() {
                try {
                    x = await <expr>;
                    console.info("%o", x);
                } catch (e) {
                    console.error(e);
                }
            })();
            undefined

        This way users can get the convenience of await in the Console.
        This also gives users a nice way of extracting a value out of
        a Promise without writing their own handlers.

        * UserInterface/Controllers/RuntimeManager.js:
        (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
        (WebInspector.RuntimeManager.prototype._tryApplyAwaitConvenience):
        Wrap simple await expressions into a function that will log the result.

2016-12-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Update CodeMirror to support async/await keyword and other ES2017 features
        https://bugs.webkit.org/show_bug.cgi?id=165677

        Rubber-stamped by Brian Burg.

        Update CodeMirror from version 5.5.1 to 5.21.1. Highlights include:

          - Syntax highlighting for ES2017 features (async/await)
          - Syntax highlighting improvements for some ES6 features (new.target)
          - Syntax highlighting for CSS4 #rrggbbaa and #rgba colors

        As well as a number of smaller bug fixes.

        Had to add a few semicolons to codemirror.js so that our minifier
        didn't choke in a few places due to ASI behavior.

        * Scripts/update-codemirror-resources.rb:
        * UserInterface/External/CodeMirror/LICENSE:
        * UserInterface/External/CodeMirror/clojure.js:
        * UserInterface/External/CodeMirror/closebrackets.js:
        * UserInterface/External/CodeMirror/codemirror.css:
        * UserInterface/External/CodeMirror/codemirror.js:
        * UserInterface/External/CodeMirror/coffeescript.js:
        * UserInterface/External/CodeMirror/comment.js:
        * UserInterface/External/CodeMirror/css.js:
        * UserInterface/External/CodeMirror/htmlmixed.js:
        * UserInterface/External/CodeMirror/javascript.js:
        * UserInterface/External/CodeMirror/livescript.js:
        * UserInterface/External/CodeMirror/matchbrackets.js:
        * UserInterface/External/CodeMirror/overlay.js:
        * UserInterface/External/CodeMirror/placeholder.js:
        * UserInterface/External/CodeMirror/runmode.js:
        * UserInterface/External/CodeMirror/sql.js:
        * UserInterface/External/CodeMirror/sublime.js:
        * UserInterface/External/CodeMirror/xml.js:

2016-12-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Address some assertions and uncaught exceptions seen using Inspector
        https://bugs.webkit.org/show_bug.cgi?id=166048

        Reviewed by Matt Baker.

        * UserInterface/Controllers/CodeMirrorEditingController.js:
        (WebInspector.CodeMirrorEditingController.prototype.presentHoverMenu):
        (WebInspector.CodeMirrorEditingController.prototype.dismissHoverMenu):
        classList throws an exception when given an empty string. Avoid those cases.

        * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
        (WebInspector.CodeMirrorTokenTrackingController.prototype._startTracking):
        (WebInspector.CodeMirrorTokenTrackingController.prototype._stopTracking):
        Seen this assert frequently for a while, existing code handles it gracefully.

        * UserInterface/Workers/Formatter/EsprimaFormatter.js:
        (EsprimaFormatter.prototype._handleTokenAtNode):
        We correctly handle these tokens but they were not in the list of expected tokens.

2016-12-16  Joseph Pecoraro  <pecoraro@apple.com>

        JSContext Inspector: Avoid some possible exceptions inspecting a JSContext
        https://bugs.webkit.org/show_bug.cgi?id=165986
        <rdar://problem/29551379>

        Reviewed by Matt Baker.

        * UserInterface/Base/Main.js:
        There will not be a main frame if we are debugging a JSContext.
        In those cases do not change the title.

        * UserInterface/Views/ResourceSidebarPanel.js:
        (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
        There may not be a parent folder in JavaScript inspection. In that case
        ScriptTreeElements are added to the Top Level, not folders.

2016-12-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: REGRESSION (r209882): Opening find banner in editor causes UI to hang
        https://bugs.webkit.org/show_bug.cgi?id=165967

        Reviewed by Timothy Hatcher.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype._findBannerDidShow):
        Showing the find banner should cause search results to be refreshed only
        if it contains query text.

2016-12-16  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Modernize find banner UI
        https://bugs.webkit.org/show_bug.cgi?id=165939

        Reviewed by Timothy Hatcher.

        The find banner should have a modern appearance, matching Xcode.

        * UserInterface/Views/FindBanner.css:
        (.find-banner > input[type="search"]):
        (.find-banner > button):
        Use standard border colors.
        (.find-banner > button:disabled > .glyph):
        Disabled previous / next glyphs should be lighter.
        (.find-banner > button:active:not(:disabled)):
        Update depressed button style: flat colors, no text color change.
        (.find-banner > button.segmented):
        (.find-banner > button.segmented.left):
        (.find-banner > button:not(:active).segmented.right:before):
        (.find-banner > button.segmented.left:active + button.segmented.right,):
        (.find-banner > button.segmented.left:active + button.segmented.right:before):
        (.find-banner > button.segmented.right):
        (.find-banner.console-find-banner > input[type="search"]):
        (.find-banner.console-find-banner > :matches(input[type="search"], button)):
        (.find-banner > button:disabled): Deleted.
        (.find-banner > button.segmented:active): Deleted.
        Overlapping button borders are no longer an issue.

        * UserInterface/Views/FindBanner.js:
        (WebInspector.FindBanner):
        Insert previous / next buttons after the input field in the DOM.
        (WebInspector.FindBanner.prototype.get delegate):
        (WebInspector.FindBanner.prototype.set delegate):
        (WebInspector.FindBanner.prototype.get inputField):
        (WebInspector.FindBanner.prototype.get searchQuery):
        (WebInspector.FindBanner.prototype.set searchQuery):
        (WebInspector.FindBanner.prototype.get numberOfResults):
        Inline simple getters and setters.

        * UserInterface/Views/Variables.css:
        (:root):
        Add button colors.

2016-12-15  Matt Baker  <mattbaker@apple.com>

        Web Inspector: console search bar jumps, behaves poorly at narrow widths
        https://bugs.webkit.org/show_bug.cgi?id=164047
        <rdar://problem/29055582>

        Reviewed by Timothy Hatcher.

        At narrow widths the find banner behaves poorly in the split console
        toolbar. It should work like the main content browser, appearing below
        the toolbar when Command-F is pressed and either the split console or
        quick console prompt has the focus.

        * UserInterface/Base/Main.js:
        (WebInspector.contentLoaded):
        Enable split content browser find banner.

        * UserInterface/Views/ContentBrowser.js:
        (WebInspector.ContentBrowser.prototype.showFindBanner):
        Check for custom find banner support at runtime.
        (WebInspector.ContentBrowser.prototype._findBannerDidShow):
        (WebInspector.ContentBrowser.prototype._findBannerDidHide):
        Refresh search results when banner is shown/hidden, instead of relying
        on toggling the "showing-find-banner" class name for everything.

        (WebInspector.ContentBrowser.prototype.handleFindEvent): Deleted.
        Renamed `showFindBanner`.

        * UserInterface/Views/ContentView.js:
        (WebInspector.ContentView.prototype.get supportsCustomFindBanner):
        (WebInspector.ContentView.prototype.showCustomFindBanner):
        Custom find banner support (used by LogContentView).

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView):
        (WebInspector.LogContentView.prototype.get supportsSearch):
        (WebInspector.LogContentView.prototype.get numberOfSearchResults):
        (WebInspector.LogContentView.prototype.get hasPerformedSearch):
        Cleanup.
        (WebInspector.LogContentView.prototype.get supportsCustomFindBanner):
        Use toolbar item find banner when showing Console tab.
        (WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
        (WebInspector.LogContentView.prototype.findBannerRevealNextResult):
        (WebInspector.LogContentView.prototype._isMessageVisible):
        (WebInspector.LogContentView.prototype._visibleMessageElements):
        (WebInspector.LogContentView.prototype._logCleared):
        (WebInspector.LogContentView.prototype._filterMessageElements):
        (WebInspector.LogContentView.prototype.findBannerPerformSearch):
        (WebInspector.LogContentView.prototype.findBannerSearchCleared):
        (WebInspector.LogContentView.prototype.performSearch):
        Support both the standard and custom (toolbar item) find banners.
        (WebInspector.LogContentView.prototype.searchCleared):
        Refresh search results.
        (WebInspector.LogContentView.prototype._highlightRanges):
        Correct spelling: _selectedSearchMathIsValid -> _selectedSearchMatchIsValid.
        (WebInspector.LogContentView.prototype.get searchInProgress): Deleted.
        Override ContentView.prototype.hasPerformedSearch instead.
        (WebInspector.LogContentView.prototype.handleFindEvent): Deleted.
        Replaced by `showCustomFindBanner`.
        (WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Deleted.
        Absorbed by findBannerRevealPreviousResult.
        (WebInspector.LogContentView.prototype.highlightNextSearchMatch): Deleted.
        Absorbed by findBannerRevealNextResult.
        (WebInspector.LogContentView.prototype._performSearch): Deleted.
        Override ContentView.prototype.performSearch instead.

        * UserInterface/Views/Main.css:
        (#split-content-browser > .navigation-bar :matches(.find-banner, .find-banner + .divider)):
        Hide the toolbar banner and divider.

2016-12-14  Ryosuke Niwa  <rniwa@webkit.org>

        Web Inspector: Jumping to the definition of a custom elements is broken
        https://bugs.webkit.org/show_bug.cgi?id=165890

        Reviewed by Joseph Pecoraro.

        Fix the regression from https://trac.webkit.org/changeset/208304.

        * UserInterface/Views/DOMTreeElement.js:
        (WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Use the main target
        since a custom element definition can never come from a worker.

2016-12-14  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Zooming in on the Timeline should always zoom right where the cursor is
        https://bugs.webkit.org/show_bug.cgi?id=151118
        <rdar://problem/23487912>

        Reviewed by Timothy Hatcher.

        Use correct left edge for timeline overview graph elements.

        * UserInterface/Views/TimelineOverview.js:
        (WebInspector.TimelineOverview.prototype._handleWheelEvent):
        (WebInspector.TimelineOverview._handleGestureStart):
        (WebInspector.TimelineOverview.prototype._handleGestureChange):

2016-12-12  Nikita Vasilyev  <nvasilyev@apple.com>

        [GTK] Web Inspector: Add NavigationItemCodeCoverage.svg icon
        https://bugs.webkit.org/show_bug.cgi?id=165698

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/gtk/NavigationItemCodeCoverage.svg: Added.
        Match in style the existing NavigationItemTypes.svg icon.

2016-12-12  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Cleanup HierarchicalPathComponent
        https://bugs.webkit.org/show_bug.cgi?id=165745

        Reviewed by Brian Burg.

        Prefer toggle for style class names, remove single use CSS class name
        constants, and back all properties by the model not the DOM.

        * UserInterface/Views/HierarchicalPathComponent.js:
        (WebInspector.HierarchicalPathComponent):
        (WebInspector.HierarchicalPathComponent.prototype.get element):
        (WebInspector.HierarchicalPathComponent.prototype.get representedObject):
        (WebInspector.HierarchicalPathComponent.prototype.get minimumWidth):
        (WebInspector.HierarchicalPathComponent.prototype.get forcedWidth):
        (WebInspector.HierarchicalPathComponent.prototype.set forcedWidth):
        (WebInspector.HierarchicalPathComponent.prototype.get hidden):
        (WebInspector.HierarchicalPathComponent.prototype.set hidden):
        (WebInspector.HierarchicalPathComponent.prototype.get collapsed):
        (WebInspector.HierarchicalPathComponent.prototype.set collapsed):
        (WebInspector.HierarchicalPathComponent.prototype.get selectorArrows):
        (WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
        (WebInspector.HierarchicalPathComponent.prototype.get previousSibling):
        (WebInspector.HierarchicalPathComponent.prototype.set previousSibling):
        (WebInspector.HierarchicalPathComponent.prototype.get nextSibling):
        (WebInspector.HierarchicalPathComponent.prototype.set nextSibling):
        (WebInspector.HierarchicalPathComponent.prototype._updateElementTitleAndText):
        (WebInspector.HierarchicalPathComponent.prototype._updateSelectElement.createOption):
        (WebInspector.HierarchicalPathComponent.prototype._updateSelectElement):

2016-12-12  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Allow keyboard navigation in Heap Snapshot data grids
        https://bugs.webkit.org/show_bug.cgi?id=165752

        Reviewed by Brian Burg.

        * UserInterface/Views/DOMTreeOutline.css:
        (.tree-outline.dom:focus li.selected > span::after):
        Use new color variable.

        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get selectable): Deleted.
        Should be selectable.

        * UserInterface/Views/HeapSnapshotInstancesContentView.css:
        (.heap-snapshot > .data-grid:focus tr.selected > td .sub-retained):
        (.heap-snapshot > .data-grid:focus tr.selected .object-id,):
        (.heap-snapshot > .data-grid:focus tr.selected .formatted-string,):
        (.heap-snapshot > .data-grid:focus tr.selected td .location):
        Selected row text should just be white, except for values that are usually
        gray (object ID, object size, and sub-retained size values). These should
        be styled like the "= $0" marker in the DOM tree outline.

        (.heap-snapshot > .data-grid:matches(:focus, .force-focus) tr.selected td .location): Deleted.
        Removed forced-focus reference. Only used by TreeOutlineDataGridSynchronizer.

        * UserInterface/Views/Variables.css:
        (:root):
        Added --selected-secondary-text-color.

2016-12-12  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Breakpoint Log action should support template literals
        https://bugs.webkit.org/show_bug.cgi?id=165116
        <rdar://problem/29464765>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        New string "${expr} = expression" for breakpoint popover.

        * UserInterface/Controllers/BreakpointLogMessageLexer.js: Added.
        To support template literal placeholders in message text, it is necessary
        to distinguish plain text parts of the message from placeholders, since
        plain text must be escaped.

        (WebInspector.BreakpointLogMessageLexer):
        (WebInspector.BreakpointLogMessageLexer.prototype.tokenize):
        (WebInspector.BreakpointLogMessageLexer.prototype.reset):
        (WebInspector.BreakpointLogMessageLexer.prototype._finishPlainText):
        (WebInspector.BreakpointLogMessageLexer.prototype._finishExpression):
        (WebInspector.BreakpointLogMessageLexer.prototype._appendToken):
        (WebInspector.BreakpointLogMessageLexer.prototype._consume):
        (WebInspector.BreakpointLogMessageLexer.prototype._peek):
        (WebInspector.BreakpointLogMessageLexer.prototype._expression):
        (WebInspector.BreakpointLogMessageLexer.prototype._plainText):
        (WebInspector.BreakpointLogMessageLexer.prototype._possiblePlaceholder):
        (WebInspector.BreakpointLogMessageLexer.prototype._regExpOrStringLiteral):

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype._debuggerBreakpointOptions):
        Build breakpoint "options" object for DebuggerAgent. If a Log action
        contains template literal placeholders it is changed to an Evaluate
        action, which calls console.log with a template literal.

        (WebInspector.DebuggerManager.prototype._setBreakpoint):
        Use converted breakpoint options.

        * UserInterface/Main.html:
        * UserInterface/Test.html:
        New file.

        * UserInterface/Views/BreakpointActionView.css:
        (.breakpoint-action-block-body > .description):
        Styles for breakpoint Log action hint text.

        * UserInterface/Views/BreakpointActionView.js:
        (WebInspector.BreakpointActionView.prototype._updateBody):
        Add Log action hint text element.

2016-12-11  Matt Baker  <mattbaker@apple.com>

        Web Inspector: ThreadTreeElement should have a "Resume" status button when paused
        https://bugs.webkit.org/show_bug.cgi?id=165581

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/Resume.svg:
        Fill/stroke should be unspecified so that both can be styled in CSS.

        * UserInterface/Views/DebuggerDashboardView.css:
        (.dashboard.debugger .navigation-bar .item.debugger-dashboard-pause.activated):
        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume):
        (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume.activated):
        Recreate original style which relied on 'fill="none"' being specified in the SVG.

        * UserInterface/Views/ThreadTreeElement.css:
        (.tree-outline > .item.thread .icon):
        (.tree-outline > .item.thread .status-button.resume):
        (.tree-outline > .item.thread .status-button.resume:active):
        (.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume):
        (.tree-outline > .item.thread.selected .status-button.resume,):
        (.details-section.call-stack .thread .icon): Deleted.
        Status button styles. Colors match those of the goto-arrow button.

        * UserInterface/Views/ThreadTreeElement.js:
        (WebInspector.ThreadTreeElement.prototype.refresh):
        Update status icon.
        (WebInspector.ThreadTreeElement.prototype.oncontextmenu):
        (WebInspector.ThreadTreeElement.prototype._updateStatus):
        Add/remove status button based on paused state.
        Stop propagation of "mousedown" events on the status button, to
        prevent button press from selecting the tree element.
        (WebInspector.ThreadTreeElement):

2016-12-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Move MainTarget and WorkerTarget to their own files
        https://bugs.webkit.org/show_bug.cgi?id=165701

        Reviewed by Brian Burg.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.scriptDidParse):
        * UserInterface/Main.html:
        * UserInterface/Protocol/MainTarget.js: Added.
        (WebInspector.MainTarget):
        (WebInspector.MainTarget.prototype.get displayName):
        (WebInspector.MainTarget.prototype.get mainResource):
        * UserInterface/Protocol/Target.js:
        (WebInspector.Target):
        (WebInspector.MainTarget): Deleted.
        (WebInspector.MainTarget.prototype.get displayName): Deleted.
        (WebInspector.MainTarget.prototype.get mainResource): Deleted.
        (WebInspector.MainTarget.prototype.initialize): Deleted.
        (WebInspector.WorkerTarget): Deleted.
        (WebInspector.WorkerTarget.prototype.get displayName): Deleted.
        (WebInspector.WorkerTarget.prototype.initialize): Deleted.
        * UserInterface/Protocol/WorkerTarget.js: Added.
        (WebInspector.WorkerTarget):
        (WebInspector.WorkerTarget.prototype.get displayName):
        * UserInterface/Test.html:

2016-12-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Frontend should not be resetting TypeProfiler state when switching between ContentViews
        https://bugs.webkit.org/show_bug.cgi?id=165648

        Reviewed by Brian Burg.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        Update all backends when the state changes.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
        (WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
        Moved this code to when the global Setting (which affects all editors) changes.

2016-12-09  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Some resources fetched via Fetch API do not have data
        https://bugs.webkit.org/show_bug.cgi?id=165230
        <rdar://problem/29449220>

        Reviewed by Alex Christensen.

        * Localizations/en.lproj/localizedStrings.js:
        New "Fetch" and "Fetches" localized strings.

        * UserInterface/Models/Resource.js:
        (WebInspector.Resource.displayNameForType):
        * UserInterface/Models/ResourceCollection.js:
        (WebInspector.ResourceCollection.verifierForType):
        * UserInterface/Views/CollectionContentView.js:
        (WebInspector.CollectionContentView):
        * UserInterface/Views/ResourceClusterContentView.js:
        (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
        * UserInterface/Views/ResourceTreeElement.js:
        (WebInspector.ResourceTreeElement.compareResourceTreeElements):
        New ResourceType.Fetch. Behave like XHR in most places.

2016-12-08  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Unable to delete breakpoint from worker script
        https://bugs.webkit.org/show_bug.cgi?id=165578

        Reviewed by Matt Baker.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype._removeBreakpoint):
        Match setting breakpoints. If this is a "URL breakpoint", affect
        all targets. If this is a "Script breakpoint", affect just the
        single target containing that Script.

2016-12-07  Devin Rousso  <dcrousso+webkit@gmail.com>

        REGRESSION(r203912): Web Inspector: Navigation sidebar widths are not saved
        https://bugs.webkit.org/show_bug.cgi?id=165496

        Reviewed by Matt Baker.

        * UserInterface/Views/TabBrowser.js:
        (WebInspector.TabBrowser):
        (WebInspector.TabBrowser.prototype._sidebarWidthDidChange):
        (WebInspector.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
        (WebInspector.TabBrowser.prototype._sidebarWidthDidChange): Renamed from _detailsSidebarWidthDidChange.
        Add event listener for when the navigation sidebar's width is changed.

        * UserInterface/Views/TabContentView.js:
        (WebInspector.TabContentView):
        (WebInspector.TabContentView.prototype.get navigationSidebarPanel):
        (WebInspector.TabContentView.prototype.get navigationSidebarCollapsedSetting):
        (WebInspector.TabContentView.prototype.get navigationSidebarWidthSetting):
        (WebInspector.TabContentView.prototype.get detailsSidebarPanels):
        (WebInspector.TabContentView.prototype.get detailsSidebarCollapsedSetting):
        (WebInspector.TabContentView.prototype.get detailsSidebarSelectedPanelSetting):
        (WebInspector.TabContentView.prototype.get detailsSidebarWidthSetting):
        Add WebInspector.Setting object for the navigation sidebar's width.

2016-12-07  Nikita Vasilyev  <nvasilyev@apple.com>

        Web Inspector: Control Flow Profiler's event handlers aren't getting removed when ContentView closes
        https://bugs.webkit.org/show_bug.cgi?id=165556

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/ScriptContentView.js:
        (WebInspector.ScriptContentView.prototype.closed):
        * UserInterface/Views/TextResourceContentView.js:
        (WebInspector.TextResourceContentView.prototype.closed):

2016-12-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add ability to distinguish if a Script was parsed as a module
        https://bugs.webkit.org/show_bug.cgi?id=164900
        <rdar://problem/29323817>

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Script.js:
        (WebInspector.Script.prototype.get sourceType):
        New property of Scripts. SourceType is either Program or Module.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.scriptDidParse):
        * UserInterface/Protocol/DebuggerObserver.js:
        (WebInspector.DebuggerObserver.prototype.scriptParsed):
        Convert incoming module boolean into SourceType when creating new Scripts.

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree):
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        Update the generic AST for new module specific Esprima types.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor.prototype.textEditorScriptSourceType):
        * UserInterface/Views/TextEditor.js:
        (WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
        For pretty printing correctly state if this is a module or not for Esprima.

2016-12-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Update Esprima to support new features / syntax (**, async/await, trailing comma)
        https://bugs.webkit.org/show_bug.cgi?id=164830
        <rdar://problem/29293814>

        Reviewed by Timothy Hatcher.

        * UserInterface/External/Esprima/LICENSE:
        * UserInterface/External/Esprima/esprima.js:
        Updated to Esprima@7219731 (4.0.0-dev).

        * UserInterface/Models/ScriptSyntaxTree.js:
        (WebInspector.ScriptSyntaxTree.prototype._recurse):
        (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
        * UserInterface/Workers/Formatter/ESTreeWalker.js:
        (ESTreeWalker.prototype._walkChildren):
        Add new nodes (AwaitExpression).
        Add new states (async boolean property on Functions).
        Remove stale properties (defaults is no longer needed, as parameters
        with default values are now AssignmentPatterns).
        Update MetaProperty where meta/property are now Identifiers not strings.

        * UserInterface/Workers/Formatter/EsprimaFormatter.js:
        (EsprimaFormatter.prototype._handleTokenAtNode):
        Handle pretty printing of new nodes and identifiers.

        * Controllers/FrameResourceManager.js
        Address a console.assert warning for stripping assertions in Production.

2016-12-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused and mostly untested Page domain commands and events
        https://bugs.webkit.org/show_bug.cgi?id=165507

        Reviewed by Brian Burg.

        * UserInterface/Protocol/PageObserver.js:
        (WebInspector.PageObserver.prototype.javascriptDialogOpening):
        (WebInspector.PageObserver.prototype.javascriptDialogClosed):
        (WebInspector.PageObserver.prototype.scriptsEnabled):
        Keep stub in case legacy backends dispatch the event to the frontend.

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:
        Remove handleJavaScriptDialog command from legacy backends because it
        doesn't appear as if the iOS backend handled it at all.

2016-12-06  Alexey Proskuryakov  <ap@apple.com>

        Correct SDKROOT values in xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=165487
        rdar://problem/29539209

        Reviewed by Dan Bernstein.

        Fix suggested by Dan Bernstein.

        * Configurations/DebugRelease.xcconfig:

2016-12-05  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Object.shallowEqual([{}], [{}]) should return true
        https://bugs.webkit.org/show_bug.cgi?id=165397

        Reviewed by Brian Burg.

        * UserInterface/Base/Utilities.js:
        (value):
        Array.shallowEqual should compare array items using strict equivalence,
        and on failure defer to Object.shallowEqual.

2016-12-05  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove legacy styles
        https://bugs.webkit.org/show_bug.cgi?id=165389

        Reviewed by Matt Baker.

        Remove styles for platforms we don't build on anymore (Mavericks
        and Mountain Lion). There are also no "unknown-mac" styles to
        upgrade to a named platform.

        * UserInterface/Base/Platform.js:
        Add sierra and remove older unsupported platforms.

        * UserInterface/Views/Main.css:
        (body):
        (body:not(.mavericks)): Deleted.
        * UserInterface/Views/TabBar.css:
        (body.mavericks .tab-bar > .item:not(.disabled).selected): Deleted.
        * UserInterface/Views/Toolbar.css:
        (body .toolbar):
        (body.window-inactive .toolbar):
        (body.mac-platform:not(.docked) .toolbar):
        (body.mac-platform:not(.docked)):
        (body:not(.mavericks) .toolbar,): Deleted.
        (body.window-inactive:not(.mavericks) .toolbar): Deleted.
        (body.mac-platform:not(.docked, .mavericks) .toolbar): Deleted.
        (body.mac-platform:not(.docked, .mavericks)): Deleted.
        Remove mavericks specific styles.

2016-12-02  Andy Estes  <aestes@apple.com>

        [Cocoa] Adopt the PRODUCT_BUNDLE_IDENTIFIER build setting
        https://bugs.webkit.org/show_bug.cgi?id=164492

        Reviewed by Dan Bernstein.

        * Configurations/WebInspectorUIFramework.xcconfig: Set PRODUCT_BUNDLE_IDENTIFIER to
        com.apple.$(PRODUCT_NAME:rfc1034identifier).
        * Info.plist: Changed CFBundleIdentifier's value from
        com.apple.${PRODUCT_NAME:rfc1034identifier} to ${PRODUCT_BUNDLE_IDENTIFIER}.

2016-12-02  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r192344): Web Inspector: Turning off Code Coverage or Type Profiler logs an error
        https://bugs.webkit.org/show_bug.cgi?id=164804
        <rdar://problem/29278028>

        Reviewed by Matt Baker.

        BasicBlockAnnotator and TypeTokenAnnotator were instanciated for a resource in an inactive Debugger tab.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
        Don't show any content view if we are not in a selected tab.

2016-12-01  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Show async stack traces for workers
        https://bugs.webkit.org/show_bug.cgi?id=165235
        <rdar://problem/29450172>

        Reviewed by Joseph Pecoraro.

        * UserInterface/Views/CallFrameTreeElement.css:
        (.tree-outline > .children > .item.call-frame.async-boundary):
        (.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
        (.tree-outline .item.call-frame.async-boundary::before):
        (.tree-outline.single-thread .item.call-frame.async-boundary::before):
        (.tree-outline .item.call-frame.async-boundary): Deleted.
        Style changes for single/multiple-thread call stacks.
        Padding changes to account for Thread tree element.
        Make selectors more specific where needed.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger .tree-outline.single-thread > .item.thread):
        (.sidebar > .panel.navigation.debugger .tree-outline.single-thread):
        Style changes for single/multiple-thread call stacks.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        Use a single tree outline for showing a single thread or multiple threads.
        For single-threaded, hide Thread tree element and un-indent children.

        (WebInspector.DebuggerSidebarPanel.prototype._targetAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._targetRemoved):
        (WebInspector.DebuggerSidebarPanel.prototype._updateCallStackTreeOutline):
        Update tree style and whether Thread tree element is selectable.
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
        Remove support for second tree outline.

        (WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks): Deleted.
        (WebInspector.DebuggerSidebarPanel.prototype._selectActiveCallFrameTreeElement): Deleted.
        (WebInspector.DebuggerSidebarPanel.prototype._showSingleThreadCallStacks): Deleted.
        (WebInspector.DebuggerSidebarPanel.prototype._showMultipleThreadCallStacks): Deleted.
        No longer needed after unifying tree outlines.

        * UserInterface/Views/ThreadTreeElement.js:
        (WebInspector.ThreadTreeElement.prototype.refresh):
        Append call frames from the async stack trace.

2016-11-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Clicking on link in Web Inspector can cause UIProcess to crash
        https://bugs.webkit.org/show_bug.cgi?id=165157
        <rdar://problem/27896562>

        Reviewed by Brian Burg.

        By correctly disallowing slashes in the scheme Web Inspector resolves
        the correct absolute URL and doesn't end up trying to navigate to an
        incorrect file URL.

        * UserInterface/Base/URLUtilities.js:
        (parseURL):
        Disallow "/" characters in the scheme portion. (/http://example.com)
        Allow path to be optional before a fragment portion. (http://example.com#frag)

2016-11-29  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve name sorting in HeapSnapshot data grids
        https://bugs.webkit.org/show_bug.cgi?id=165170
        <rdar://problem/28784421>

        Reviewed by Matt Baker.

        When sorting the Name column, group named properties and unnamed
        properties and sort them each individually:

          - Sort named properties by their property name (property names will be unique if they exist)
          - Sort unnamed properties by their class name (guaranteed)
          - Sort any tied class names by their object id

        This makes using the Object Graph with Name sort easier to follow.
        In the ascending sort you see all the named properties first,
        followed by the unnamed (internal) properties.

        * UserInterface/Views/HeapSnapshotContentView.js:
        (WebInspector.HeapSnapshotObjectGraphContentView):
        Since this data grid column now sorts on more than just the "Class Name"
        rename it to "Name".

        * UserInterface/Views/HeapSnapshotDataGridTree.js:
        (WebInspector.HeapSnapshotDataGridTree.buildSortComparator):
        Make the sort of the `className` column more general to handle sorting
        by property names, class names, and object identifiers.

        * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get propertyName):
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
        Provide a lazy `propertyName` accessor where we compute it once and stash
        it on the DataGridNode to avoid extra work when resorting.

        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate.propertyName):
        (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate):
        In the initial populated sort, provide the necessary property name property
        the sort comparator expects.

2016-11-29  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Breakpoints button enabled state is too subtle
        https://bugs.webkit.org/show_bug.cgi?id=165153

        Reviewed by Joseph Pecoraro.

        * UserInterface/Images/Breakpoints.svg:
        Change to path so stroke and fill can be styled.

        * UserInterface/Views/DebuggerSidebarPanel.css:
        (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-breakpoints):
        (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-breakpoints.activated):
        Fill and stroke styles for the active and inactive breakpoint button.

2016-11-28  Matt Baker  <mattbaker@apple.com>

        Web Inspector: Debugger should have an option for showing asynchronous call stacks
        https://bugs.webkit.org/show_bug.cgi?id=163230
        <rdar://problem/28698683>

        Reviewed by Joseph Pecoraro.

        * Localizations/en.lproj/localizedStrings.js:
        New string for generic async call stack boundary label: "(async)".

        * UserInterface/Controllers/DebuggerManager.js:
        Create async stack depth setting and set default depth.
        (WebInspector.DebuggerManager.prototype.get asyncStackTraceDepth):
        (WebInspector.DebuggerManager.prototype.set asyncStackTraceDepth):
        Make async stack depth setting accessible to the frontend.
        (WebInspector.DebuggerManager.prototype.initializeTarget):
        Set async stack depth value on the target.
        (WebInspector.DebuggerManager.prototype.debuggerDidPause):
        Plumbing for the async stack trace payload.

        * UserInterface/Models/ConsoleMessage.js:
        (WebInspector.ConsoleMessage):
        Updated for new StackTrace.fromPayload use.

        * UserInterface/Models/DebuggerData.js:
        (WebInspector.DebuggerData):
        (WebInspector.DebuggerData.prototype.get asyncStackTrace):
        (WebInspector.DebuggerData.prototype.updateForPause):
        (WebInspector.DebuggerData.prototype.updateForResume):
        More plumbing.

        * UserInterface/Models/StackTrace.js:
        Update frontend model for use as new protocol object Console.StackTrace,
        which was previously an alias for a simple array of Console.CallFrames.

        (WebInspector.StackTrace):
        (WebInspector.StackTrace.fromPayload):
        (WebInspector.StackTrace.fromString):
        (WebInspector.StackTrace.prototype.get topCallFrameIsBoundary):
        (WebInspector.StackTrace.prototype.get parentStackTrace):

        * UserInterface/Protocol/DebuggerObserver.js:
        (WebInspector.DebuggerObserver.prototype.paused):
        More plumbing.

        * UserInterface/Views/CallFrameTreeElement.css:
        (.tree-outline .item.call-frame.async-boundary):
        Use default cursor since boundary element is not selectable.
        (.tree-outline .item.call-frame.async-boundary .icon):
        (.tree-outline .item.call-frame.async-boundary::before,):
        (.tree-outline .item.call-frame.async-boundary::after):
        (.tree-outline .item.call-frame.async-boundary::before):
        Dimmed text and divider line styles for boundary element.

        * UserInterface/Views/CallFrameTreeElement.js:
        (WebInspector.CallFrameTreeElement):
        Add a flag denoting whether the call frame is an async call trace
        boundary, and set styles accordingly.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        Set async stack trace depth, if supported.
        (WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks):
        Add call frames for async stack traces to the call stack TreeOutline.
        (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
        Ensure that async call frames cannot become the active call frame.

        * UserInterface/Views/Variables.css:
        (:root):
        Add --text-color-gray-medium, for dimmed text in async boundary element.

2016-11-18  Matt Baker  <mattbaker@apple.com>

        Web Inspector: TimelineDataGridNode assertions when refreshing page
        https://bugs.webkit.org/show_bug.cgi?id=162642
        <rdar://problem/28505898>

        Reviewed by Timothy Hatcher.

        This patch fixes a number of deficiencies in the Network tab that caused
        TimelineDataGridNode graphs to refresh before the tab became visible.

        * UserInterface/Views/ElementsTabContentView.js:
        (WebInspector.ElementsTabContentView):
        (WebInspector.ElementsTabContentView.prototype.shown):
        Drive-by fix: defer showing the DOM content view until the tab is shown.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView):
        Drive-by event listener cleanup.
        (WebInspector.NetworkGridContentView.prototype.get startTime):
        (WebInspector.NetworkGridContentView.prototype.get endTime):
        Back endTime with a variable, instead of using the ruler value which
        isn't valid before the tab is shown for the first time.

        (WebInspector.NetworkGridContentView.prototype.shown):
        Force the grid to update its layout, and that of the Timeline column ruler.
        During layout the ruler's secondsPerPixel value is used, which isn't
        valid until the ruler does an initial layout.

        (WebInspector.NetworkGridContentView.prototype.reset):
        Clear pending records. This was causing duplicates to appear when the
        inspected page was refreshed multiple times prior to showing the Network
        tab for the first time.

        (WebInspector.NetworkGridContentView.prototype.layout):
        Should more closely match behavior in NetworkTimelineView.prototype.layout.
        Graph end time padding is added if no longer updating the current time.

        (WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
        Track endTime of the last record added, so that the graph end time can
        be padded once the current time is no longer being updated.

        (WebInspector.NetworkGridContentView.prototype._update):
        (WebInspector.NetworkGridContentView.prototype._stopUpdatingCurrentTime):
        Graph end time padding shouldn't be applied here, since this isn't called
        if the inspected page finishes loading before the view is shown.

        (WebInspector.NetworkGridContentView.prototype._clearNetworkItems): Deleted.
        Replaced by an arrow function.

        * UserInterface/Views/NetworkSidebarPanel.js:
        (WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
        Don't show the content view if the tab is hidden.

2016-11-17  Devin Rousso  <dcrousso+webkit@gmail.com>

        Web Inspector: Shift clicking on named color value only shows its hex form
        https://bugs.webkit.org/show_bug.cgi?id=162758

        Reviewed by Timothy Hatcher.

        * UserInterface/Models/Color.js:
        (WebInspector.Color.prototype.nextFormat):
        Reworked the logic for the formatting order to be the following:
         - Long HEX and Long HEXAlpha
         - RGB and RGBA
         - HSL and HSLA
         - Keyword (if applicable)
         - Short HEX (if applicable)
         - Short HEXAlpha (if applicable)
        It will only show formats with alpha values if the color value has an alpha that is not 1.
        If the alpha is not 1, it will not show formats with non-alpha values.

        The changes to this function have no effect on the context menu items of InlineSwatch
        elements.  The purpose of each of those items is to allow the user to change the format to
        a specified type, whereas WebInspector.Color.prototype.nextFormat is used to cycle through
        all of the relevant formats.

        (WebInspector.Color.prototype._toRGBString):
        (WebInspector.Color.prototype._toRGBAString):
        (WebInspector.Color.prototype._toHSLString):
        (WebInspector.Color.prototype._toHSLAString):
        Unrelated fix of extra decimals when converting from HEX to RGB and HSL.

        * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
        (WebInspector.CSSStyleDeclarationTextEditor._inlineSwatchValueChanged):
        Removed assertion for `_hasActiveInlineSwatchEditor` since the value may change from
        switching the format of a color swatch (Shift-Click).

2016-11-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Background tabs are often updating non-stop because they think they are visible
        https://bugs.webkit.org/show_bug.cgi?id=164841
        <rdar://problem/29298658>

        Reviewed by Matt Baker.

        * UserInterface/Views/NetworkGridContentView.js:
        (WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
        * UserInterface/Views/TimelineRecordingContentView.js:
        (WebInspector.TimelineRecordingContentView.prototype._update):
        Don't constantly update when this tab is not in the foreground.

2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: SourceCodeTextEditor should display execution lines for background threads
        https://bugs.webkit.org/show_bug.cgi?id=164679
        <rdar://problem/29233026>

        Reviewed by Timothy Hatcher.

        There may be multiple threads paused in the same content view. With
        this change we should a thread indicator for each primary line a
        thread is paused on. It uses the same inline line indicator that
        inline errors/warnings (issues) use.

        When there is a single thread (just the Page) we don't show thread
        indicators. But as soon as there are multiple threads we start
        managing and showing them. The line indicator contains the name of
        the thread on the side.

        Note that SourceCodeTextEditor maintains the thread indicators, but
        it still always handles the ActiveCallFrame as it used to, pushing
        values down into TextEditor. The ActiveCallFrame styles override
        the thread line indicators (albeit with the same styles). The reason
        these are still separate is that TextEditor has some special styles
        regarding its gutter for the active execution line. Eventually we
        may want to find a way to push this up into SourceCodeTextEditor.

        * Localizations/en.lproj/localizedStrings.js:
        New string "%d Threads" when multiple threads are on the same line.

        * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
        (WebInspector.ScopeChainDetailsSidebarPanel):
        (WebInspector.ScopeChainDetailsSidebarPanel.prototype._activeCallFrameDidChange):
        Update Watch Expressions when the active call frame changes.

        * UserInterface/Views/SourceCodeTextEditor.css:
        (.source-code.text-editor > .CodeMirror .line-indicator-widget):
        (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline):
        (.source-code.text-editor > .CodeMirror .line-indicator-widget > .arrow):
        (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline > .arrow):
        (.source-code.text-editor > .CodeMirror .line-indicator-widget > .icon):
        (.source-code.text-editor > .CodeMirror .line-indicator-widget > .text):
        (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline > .text):
        Share line indicator widget styles between issue widgets and thread widgets.

        (.source-code.text-editor > .CodeMirror .thread-indicator):
        (.source-code.text-editor > .CodeMirror .thread-widget):
        (.source-code.text-editor > .CodeMirror .thread-widget.inline):
        (.source-code.text-editor > .CodeMirror .thread-widget.inline > .arrow):
        Colors for the thread-widget line-indicators.

        * UserInterface/Views/SourceCodeTextEditor.js:
        (WebInspector.SourceCodeTextEditor):
        (WebInspector.SourceCodeTextEditor.prototype.close):
        New event listeners handling for Target added / removed events.

        (WebInspector.SourceCodeTextEditor.prototype._targetAdded):
        (WebInspector.SourceCodeTextEditor.prototype._targetRemoved):
        Update thread indicators as needed.

        (WebInspector.SourceCodeTextEditor.prototype._looselyMatchesSourceCodeLocation):
        More generic match based just on the URLs. Even if the exact script comes
        from a different target, if they share the same URL that is fine.

        (WebInspector.SourceCodeTextEditor.prototype._callFramesDidChange):
        (WebInspector.SourceCodeTextEditor.prototype._addThreadIndicatorForTarget):
        (WebInspector.SourceCodeTextEditor.prototype._removeThreadIndicatorForTarget):
        (WebInspector.SourceCodeTextEditor.prototype._threadIndicatorWidgetForLine):
        (WebInspector.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
        (WebInspector.SourceCodeTextEditor.prototype._handleThreadIndicatorWidgetClick):
        Manage thread line indicator widgets. There are 3 maps we maintain.

          1. line -> [threads]
              List of threads paused on a line, needed for the UI text.
          2. line -> widget
              Gets the widget on a line so we can modify and eventually remove it.
          3. target -> line
              If a target is removed, we need to know what line it had an indicator on.

        (WebInspector.SourceCodeTextEditor.prototype._isWidgetToggleable):
        Generalize for all of our different line indicator widgets.

        (WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
        (WebInspector.SourceCodeTextEditor.prototype.textEditorUpdatedFormatting):        
        (WebInspector.SourceCodeTextEditor.prototype._reinsertAllThreadIndicators):
        When first populated, or reformatted, clear and reinsert all widgets.

        (WebInspector.SourceCodeTextEditor.prototype._reinsertAllIssues):
        (WebInspector.SourceCodeTextEditor.prototype._logCleared):
        (WebInspector.SourceCodeTextEditor.prototype._clearIssueWidgets): Renamed.
        Rename _clearWidgets to _clearIssueWidgets.

2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused and untested Page.setTouchEmulationEnabled command
        https://bugs.webkit.org/show_bug.cgi?id=164793

        Reviewed by Timothy Hatcher.

        * Localizations/en.lproj/localizedStrings.js:
        Tooltips for new button.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        New global setting.

        * UserInterface/Views/DOMTreeContentView.js:
        (WebInspector.DOMTreeContentView):
        (WebInspector.DOMTreeContentView.prototype.get navigationItems):
        (WebInspector.DOMTreeContentView.prototype._showPrintStylesSettingChanged):
        (WebInspector.DOMTreeContentView.prototype._togglePrintStylesSetting):
        New navigation bar button to toggle print styles.

        * UserInterface/Controllers/CSSStyleManager.js:
        (WebInspector.CSSStyleManager.prototype.mediaTypeChanged):
        After toggling styles we will need to refresh styles, so provide
        a meaningful way to trigger refreshing styles from the frontend.

        * UserInterface/Images/Printer.svg: Added.
        * UserInterface/Images/gtk/Printer.svg: Added.
        New Printer icon for enabling / disabling print styles.

        * UserInterface/Images/gtk/Crosshair.svg:
        * UserInterface/Images/gtk/LayerBorders.svg:
        * UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:
        * UserInterface/Images/gtk/NavigationItemTypes.svg:
        * UserInterface/Images/gtk/PaintFlashing.svg:
        * UserInterface/Images/gtk/ShadowDOM.svg:
        * UserInterface/Images/gtk/ToggleLeftSidebar.svg:
        * UserInterface/Images/gtk/ToggleRightSidebar.svg:
        * UserInterface/Images/gtk/UpDownArrows.svg:
        Fix a number of existing GTK images to have activated styles.

2016-11-15  Nikita Vasilyev  <nvasilyev@apple.com>

        REGRESSION (r208248): Web Inspector: Pressing Left Arrow breaks autocomplete
        https://bugs.webkit.org/show_bug.cgi?id=164391
        <rdar://problem/29102408>

        Reviewed by Matt Baker.

        Unroll r208248.

        * UserInterface/Controllers/CodeMirrorCompletionController.js:
        (WebInspector.CodeMirrorCompletionController):
        (WebInspector.CodeMirrorCompletionController.prototype.updateCompletions):
        (WebInspector.CodeMirrorCompletionController.prototype.isCompletionChange):
        (WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
        (WebInspector.CodeMirrorCompletionController.prototype.close):
        (WebInspector.CodeMirrorCompletionController.prototype.completionSuggestionsSelectedCompletion):
        (WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker):
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
        (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint):
        (WebInspector.CodeMirrorCompletionController.prototype._removeLastChangeFromHistory):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
        (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):
        (WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
        (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):

2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused and untested Page.setTouchEmulationEnabled command
        https://bugs.webkit.org/show_bug.cgi?id=164793

        Reviewed by Matt Baker.

        * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
        * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
        * Versions/Inspector-iOS-10.0.json:
        * Versions/Inspector-iOS-7.0.json:
        * Versions/Inspector-iOS-8.0.json:
        * Versions/Inspector-iOS-9.0.json:
        * Versions/Inspector-iOS-9.3.json:

2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: URL Breakpoints that resolve in multiple workers should only appear in the UI once
        https://bugs.webkit.org/show_bug.cgi?id=164334
        <rdar://problem/29073523>

        Reviewed by Matt Baker.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
        Don't add a duplicate BreakpointTreeElements for the same Breakpoint.

2016-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Worker debugging should pause all targets and view call frames in all targets
        https://bugs.webkit.org/show_bug.cgi?id=164305
        <rdar://problem/29056192>

        Reviewed by Timothy Hatcher.

        This implements a policy where, when one Target ("Thread") pauses
        the frontend triggers a pause in all other Targets. The intended
        user experience is "all threads pause" whenever the frontend shows
        the debugger paused UI.

        DebuggerManager has a few straight forward changes:

            - The paused state reflects if any target is paused.
            - The Paused Event is fired when going from !paused -> paused.
              This means when the first target pauses.
            - The Resumed Event is fired when going from paused -> !paused.
              This means only after all targets have resumed.
            - The CallFrameDidChange Event now includes the Target that updated.

        When a Target first pauses the frontend then immediately pauses all
        other Targets. This puts them into a "pausing" state (we display as
        Idle) and they will pause as soon as they start executing JavaScript.

        When a Target steps the "paused" state isn't changing. So this is
        just a CallFramesDidChange update.

        When clicking Resume we resume all targets. This is will be the normal,
        expected way users resume execution. Note that one of the threads may
        then hit a breakpoint and re-pause all threads.

        Sometimes when multiple threads are paused you may want to run an
        individual thread to completion but keep other threads paused. There
        is a context menu on the ThreadTreeElement to resume just that
        single thread. It will continue and pause for its next run loop.

        * Localizations/en.lproj/localizedStrings.js:
        * UserInterface/Images/Thread.svg: Added.
        * UserInterface/Images/gtk/Thread.svg: Added.
        * UserInterface/Main.html:
        New strings and files.

        * UserInterface/Base/Main.js:
        (WebInspector.loaded):
        * UserInterface/Test/Test.js:
        (WebInspector.loaded):
        Place the TargetManager first since other managers may want to listen
        for TargetAdded / TargetRemoved events.

        * UserInterface/Controllers/DebuggerManager.js:
        (WebInspector.DebuggerManager.prototype.get paused):
        This is now a computed state.

        (WebInspector.DebuggerManager.prototype.pause):
        (WebInspector.DebuggerManager.prototype.resume):
        Affect all targets.

        (WebInspector.DebuggerManager.prototype.stepOver):
        (WebInspector.DebuggerManager.prototype.stepInto):
        (WebInspector.DebuggerManager.prototype.stepOut):
        (WebInspector.DebuggerManager.prototype.reset):
        Update to use the paused computed property.

        (WebInspector.DebuggerManager.prototype.continueUntilNextRunLoop):
        Issue the new Debugger.continueUntilNextRunLoop command
        on a given target.

        (WebInspector.DebuggerManager.prototype.initializeTarget):
        When a new Target is created and we were already paused,
        then start that Worker in a paused state.

        (WebInspector.DebuggerManager.prototype.debuggerDidPause):
        Recover from bad cases where the backend informs the frontend about
        internal JavaScript that it shouldn't know about. Legacy backend do
        this but also there are corner cases we need to handle.
        Dispatch events appropriately now that multiple targets may be paused.

        (WebInspector.DebuggerManager.prototype._didResumeInternal):
        Dispatch events appropriately now that multiple targets may be paused.

        (WebInspector.DebuggerManager.prototype._targetRemoved):
        Remove debugger data for targets that go away to avoid leaks.

        * UserInterface/Models/DebuggerData.js:
        (WebInspector.DebuggerData):
        (WebInspector.DebuggerData.prototype.get paused):
        (WebInspector.DebuggerData.prototype.get pausing):
        Move some more per-Target state into DebuggerData.

        (WebInspector.DebuggerData.prototype.pauseIfNeeded):
        (WebInspector.DebuggerData.prototype.resumeIfNeeded):
        (WebInspector.DebuggerData.prototype.continueUntilNextRunLoop):
        These should only be called by DebuggerManager. They correctly
        update the state of the DebuggerData for this Target, and also
        issue the underlying command to the target.

        (WebInspector.DebuggerData.prototype.updateForPause):
        (WebInspector.DebuggerData.prototype.updateForResume):
        Handle a special case where continueUntilNextRunLoop triggers
        an invisible "pause" on the backend that we should mirror.

        * UserInterface/Protocol/Target.js:
        (WebInspector.MainTarget):
        (WebInspector.MainTarget.prototype.get displayName):
        (WebInspector.MainTarget.prototype.initialize):
        Better display names.

        * UserInterface/Views/DebuggerSidebarPanel.js:
        (WebInspector.DebuggerSidebarPanel):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidResume):
        (WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks):
        (WebInspector.DebuggerSidebarPanel.prototype._selectActiveCallFrameTreeElement):
        (WebInspector.DebuggerSidebarPanel.prototype._showSingleThreadCallStacks):
        (WebInspector.DebuggerSidebarPanel.prototype._showMultipleThreadCallStacks):
        (WebInspector.DebuggerSidebarPanel.prototype._findThreadTreeElementForTarget):
        (WebInspector.DebuggerSidebarPanel.prototype._targetAdded):
        (WebInspector.DebuggerSidebarPanel.prototype._targetRemoved):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
        (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
        The DebuggerSidebar still has a single "Call Stacks" section, but maintains
        two TreeOutlines and only shows one at a time. The Single Thread view shows
        a flat list of the call frames for the Main Target when it is the only target.
        The Multiple Threads view shows a list of Threads and their call frames.
        We always keep both up to date, because we may need to swap between them
        purely as Targets are added / removed. There is a bit of extra logic to
        ensure we select elements properly based only on the visible tree outline.

        * UserInterface/Views/LogContentView.js:
        (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
        When evaluating in a particular target, "runAfterPendingDispatches"
        must wait for all other commands in that particular target to have
        completed. So use the target specific version.

        * UserInterface/Views/NavigationSidebarPanel.js:
        (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
        Gracefully handle a few more TreeElements without a represented object.

        * UserInterface/Views/IdleTreeElement.css: Added.
        (.details-section.call-stack .idle .icon):
        * UserInterface/Views/IdleTreeElement.js: Added.
        (WebInspector.IdleTreeElement):
        Very basic tree element to encapsulate an Idle call frame with an
        empty represented object.

        * UserInterface/Views/ThreadTreeElement.css: Added.
        (.details-section.call-stack .thread .icon):
        * UserInterface/Views/ThreadTreeElement.js: Added.
        (WebInspec